]> ncurses.scripts.mit.edu Git - ncurses.git/commitdiff
ncurses 5.1 v5.1
authorThomas E. Dickey <dickey@invisible-island.net>
Sun, 9 Jul 2000 02:46:08 +0000 (22:46 -0400)
committerThomas E. Dickey <dickey@invisible-island.net>
Sun, 9 Jul 2000 02:46:08 +0000 (22:46 -0400)
523 files changed:
ANNOUNCE
Ada95/Makefile.in
Ada95/gen/Makefile.in
Ada95/gen/gen.c
Ada95/gen/html.m4 [new file with mode: 0644]
Ada95/gen/table.m4 [new file with mode: 0644]
Ada95/gen/terminal_interface-curses-panels.ads.m4
Ada95/gen/terminal_interface-curses.ads.m4
Ada95/html/ada/files.htm [deleted file]
Ada95/html/ada/files/T.htm [deleted file]
Ada95/html/ada/funcs.htm [deleted file]
Ada95/html/ada/funcs/A.htm [deleted file]
Ada95/html/ada/funcs/C.htm [deleted file]
Ada95/html/ada/funcs/E.htm [deleted file]
Ada95/html/ada/funcs/F.htm [deleted file]
Ada95/html/ada/funcs/G.htm [deleted file]
Ada95/html/ada/funcs/I.htm [deleted file]
Ada95/html/ada/funcs/L.htm [deleted file]
Ada95/html/ada/funcs/M.htm [deleted file]
Ada95/html/ada/funcs/N.htm [deleted file]
Ada95/html/ada/funcs/P.htm [deleted file]
Ada95/html/ada/funcs/R.htm [deleted file]
Ada95/html/ada/funcs/S.htm [deleted file]
Ada95/html/ada/funcs/T.htm [deleted file]
Ada95/html/ada/funcs/U.htm [deleted file]
Ada95/html/ada/funcs/V.htm [deleted file]
Ada95/html/ada/index.htm [deleted file]
Ada95/html/ada/main.htm [deleted file]
Ada95/html/ada/terminal_interface-curses-forms-field_types__ads.htm [deleted file]
Ada95/html/ada/terminal_interface-curses-forms__ads.htm [deleted file]
Ada95/html/ada/terminal_interface-curses-menus__ads.htm [deleted file]
Ada95/html/ada/terminal_interface-curses__ads.htm [deleted file]
Ada95/html/man/curs_addch.3x.html [deleted file]
Ada95/html/man/curs_addchstr.3x.html [deleted file]
Ada95/html/man/curs_addstr.3x.html [deleted file]
Ada95/html/man/curs_attr.3x.html [deleted file]
Ada95/html/man/curs_beep.3x.html [deleted file]
Ada95/html/man/curs_bkgd.3x.html [deleted file]
Ada95/html/man/curs_border.3x.html [deleted file]
Ada95/html/man/curs_clear.3x.html [deleted file]
Ada95/html/man/curs_color.3x.html [deleted file]
Ada95/html/man/curs_delch.3x.html [deleted file]
Ada95/html/man/curs_deleteln.3x.html [deleted file]
Ada95/html/man/curs_getch.3x.html [deleted file]
Ada95/html/man/curs_getstr.3x.html [deleted file]
Ada95/html/man/curs_getyx.3x.html [deleted file]
Ada95/html/man/curs_inch.3x.html [deleted file]
Ada95/html/man/curs_inchstr.3x.html [deleted file]
Ada95/html/man/curs_initscr.3x.html [deleted file]
Ada95/html/man/curs_inopts.3x.html [deleted file]
Ada95/html/man/curs_insch.3x.html [deleted file]
Ada95/html/man/curs_insstr.3x.html [deleted file]
Ada95/html/man/curs_instr.3x.html [deleted file]
Ada95/html/man/curs_kernel.3x.html [deleted file]
Ada95/html/man/curs_mouse.3x.html [deleted file]
Ada95/html/man/curs_move.3x.html [deleted file]
Ada95/html/man/curs_outopts.3x.html [deleted file]
Ada95/html/man/curs_overlay.3x.html [deleted file]
Ada95/html/man/curs_pad.3x.html [deleted file]
Ada95/html/man/curs_printw.3x.html [deleted file]
Ada95/html/man/curs_refresh.3x.html [deleted file]
Ada95/html/man/curs_scanw.3x.html [deleted file]
Ada95/html/man/curs_scr_dmp.3x.html [deleted file]
Ada95/html/man/curs_scr_dump.3x.html [deleted file]
Ada95/html/man/curs_scroll.3x.html [deleted file]
Ada95/html/man/curs_slk.3x.html [deleted file]
Ada95/html/man/curs_termattrs.3x.html [deleted file]
Ada95/html/man/curs_termcap.3x.html [deleted file]
Ada95/html/man/curs_terminfo.3x.html [deleted file]
Ada95/html/man/curs_touch.3x.html [deleted file]
Ada95/html/man/curs_util.3x.html [deleted file]
Ada95/html/man/curs_window.3x.html [deleted file]
Ada95/html/man/dft_fgbg.3x.html [deleted file]
Ada95/html/man/form.3x.html [deleted file]
Ada95/html/man/form_field.3x.html [deleted file]
Ada95/html/man/form_field_attributes.3x.html [deleted file]
Ada95/html/man/form_field_buffer.3x.html [deleted file]
Ada95/html/man/form_field_just.3x.html [deleted file]
Ada95/html/man/form_hook.3x.html [deleted file]
Ada95/html/man/form_new.3x.html [deleted file]
Ada95/html/man/form_new_page.3x.html [deleted file]
Ada95/html/man/form_opts.3x.html [deleted file]
Ada95/html/man/form_page.3x.html [deleted file]
Ada95/html/man/form_post.3x.html [deleted file]
Ada95/html/man/menu.3x.html [deleted file]
Ada95/html/man/menu_attribs.3x.html [deleted file]
Ada95/html/man/menu_format.3x.html [deleted file]
Ada95/html/man/menu_hook.3x.html [deleted file]
Ada95/html/man/menu_items.3x.html [deleted file]
Ada95/html/man/menu_mark.3x.html [deleted file]
Ada95/html/man/menu_new.3x.html [deleted file]
Ada95/html/man/menu_pattern.3x.html [deleted file]
Ada95/html/man/menu_post.3x.html [deleted file]
Ada95/html/man/mitem_current.3x.html [deleted file]
Ada95/html/man/mitem_name.3x.html [deleted file]
Ada95/html/man/mitem_opts.3x.html [deleted file]
Ada95/html/man/mitem_value.3x.html [deleted file]
Ada95/html/man/ncurses.3x.html [deleted file]
Ada95/html/man/panel.3x.html [deleted file]
Ada95/html/table.html [deleted file]
Ada95/samples/Makefile.in
Ada95/src/Makefile.in
INSTALL
MANIFEST
NEWS
README.emx
aclocal.m4
announce.html.in
c++/Makefile.in
c++/cursesapp.cc
c++/cursesf.cc
c++/cursesf.h
c++/cursesm.cc
c++/cursesm.h
c++/cursesp.cc
c++/cursesp.h
c++/cursesw.cc
c++/edit_cfg.sh
config.guess
config.sub
configure
configure.in
dist.mk
doc/hackguide.doc [moved from misc/hackguide.doc with 99% similarity]
doc/html/Ada95.html [moved from Ada95/html/index.html with 95% similarity]
doc/html/ada/files.htm [new file with mode: 0644]
doc/html/ada/files/T.htm [new file with mode: 0644]
doc/html/ada/funcs.htm [new file with mode: 0644]
doc/html/ada/funcs/A.htm [new file with mode: 0644]
doc/html/ada/funcs/B.htm [new file with mode: 0644]
doc/html/ada/funcs/C.htm [new file with mode: 0644]
doc/html/ada/funcs/D.htm [new file with mode: 0644]
doc/html/ada/funcs/E.htm [new file with mode: 0644]
doc/html/ada/funcs/F.htm [new file with mode: 0644]
doc/html/ada/funcs/G.htm [new file with mode: 0644]
doc/html/ada/funcs/H.htm [new file with mode: 0644]
doc/html/ada/funcs/I.htm [new file with mode: 0644]
doc/html/ada/funcs/K.htm [new file with mode: 0644]
doc/html/ada/funcs/L.htm [new file with mode: 0644]
doc/html/ada/funcs/M.htm [new file with mode: 0644]
doc/html/ada/funcs/N.htm [new file with mode: 0644]
doc/html/ada/funcs/O.htm [new file with mode: 0644]
doc/html/ada/funcs/P.htm [new file with mode: 0644]
doc/html/ada/funcs/Q.htm [new file with mode: 0644]
doc/html/ada/funcs/R.htm [new file with mode: 0644]
doc/html/ada/funcs/S.htm [new file with mode: 0644]
doc/html/ada/funcs/T.htm [new file with mode: 0644]
doc/html/ada/funcs/U.htm [new file with mode: 0644]
doc/html/ada/funcs/V.htm [new file with mode: 0644]
doc/html/ada/funcs/W.htm [new file with mode: 0644]
doc/html/ada/index.htm [new file with mode: 0644]
doc/html/ada/main.htm [new file with mode: 0644]
doc/html/ada/table.html [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-aux__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-aux__ads.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm with 90% similarity]
doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm with 90% similarity]
doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm with 80% similarity]
doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm with 69% similarity]
doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm with 88% similarity]
doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm with 91% similarity]
doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm with 88% similarity]
doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm with 89% similarity]
doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm with 70% similarity]
doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm with 68% similarity]
doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm with 75% similarity]
doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm with 75% similarity]
doc/html/ada/terminal_interface-curses-forms__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-forms__ads.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm with 71% similarity]
doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm with 75% similarity]
doc/html/ada/terminal_interface-curses-menus__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-menus__ads.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-mouse__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-mouse__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-mouse__ads.htm with 72% similarity]
doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-panels-user_data__ads.htm with 80% similarity]
doc/html/ada/terminal_interface-curses-panels__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-panels__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-panels__ads.htm with 63% similarity]
doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm with 69% similarity]
doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm with 66% similarity]
doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm with 73% similarity]
doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm with 67% similarity]
doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-text_io-float_io__ads.htm with 67% similarity]
doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm with 73% similarity]
doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm with 73% similarity]
doc/html/ada/terminal_interface-curses-text_io__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-text_io__ads.htm [moved from Ada95/html/ada/terminal_interface-curses-text_io__ads.htm with 65% similarity]
doc/html/ada/terminal_interface-curses__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses__ads.htm [new file with mode: 0644]
doc/html/ada/terminal_interface__ads.htm [moved from Ada95/html/ada/terminal_interface__ads.htm with 90% similarity]
doc/html/announce.html [moved from announce.html with 57% similarity]
doc/html/hackguide.html [moved from misc/hackguide.html with 93% similarity]
doc/html/index.html [new file with mode: 0644]
doc/html/man/captoinfo.1m.html [new file with mode: 0644]
doc/html/man/clear.1.html [new file with mode: 0644]
doc/html/man/curs_addch.3x.html [new file with mode: 0644]
doc/html/man/curs_addchstr.3x.html [new file with mode: 0644]
doc/html/man/curs_addstr.3x.html [new file with mode: 0644]
doc/html/man/curs_attr.3x.html [new file with mode: 0644]
doc/html/man/curs_beep.3x.html [new file with mode: 0644]
doc/html/man/curs_bkgd.3x.html [new file with mode: 0644]
doc/html/man/curs_border.3x.html [new file with mode: 0644]
doc/html/man/curs_clear.3x.html [new file with mode: 0644]
doc/html/man/curs_color.3x.html [new file with mode: 0644]
doc/html/man/curs_delch.3x.html [new file with mode: 0644]
doc/html/man/curs_deleteln.3x.html [new file with mode: 0644]
doc/html/man/curs_extend.3x.html [new file with mode: 0644]
doc/html/man/curs_getch.3x.html [new file with mode: 0644]
doc/html/man/curs_getstr.3x.html [new file with mode: 0644]
doc/html/man/curs_getyx.3x.html [new file with mode: 0644]
doc/html/man/curs_inch.3x.html [new file with mode: 0644]
doc/html/man/curs_inchstr.3x.html [new file with mode: 0644]
doc/html/man/curs_initscr.3x.html [new file with mode: 0644]
doc/html/man/curs_inopts.3x.html [new file with mode: 0644]
doc/html/man/curs_insch.3x.html [new file with mode: 0644]
doc/html/man/curs_insstr.3x.html [new file with mode: 0644]
doc/html/man/curs_instr.3x.html [new file with mode: 0644]
doc/html/man/curs_kernel.3x.html [new file with mode: 0644]
doc/html/man/curs_mouse.3x.html [new file with mode: 0644]
doc/html/man/curs_move.3x.html [new file with mode: 0644]
doc/html/man/curs_outopts.3x.html [new file with mode: 0644]
doc/html/man/curs_overlay.3x.html [new file with mode: 0644]
doc/html/man/curs_pad.3x.html [new file with mode: 0644]
doc/html/man/curs_print.3x.html [moved from Ada95/html/man/curs_print.3x.html with 54% similarity]
doc/html/man/curs_printw.3x.html [new file with mode: 0644]
doc/html/man/curs_refresh.3x.html [new file with mode: 0644]
doc/html/man/curs_scanw.3x.html [new file with mode: 0644]
doc/html/man/curs_scr_dump.3x.html [new file with mode: 0644]
doc/html/man/curs_scroll.3x.html [new file with mode: 0644]
doc/html/man/curs_slk.3x.html [new file with mode: 0644]
doc/html/man/curs_termattrs.3x.html [new file with mode: 0644]
doc/html/man/curs_termcap.3x.html [new file with mode: 0644]
doc/html/man/curs_terminfo.3x.html [new file with mode: 0644]
doc/html/man/curs_touch.3x.html [new file with mode: 0644]
doc/html/man/curs_trace.3x.html [new file with mode: 0644]
doc/html/man/curs_util.3x.html [new file with mode: 0644]
doc/html/man/curs_window.3x.html [new file with mode: 0644]
doc/html/man/define_key.3x.html [moved from Ada95/html/man/define_key.3x.html with 72% similarity]
doc/html/man/dft_fgbg.3x.html [new file with mode: 0644]
doc/html/man/form.3x.html [new file with mode: 0644]
doc/html/man/form_cursor.3x.html [moved from Ada95/html/man/form_cursor.3x.html with 50% similarity]
doc/html/man/form_data.3x.html [moved from Ada95/html/man/form_data.3x.html with 52% similarity]
doc/html/man/form_driver.3x.html [moved from Ada95/html/man/form_driver.3x.html with 78% similarity]
doc/html/man/form_field.3x.html [new file with mode: 0644]
doc/html/man/form_field_attributes.3x.html [new file with mode: 0644]
doc/html/man/form_field_buffer.3x.html [new file with mode: 0644]
doc/html/man/form_field_info.3x.html [moved from Ada95/html/man/form_field_info.3x.html with 56% similarity]
doc/html/man/form_field_just.3x.html [new file with mode: 0644]
doc/html/man/form_field_new.3x.html [moved from Ada95/html/man/form_field_new.3x.html with 56% similarity]
doc/html/man/form_field_opts.3x.html [moved from Ada95/html/man/form_field_opts.3x.html with 65% similarity]
doc/html/man/form_field_userptr.3x.html [moved from Ada95/html/man/form_field_userptr.3x.html with 53% similarity]
doc/html/man/form_field_validation.3x.html [moved from Ada95/html/man/form_field_validation.3x.html with 54% similarity]
doc/html/man/form_fieldtype.3x.html [moved from Ada95/html/man/form_fieldtype.3x.html with 61% similarity]
doc/html/man/form_hook.3x.html [new file with mode: 0644]
doc/html/man/form_new.3x.html [new file with mode: 0644]
doc/html/man/form_new_page.3x.html [new file with mode: 0644]
doc/html/man/form_opts.3x.html [new file with mode: 0644]
doc/html/man/form_page.3x.html [new file with mode: 0644]
doc/html/man/form_post.3x.html [new file with mode: 0644]
doc/html/man/form_requestname.3x.html [moved from Ada95/html/man/form_requestname.3x.html with 50% similarity]
doc/html/man/form_userptr.3x.html [moved from Ada95/html/man/form_userptr.3x.html with 54% similarity]
doc/html/man/form_win.3x.html [moved from Ada95/html/man/form_win.3x.html with 54% similarity]
doc/html/man/infocmp.1m.html [new file with mode: 0644]
doc/html/man/infotocap.1m.html [new file with mode: 0644]
doc/html/man/keybound.3x.html [new file with mode: 0644]
doc/html/man/keyok.3x.html [moved from Ada95/html/man/keyok.3x.html with 61% similarity]
doc/html/man/menu.3x.html [new file with mode: 0644]
doc/html/man/menu_attribs.3x.html [new file with mode: 0644]
doc/html/man/menu_cursor.3x.html [moved from Ada95/html/man/menu_cursor.3x.html with 50% similarity]
doc/html/man/menu_driver.3x.html [moved from Ada95/html/man/menu_driver.3x.html with 74% similarity]
doc/html/man/menu_format.3x.html [new file with mode: 0644]
doc/html/man/menu_hook.3x.html [new file with mode: 0644]
doc/html/man/menu_items.3x.html [new file with mode: 0644]
doc/html/man/menu_mark.3x.html [new file with mode: 0644]
doc/html/man/menu_new.3x.html [new file with mode: 0644]
doc/html/man/menu_opts.3x.html [moved from Ada95/html/man/menu_opts.3x.html with 60% similarity]
doc/html/man/menu_pattern.3x.html [new file with mode: 0644]
doc/html/man/menu_post.3x.html [new file with mode: 0644]
doc/html/man/menu_requestname.3x.html [moved from Ada95/html/man/menu_requestname.3x.html with 50% similarity]
doc/html/man/menu_spacing.3x.html [moved from Ada95/html/man/menu_spacing.3x.html with 58% similarity]
doc/html/man/menu_userptr.3x.html [moved from Ada95/html/man/menu_userptr.3x.html with 57% similarity]
doc/html/man/menu_win.3x.html [moved from Ada95/html/man/menu_win.3x.html with 54% similarity]
doc/html/man/mitem_current.3x.html [new file with mode: 0644]
doc/html/man/mitem_name.3x.html [new file with mode: 0644]
doc/html/man/mitem_new.3x.html [moved from Ada95/html/man/mitem_new.3x.html with 52% similarity]
doc/html/man/mitem_opts.3x.html [new file with mode: 0644]
doc/html/man/mitem_userptr.3x.html [moved from Ada95/html/man/mitem_userptr.3x.html with 57% similarity]
doc/html/man/mitem_value.3x.html [new file with mode: 0644]
doc/html/man/mitem_visible.3x.html [moved from Ada95/html/man/mitem_visible.3x.html with 59% similarity]
doc/html/man/ncurses.3x.html [new file with mode: 0644]
doc/html/man/panel.3x.html [new file with mode: 0644]
doc/html/man/resizeterm.3x.html [moved from Ada95/html/man/resizeterm.3x.html with 62% similarity]
doc/html/man/term.5.html [new file with mode: 0644]
doc/html/man/term.7.html [new file with mode: 0644]
doc/html/man/terminfo.5.html [new file with mode: 0644]
doc/html/man/tic.1m.html [new file with mode: 0644]
doc/html/man/toe.1m.html [new file with mode: 0644]
doc/html/man/tput.1.html [new file with mode: 0644]
doc/html/man/tset.1.html [new file with mode: 0644]
doc/html/man/wresize.3x.html [moved from Ada95/html/man/wresize.3x.html with 52% similarity]
doc/html/ncurses-intro.html [moved from misc/ncurses-intro.html with 96% similarity]
doc/ncurses-intro.doc [moved from misc/ncurses-intro.doc with 99% similarity]
form/Makefile.in
form/fty_enum.c
include/Caps
include/MKterm.h.awk.in
include/Makefile.in
include/capdefaults.c
include/curses.h.in
include/nc_alloc.h
include/term_entry.h
include/tic.h
install-sh
man/MKterminfo.sh
man/Makefile.in
man/captoinfo.1m
man/curs_addch.3x
man/curs_addchstr.3x
man/curs_addstr.3x
man/curs_attr.3x
man/curs_bkgd.3x
man/curs_border.3x
man/curs_color.3x
man/curs_delch.3x
man/curs_deleteln.3x
man/curs_extend.3x [new file with mode: 0644]
man/curs_getch.3x
man/curs_getstr.3x
man/curs_inchstr.3x
man/curs_initscr.3x
man/curs_insch.3x
man/curs_insstr.3x
man/curs_instr.3x
man/curs_kernel.3x
man/curs_mouse.3x
man/curs_outopts.3x
man/curs_overlay.3x
man/curs_pad.3x
man/curs_printw.3x
man/curs_refresh.3x
man/curs_scanw.3x
man/curs_scr_dump.3x
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_trace.3x [new file with mode: 0644]
man/curs_window.3x
man/dft_fgbg.3x
man/form_field_info.3x
man/infocmp.1m
man/infotocap.1m [new file with mode: 0644]
man/man_db.renames
man/manlinks.sed [new file with mode: 0644]
man/ncurses.3x
man/terminfo.tail
man/tic.1m
menu/Makefile.in
misc/form.def
misc/indent.pro [new file with mode: 0644]
misc/menu.def
misc/ncurses.def
misc/panel.def
misc/run_tic.sh
misc/shlib
misc/terminfo.src
mk-0th.awk
mk-1st.awk
mk-2nd.awk
mkinstalldirs
ncurses/Makefile.in
ncurses/base/MKunctrl.awk
ncurses/base/lib_addch.c
ncurses/base/lib_addstr.c
ncurses/base/lib_box.c
ncurses/base/lib_clrbot.c
ncurses/base/lib_clreol.c
ncurses/base/lib_color.c
ncurses/base/lib_dft_fgbg.c
ncurses/base/lib_freeall.c
ncurses/base/lib_getch.c
ncurses/base/lib_hline.c
ncurses/base/lib_insstr.c
ncurses/base/lib_mouse.c
ncurses/base/lib_move.c
ncurses/base/lib_newterm.c
ncurses/base/lib_newwin.c
ncurses/base/lib_nl.c
ncurses/base/lib_pad.c
ncurses/base/lib_refresh.c
ncurses/base/lib_scroll.c
ncurses/base/lib_scrreg.c
ncurses/base/lib_set_term.c
ncurses/base/lib_slk.c
ncurses/base/lib_vline.c
ncurses/base/version.c
ncurses/base/wresize.c
ncurses/curses.priv.h
ncurses/llib-lncurses
ncurses/modules
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_parse.c
ncurses/tinfo/comp_scan.c
ncurses/tinfo/free_ttype.c
ncurses/tinfo/init_keytry.c
ncurses/tinfo/lib_acs.c
ncurses/tinfo/lib_cur_term.c
ncurses/tinfo/lib_napms.c
ncurses/tinfo/lib_options.c
ncurses/tinfo/lib_raw.c
ncurses/tinfo/lib_setup.c
ncurses/tinfo/lib_termcap.c
ncurses/tinfo/lib_ti.c
ncurses/tinfo/lib_tputs.c
ncurses/tinfo/make_keys.c
ncurses/tinfo/parse_entry.c
ncurses/tinfo/read_entry.c
ncurses/tinfo/read_termcap.c
ncurses/tinfo/write_entry.c
ncurses/trace/lib_trace.c
ncurses/trace/lib_tracebits.c
ncurses/trace/lib_tracechr.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_update.c
panel/Makefile.in
panel/llib-lpanel
panel/p_bottom.c
panel/p_delete.c
panel/p_hidden.c
panel/p_hide.c
panel/p_move.c
panel/p_new.c
panel/p_replace.c
panel/p_show.c
panel/p_update.c
panel/panel.priv.h
progs/MKtermsort.sh
progs/Makefile.in
progs/dump_entry.c
progs/dump_entry.h
progs/infocmp.c
progs/modules
progs/progs.priv.h
progs/tic.c
progs/toe.c
progs/tput.c
progs/tset.c
shlib-versions [deleted file]
sysdeps/unix/sysv/linux/configure
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/output.c
tack/pad.c
tack/sync.c
tack/sysdep.c
tack/tack.h
test/Makefile.in
test/cardfile.c
test/configure
test/configure.in
test/dots.c
test/filter.c
test/firework.c
test/gdc.c
test/hanoi.c
test/knight.c
test/modules
test/ncurses.c
test/railroad.c [new file with mode: 0644]
test/rain.c
test/tclock.c
test/test.priv.h
test/testcurs.c
test/view.c
test/worm.c
test/xmas.c

index 4707838fba99e43ceae6c99ee42e62d8a320b00e..5ef8f3c2f963c630fadb54c58d3fdbce3be2437e 100644 (file)
--- a/ANNOUNCE
+++ b/ANNOUNCE
 
-                            Announcing ncurses 5.0
-                                       
+                            Announcing ncurses 5.1
+
    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 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),
    tput(1), tset(1), and a termcap conversion tool captoinfo(1). Full
    manual pages are provided for the library and tools.
-   
+
    The ncurses distribution is available via anonymous FTP at the GNU
-   distribution site [1]ftp://ftp.gnu.org/pub/gnu/ncurses. It is also
-   available at [2]ftp://ftp.clark.net/pub/dickey/ncurses.
-   
+   distribution site [1]ftp://ftp.gnu.org/pub/gnu/ncurses.
+   It is also available at [2]ftp://dickey.his.com/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.
-   
+
+   This release is designed to be upward compatible from ncurses 5.0;
+   very few applications will require recompilation, depending on the
+   platform. These are the highlights from the change-log since ncurses
+   5.0 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).
-       
+     * made the extended terminal capabilities
+       (configure --enable-tcap-names) a standard feature (though the
+       configure script can disable it, it is built by default).
+     * removed the trace() function and related trace support from the
+       production library. This is the only interface change that may
+       cause problems with existing applications linked to shared
+       libraries, since not all platforms use the minor version number.
+     * explicitly initialized to zero several data items which were
+       implicitly initialized, e.g., cur_term. If not explicitly
+       initialized, their storage type is C (common), and causes problems
+       linking on some platforms.
+     * modified curses.h.in, undef'ing some symbols to avoid conflict
+       with C++ STL.
+
    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.
-       
+     * added a new extension, assume_default_colors() to provide better
+       control over the use of default colors. This is the principal
+       visible difference between ncurses 5.1 and preceding versions. The
+       new extension allows an application to specify what colors pair 0
+       uses.
+       NOTE: Pair 0 defaults to white on black unless you have invoked
+       use_default_colors() or set it via assume_default_colors(). An
+       application that calls start_colors() without setting the
+       background color will consistently have a black background no
+       matter what color your terminal's background actually is.
+     * made several fixes to the terminfo-to-termcap conversion, and have
+       been using the generated termcaps without further hand-tuning.
+       This builds on the extension use_extended_names() by adding
+       "obsolete" termcap strings to terminfo.src
+          + modified tic so that if extended names (i.e.,
+            configure --enable-tcap-names) are active, then tic -x will
+            also write "obsolete" capabilities that are present in the
+            terminfo source.
+          + added screen's AX capability (for ECMA SGR 39 and 49) to
+            applicable terminfo entries, use presence of this as a check
+            for a small improvement in setting default colors.
+          + add -a option to tic and infocmp, which retains commented-out
+            capabilities during source translation/comparison, e.g.,
+            captoinfo and infotocap.
+     * implemented limited support for UTF-8, useful with XFree86 xterm:
+          + if the configure --enable-widec option is given, append 'w'
+            to names of the generated libraries (e.g., libncursesw.so) to
+            avoid conflict with existing ncurses libraries.
+          + add a simple UTF-8 output driver to the experimental
+            wide-character support. If any of the environment variables
+            LC_ALL, LC_CTYPE or LANG contain the string "UTF-8", this
+            driver will be used to translate the output to UTF-8.
+          + modified view.c to make a rudimentary viewer of UTF-8 text.
+     * modify raw() and noraw() to clear/restore IEXTEN flag which
+       affects stty lnext on systems such as FreeBSD
+     * reordered tests during mouse initialization to allow for gpm to
+       run in xterm, or for xterm to be used under OS/2 EMX. Also dropped
+       test for $DISPLAY in favor of the terminfo capability kmous=\E[M
+       or if $TERM environment variable contains "xterm".
+     * added configure option --with-manpage-symlinks, which provides for
+       fully indexing manpage entries by making symbolic links for the
+       aliases.
+     * changed unctrl() to render C1 characters (128-159) as ~@, ~A, etc.
+     * add experimental configure option --enable-colorfgbg to check for
+       $COLORTERM variable as set by rxvt/aterm/Eterm.
+     * made the infocmp -F option less verbose.
+     * dropped support for gnat 3.10 (gnat 3.12 is current).
+
    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.
-       
+     * modified infocmp -e, -E options to ensure that generated
+       fallback.c type for Booleans agrees with term.h
+     * documented a special case of incompatiblity between ncurses 4.2
+       and 5.0, added a section for this in INSTALL.
+     * corrected tests for file-descriptors in OS/2 EMX mouse support. A
+       negative value could be used by FD_SET, causing the select() call
+       to wait indefinitely.
+     * made 'tput flash' work properly for xterm by flushing output in
+       delay_output() when using napms(), and modifying xterm's terminfo
+       to specify no padding character. Otherwise, xterm's reported baud
+       rate could mislead ncurses into producing too few padding
+       characters.
+     * modified lib_addch.c to allow repeated update to the lower-right
+       corner, rather than displaying only the first character written
+       until the cursor is moved. Recent versions of SVr4 curses can
+       update the lower-right corner, and behave this way.
+     * modified echo() behavior of getch() to match Solaris curses for
+       carriage return and backspace (reported by Neil Zanella).
+     * corrected offsets used for subwindows in wresize()
+     * modified configure script so AC_MSG_ERROR is temporarily defined
+       to a warning in AC_PROG_CXX to make it recover from a missing C++
+       compiler without requiring user to add --without-cxx option
+     * corrected logic in lib_twait.c as used by lib_mouse.c for GPM
+       mouse support when poll() is used rather than select().
+     * made several fixes for buffer overflows, unchecked recursion,
+       improvements in performance, etc. See the NEWS file for details.
+
                               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
      * The utilities have options to allow you to filter terminfo entries
        for use with less capable curses/terminfo versions such as the
        HP/UX and AIX ports.
-       
+
    The ncurses package also has many useful extensions over SVr4:
      * The API is 8-bit clean and base-level conformant with the X/OPEN
        curses specification, XSI curses (that is, it implements all BASE
      * An HTML "Introduction to Programming with NCURSES" document
        provides a narrative introduction to the curses programming
        interface.
-       
+
                              State of the Package
-                                       
+
    Numerous bugs present in earlier versions have been fixed; the library
    is far more reliable than it used to be. Bounds checking in many
    `dangerous' entry points has been improved. The code is now type-safe
    according to gcc -Wall. The library has been checked for malloc leaks
    and arena corruption by the Purify memory-allocation tester.
-   
+
    The ncurses code has been tested with a wide variety of applications
    including (versions starting with those noted):
-   
+
    cdk
-          Curses Development Kit [3]Curses Development Kit
-          [4]ftp://ftp.clark.net/pub/dickey/cdk.
-          
+          Curses Development Kit
+          [3]http://www.vexus.ca/CDK.html
+          [4]http://dickey.his.com/cdk.
+
    ded
-          directory-editor [5]ftp://ftp.clark.net/pub/dickey/ded.
-          
+          directory-editor
+          [5]http://dickey.his.com/ded.
+
    dialog
           the underlying application used in Slackware's setup, and the
           basis for similar applications on GNU/Linux.
-          
+          [6]http://dickey.his.com/dialog.
+
    lynx
           the character-screen WWW browser
-          
+          [7]http://lynx.isc.org/release.
+
    Midnight Commander 4.1
           file manager
-          
+          [8]www.gnome.org/mc/.
+
    mutt
           mail utility
-          
+          [9]http://www.mutt.org.
+
    ncftp
           file-transfer utility
-          
+          [10]http://www.ncftp.com.
+
    nvi
           New vi versions 1.50 are able to use ncurses versions 1.9.7 and
           later.
-          
+          [11]http://www.bostic.com/vi/.
+
    tin
           newsreader, supporting color, MIME
-          [6]ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff.
-          
+          [12]http://www.tin.org.
+
    taper
           tape archive utility
-          
+          [13]http://members.iinet.net.au/~yusuf/taper/.
+
    vh-1.6
           Volks-Hypertext browser for the Jargon File
-          
+          [14]http://www.bg.debian.org/Packages/unstable/text/vh.html.
+
    as well as some that use ncurses for the terminfo support alone:
-   
+
    minicom
           terminal emulator
-          
+          [15]http://www.pp.clinet.fi/~walker/minicom.html.
+
    vile
-          vi-like-emacs [7]ftp://ftp.clark.net/pub/dickey/vile.
-          
+          vi-like-emacs
+          [16]http://dickey.his.com/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 [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
+   The original developers of ncurses are [17]Zeyd Ben-Halim and [18]Eric
+   S. Raymond. Ongoing work is being done by [19]Thomas Dickey and
+   [20]Jürgen Pfeifer. [21]Thomas Dickey acts as the maintainer for the
    Free Software Foundation, which holds the copyright on ncurses.
-   Contact the current maintainers at [13]bug-ncurses@gnu.org.
-   
+   Contact the current maintainers at [22]bug-ncurses@gnu.org.
+
    To join the ncurses mailing list, please write email to
    bug-ncurses-request@gnu.org containing the line:
              subscribe <name>@<host.domain>
 
    This list is open to anyone interested in helping with the development
    and testing of this package.
-   
+
    Beta versions of ncurses and patches to the current release are made
-   available at [14]ftp://ftp.clark.net/pub/dickey/ncurses.
-   
+   available at [23]ftp://dickey.his.com/ncurses.
+
 Future Plans
 
      * Extended-level XPG4 conformance, with internationalization
        support.
      * Ports to more systems, including DOS and Windows.
-       
+
    We need people to help with these projects. If you are interested in
    working on them, please join the ncurses list.
-   
+
 Other Related Resources
 
    The distribution includes and uses a version of the terminfo-format
    terminal description file maintained by Eric Raymond.
-   [15]http://earthspace.net/~esr/terminfo.
-   
+   [24]http://earthspace.net/~esr/terminfo.
+
    You can find lots of information on terminal-related topics not
-   covered in the terminfo file at [16]Richard Shuford's archive.
+   covered in the terminfo file at [25]Richard Shuford's archive.
 
 References
 
    1. ftp://ftp.gnu.org/pub/gnu/ncurses
-   2. ftp://ftp.clark.net/pub/dickey/ncurses
+   2. ftp://dickey.his.com/ncurses
    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
+   4. http://dickey.his.com/cdk/cdk.html
+   5. http://dickey.his.com/ded/ded.html
+   6. http://dickey.his.com/dialog/dialog.html
+   7. http://lynx.isc.org/release/
+   8. file://localhost/usr/build/ncurses/ncurses-5.1-20000704/doc/html/www.gnome.org/mc/
+   9. http://www.mutt.org/
+  10. http://www.ncftp.com/
+  11. http://www.bostic.com/vi/
+  12. http://www.tin.org/
+  13. http://members.iinet.net.au/~yusuf/taper/
+  14. http://www.bg.debian.org/Packages/unstable/text/vh.html
+  15. http://www.pp.clinet.fi/~walker/minicom.html
+  16. http://dickey.his.com/vile/vile.html
+  17. mailto:zmbenhal@netcom.com
+  18. http://www.ccil.org/~esr/home.html
+  19. mailto:dickey@herndon4.his.com
+  20. mailto:juergen.pfeifer@gmx.net
+  21. mailto:dickey@herndon4.his.com
+  22. mailto:bug-ncurses@gnu.org
+  23. ftp://dickey.his.com/ncurses
+  24. http://earthspace.net/~esr/terminfo
+  25. http://www.cs.utk.edu/~shuford/terminal_index.html
index 5ba9feec0bb9643e575c4d16804a9779c64797d0..9f38ec4cb64e2c3619819d691505b750a50aaa43 100644 (file)
@@ -29,7 +29,7 @@
 #  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 #
 #  Version Control
-#  $Revision: 1.12 $
+#  $Revision: 1.13 $
 #
 SHELL          = /bin/sh
 THIS           = Makefile
@@ -40,6 +40,7 @@ CF_MFLAGS     = @cf_cv_makeflags@
 @SET_MAKE@
 
 all \
+libs \
 sources \
 install \
 install.libs \
index 32c660a311cbfcbb8bb2a2dee7e2058b082e621a..cd538fa1712fdc0d176e6672a1d3302e811e0bc1 100644 (file)
@@ -29,7 +29,7 @@
 #  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 #
 #  Version Control
-#  $Revision: 1.27 $
+#  $Revision: 1.30 $
 #
 .SUFFIXES:
 
@@ -72,7 +72,7 @@ LD_FLAGS      = @LD_MODEL@ $(LOCAL_LIBS) @LDFLAGS@ @LIBS@ @LOCAL_LDFLAGS2@ $(LDFLAGS)
 
 RANLIB         = @RANLIB@
 
-LIB_CURSES      = -L../../lib -lncurses
+LIB_CURSES      = -L../../lib -lncurses@LIB_SUFFIX@
 
 M4             = m4
 M4FLAGS                =
@@ -80,6 +80,11 @@ M4FLAGS              =
 GENERATE       = ./gen '@DFT_ARG_SUFFIX@'
 DEL_ADAMODE    = sed -e '/^\-\-\ \ \-\*\-\ ada\ \-\*\-.*/d'
 
+GNATHTML       = `type -p gnathtml || type -p gnathtml.pl`
+GNATHP          = www.gnat.com
+MAIL            = juergen.pfeifer@gmx.net
+HOMEP           = home.t-online.de/home/Juergen.Pfeifer
+
 ################################################################################
 ALIB            = @cf_ada_package@
 ABASE          = $(ALIB)-curses
@@ -144,7 +149,8 @@ GEN_SRC             = $(srcdir)/$(ABASE).ads.m4                             \
                  $(srcdir)/$(ABASE)-panels-user_data.ads.m4
 
 
-all:   $(GEN_TARGETS)
+all \
+libs : $(GEN_TARGETS)
        @
 
 sources:
@@ -349,13 +355,76 @@ mostlyclean ::
        -rm -f $(GEN_FILES5)
 
 clean :: mostlyclean
-       -rm -f $(GEN_TARGETS)
+       -rm -f $(GEN_TARGETS) instab.tmp *.ad[bs] *.html *.ali *.tmp
 
 distclean :: clean
        rm -f Makefile
 
 realclean :: distclean
 
+HTML_DIR = ../../doc/html/ada
+
+instab.tmp : table.m4 $(GEN_SRC)
+       @rm -f $@
+       @for f in $(GEN_SRC) ; do \
+         $(M4) $(M4FLAGS) -DM4MACRO=table.m4 $$f | $(DEL_ADAMODE) >> $@ ;\
+       done;
+
+$(HTML_DIR)/table.html : instab.tmp
+       @-touch $@
+       @-chmod +w $@
+       @echo '<!DOCTYPE HTML'  > $@
+       @echo 'PUBLIC "-//IETF//DTD HTML 3.0//EN">' >> $@
+       @echo '<HTML>' >> $@
+       @echo '<HEAD>' >> $@
+       @echo '<TITLE>Correspondence between ncurses C and Ada functions</TITLE>' >>$@
+       @echo '</HEAD>' >> $@
+       @echo '<BODY>' >> $@
+       @echo '<H1>Correspondence between ncurses C and Ada functions</H1>' >>$@
+       @echo '<H2>Sorted by C function name</H2>' >>$@
+       @echo '<TABLE ALIGN=CENTER BORDER>' >>$@
+       @echo '<TR ALIGN=LEFT>' >>$@
+       @echo '<TH>C name</TH><TH>Ada name</TH><TH>man page</TH></TR>' >>$@
+       @sort < instab.tmp >> $@
+       @echo '</TABLE></BODY></HTML>' >>$@
+       @rm -f instab.tmp
+
+adahtml:
+       @rm -rf $(HTML_DIR)/
+       @mkdir -p $(HTML_DIR)
+       cp -p ../src/*.ad[sb] . && chmod +w *.ad[sb]
+       ln -sf ../src/*.ali .
+       for f in $(GEN_SRC); do \
+          g=`basename $$f .ads.m4` ;\
+          $(M4) $(M4FLAGS) -DM4MACRO=html.m4 $$f | $(DEL_ADAMODE) > $$g.ads ;\
+       done
+       @-rm -f $(HTML_DIR)/$(ALIB)*.htm*
+       $(GNATHTML) -d -f $(ALIB)*.ads
+       for f in html/$(ALIB)*.htm*; do \
+          a=`basename $$f` ; \
+          sed -e 's/You may also.*body.*//' <$$f |\
+          sed -e 's%GNAT%<A HREF="http://$(GNATHP)">GNAT</A>%g' |\
+          sed -e 's%&lt;A HREF%<A HREF%g' |\
+          sed -e 's%"&gt;%">%g' |\
+          sed -e 's/3X/3x/g' |\
+          sed -e 's/$$\([A-Za-z0-9_]*:.*\)\$$/@\1@/' |\
+          sed -e 's%Juergen Pfeifer%<A HREF="http://$(HOMEP)">J\&uuml;rgen Pfeifer</A>%g' |\
+          sed -e 's%$(MAIL)%<A HREF="mailto:$(MAIL)">\&lt;$(MAIL)\&gt;</A>%g' |\
+          sed -e 's%&lt;/A&gt;%</A>%g' > $$a.tmp ;\
+           mv $$a.tmp $$f ;\
+        done
+       @rm -f *.ad[sb] *.ali *.tmp
+       @for f in funcs.htm main.htm ; do \
+         sed -e "\%<A HREF=funcs/ .htm>\[ \]</A>%d" < html/$$f > $$f ;\
+         mv $$f html/$$f ;\
+       done
+       @rm -f "html/funcs/ .htm"
+       @cp -pdrf html/* $(HTML_DIR)/
+       @rm -rf html
+
+html : adahtml $(HTML_DIR)/table.html
+       @
+
 ###############################################################################
 # The remainder of this file is automatically generated during configuration
 ###############################################################################
index 0a093cf8cd7b2bfbfb0125cea644003abd21cde2..3c1800d36d2379b6d310a459301cf1a2dda08c76 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -32,7 +32,7 @@
 
 /*
     Version Control
-    $Revision: 1.29 $
+    $Revision: 1.31 $
   --------------------------------------------------------------------------*/
 /*
   This program generates various record structures and constants from the
@@ -218,50 +218,53 @@ static void gen_mrep_rep(const char *name)
 
 static void gen_attr_set( const char *name )
 {
+  /* All of the A_xxx symbols are defined in ncurses, but not all are nonzero
+   * if "configure --enable-widec" is specified.
+   */
   static const name_attribute_pair nap[] = {
-#ifdef A_STANDOUT
+#if A_STANDOUT
     {"Stand_Out",               A_STANDOUT},
 #endif
-#ifdef A_UNDERLINE
+#if A_UNDERLINE
     {"Under_Line",              A_UNDERLINE},
 #endif
-#ifdef A_REVERSE
+#if A_REVERSE
     {"Reverse_Video",           A_REVERSE},
 #endif
-#ifdef A_BLINK
+#if A_BLINK
     {"Blink",                   A_BLINK},
 #endif
-#ifdef A_DIM
+#if A_DIM
     {"Dim_Character",           A_DIM},
 #endif
-#ifdef A_BOLD
+#if A_BOLD
     {"Bold_Character",          A_BOLD},
 #endif
-#ifdef A_ALTCHARSET
+#if A_ALTCHARSET
     {"Alternate_Character_Set", A_ALTCHARSET},
 #endif
-#ifdef A_INVIS
+#if A_INVIS
     {"Invisible_Character",     A_INVIS},
 #endif
-#ifdef A_PROTECT
+#if A_PROTECT
     {"Protected_Character",     A_PROTECT},
 #endif
-#ifdef A_HORIZONTAL
+#if A_HORIZONTAL
     {"Horizontal",              A_HORIZONTAL},
 #endif
-#ifdef A_LEFT
+#if A_LEFT
     {"Left",                    A_LEFT},
 #endif
-#ifdef A_LOW
+#if A_LOW
     {"Low",                     A_LOW},
 #endif
-#ifdef A_RIGHT
+#if A_RIGHT
     {"Right",                   A_RIGHT},
 #endif
-#ifdef A_TOP
+#if A_TOP
     {"Top",                     A_TOP},
 #endif
-#ifdef A_VERTICAL
+#if A_VERTICAL
     {"Vertical",                A_VERTICAL},
 #endif
     {(char *)0,                 0}
@@ -1048,7 +1051,6 @@ static void gen_color (void)
  */
 static void gen_linkopts (void)
 {
-   printf("   pragma Linker_Options (\"-lAdaCurses%s\");\n", model);
    printf("   pragma Linker_Options (\"-lncurses%s\");\n", model);
 }
 
diff --git a/Ada95/gen/html.m4 b/Ada95/gen/html.m4
new file mode 100644 (file)
index 0000000..0b4254d
--- /dev/null
@@ -0,0 +1,11 @@
+define(`ANCHORIDX',`0')dnl
+define(`MANPAGE',`define(`MANPG',$1)dnl
+|=====================================================================
+   --  | Man page <A HREF="../man/MANPG.html">MANPG</A>
+   --  |=====================================================================')dnl
+define(`ANCHOR',`define(`ANCHORIDX',incr(ANCHORIDX))dnl
+`#'1A NAME="AFU`_'ANCHORIDX"`#'2dnl
+define(`CFUNAME',`$1')define(`AFUNAME',`$2')dnl
+|')
+define(`AKA',``AKA': <A HREF="../man/MANPG.html">CFUNAME</A>')dnl
+define(`ALIAS',``AKA': $1')dnl
diff --git a/Ada95/gen/table.m4 b/Ada95/gen/table.m4
new file mode 100644 (file)
index 0000000..48ed6ce
--- /dev/null
@@ -0,0 +1,6 @@
+define(`ANCHORIDX',`0')dnl
+define(`MANPAGE',`define(`MANPG',$1)')dnl
+divert(-1)dnl
+define(`ANCHOR',`divert(0)define(`ANCHORIDX',incr(ANCHORIDX))dnl
+<TR><TD>$1</TD><TD><A HREF="HTMLNAME`#'AFU`_'ANCHORIDX">$2</A></TD><TD><A HREF="../man/MANPG.html">MANPG</A></TD></TR>
+divert(-1)')
index e309404d12e7b4b3571d530aed124c6b02b2f93a..04e374fceb0a0c15c57110e7bbf6dfba98aa3473 100644 (file)
@@ -38,7 +38,7 @@ include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.14 $
+--  $Revision: 1.15 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with System;
@@ -139,7 +139,7 @@ include(`Linker_Options')
    --  AKA
    pragma Inline (Delete);
 
-   private
+private
       type Panel is new System.Storage_Elements.Integer_Address;
       Null_Panel : constant Panel := 0;
 
index 893bd6cb932fee286c9fae578cd11e0c65e009fa..11930d9709ee10508b6abf60d4d2cfa44712aa39 100644 (file)
@@ -37,7 +37,7 @@ include(M4MACRO)----------------------------------------------------------------
 ------------------------------------------------------------------------------
 --  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.26 $
+--  $Revision: 1.28 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 include(`Base_Defs')
@@ -116,7 +116,7 @@ include(`Color_Defs')
    --  the other for the background
 
 include(`Character_Attribute_Set_Rep')
-   --  (n)curses uses all but the lowes 16 Bits for Attributes.
+   --  (n)curses uses all but the lowest 16 Bits for Attributes.
 
    Normal_Video : constant Character_Attribute_Set := (others => False);
 
@@ -191,7 +191,7 @@ include(`AC_Rep')
    pragma Import (C, ACS_Map, "acs_map");
    --
    --
-   --  Constants for several symbols from the Alternate Character Set
+   --  Constants for several characters from the Alternate Character Set
    --  You must use this constants as indices into the ACS_Map array
    --  to get the corresponding attributed character at runtime.
    --
@@ -272,7 +272,7 @@ include(`ACS_Map')dnl
    procedure Add_With_Immediate_Echo
      (Win : in Window := Standard_Window;
       Ch  : in Character);
-   --  Add a character and do an immediate resfresh of the screen.
+   --  Add a character and do an immediate refresh of the screen.
    pragma Inline (Add_With_Immediate_Echo);
 
    --  MANPAGE(`curs_window.3x')
@@ -471,7 +471,7 @@ include(`ACS_Map')dnl
    pragma Inline (Function_Key);
 
    function Function_Key_Code (Key : Function_Key_Number) return Real_Key_Code;
-   --  Return the key code for a given functionkey number.
+   --  Return the key code for a given function-key number.
    pragma Inline (Function_Key_Code);
 
    --  MANPAGE(`curs_attr.3x')
@@ -608,7 +608,7 @@ include(`ACS_Map')dnl
    --  ANCHOR(`wtimeout()',`Set_Timeout_Mode')
    procedure Set_Timeout_Mode (Win    : in Window := Standard_Window;
                                Mode   : in Timeout_Mode;
-                               Amount : in Natural); --  in Miliseconds
+                               Amount : in Natural); --  in Milliseconds
    --  AKA
    --  Instead of overloading the semantic of the sign of amount, we
    --  introduce the Timeout_Mode parameter. This should improve
@@ -1256,7 +1256,7 @@ include(`ACS_Map')dnl
 
    --  MANPAGE(`curs_color.3x')
 
-   --  ANCHOR(`start_clolor()',`Start_Color')
+   --  ANCHOR(`start_color()',`Start_Color')
    procedure Start_Color;
    --  AKA
    pragma Import (C, Start_Color, "start_color");
@@ -1360,7 +1360,7 @@ include(`ACS_Map')dnl
    pragma Inline (Nap_Milli_Seconds);
 
    --  |=====================================================================
-   --  | Some usefull helpers.
+   --  | Some useful helpers.
    --  |=====================================================================
    type Transform_Direction is (From_Screen, To_Screen);
    procedure Transform_Coordinates
@@ -1369,7 +1369,7 @@ include(`ACS_Map')dnl
       Column : in out Column_Position;
       Dir    : in Transform_Direction := From_Screen);
    --  This procedure transforms screen coordinates into coordinates relative
-   --  to the window and vice versa, depending on the Dir parmeter.
+   --  to the window and vice versa, depending on the Dir parameter.
    --  Screen coordinates are the position informations on the physical device.
    --  An Curses_Exception will be raised if Line and Column are not in the
    --  Window or if you pass the Null_Window as argument.
diff --git a/Ada95/html/ada/files.htm b/Ada95/html/ada/files.htm
deleted file mode 100644 (file)
index 047f9ab..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<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
deleted file mode 100644 (file)
index b6223a0..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<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
deleted file mode 100644 (file)
index 77f7b70..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<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
deleted file mode 100644 (file)
index c276f99..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
deleted file mode 100644 (file)
index 16b475e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
deleted file mode 100644 (file)
index 088d54c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
deleted file mode 100644 (file)
index bf89dbf..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
deleted file mode 100644 (file)
index 9fb627c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
deleted file mode 100644 (file)
index 4830d58..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
deleted file mode 100644 (file)
index a95c86d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
deleted file mode 100644 (file)
index af0cdae..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
deleted file mode 100644 (file)
index 54eb789..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
deleted file mode 100644 (file)
index 88cb447..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
deleted file mode 100644 (file)
index f6e0b21..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
deleted file mode 100644 (file)
index e77c6d1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
deleted file mode 100644 (file)
index 0ee81e0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
deleted file mode 100644 (file)
index 20af351..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
deleted file mode 100644 (file)
index 7c493c8..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
deleted file mode 100644 (file)
index 80af5f9..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<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
deleted file mode 100644 (file)
index 06a05f0..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<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__ads.htm b/Ada95/html/ada/terminal_interface-curses-forms-field_types__ads.htm
deleted file mode 100644 (file)
index 9e086ca..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
-<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__ads.htm b/Ada95/html/ada/terminal_interface-curses-forms__ads.htm
deleted file mode 100644 (file)
index 6390aee..0000000
+++ /dev/null
@@ -1,785 +0,0 @@
-<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__ads.htm b/Ada95/html/ada/terminal_interface-curses-menus__ads.htm
deleted file mode 100644 (file)
index 13256b4..0000000
+++ /dev/null
@@ -1,675 +0,0 @@
-<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__ads.htm b/Ada95/html/ada/terminal_interface-curses__ads.htm
deleted file mode 100644 (file)
index bbdf734..0000000
+++ /dev/null
@@ -1,1743 +0,0 @@
-<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/man/curs_addch.3x.html b/Ada95/html/man/curs_addch.3x.html
deleted file mode 100644 (file)
index 1fc7261..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-<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>
diff --git a/Ada95/html/man/curs_addchstr.3x.html b/Ada95/html/man/curs_addchstr.3x.html
deleted file mode 100644 (file)
index 67f565d..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<HTML>
-<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
-       characters (and attributes) to a <STRONG>curses</STRONG> window
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>int</STRONG> <STRONG>waddchstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr);</STRONG>
-       <STRONG>int</STRONG> <STRONG>waddchnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvaddchstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvaddchnstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwaddchstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG>  <STRONG>x,</STRONG>  <STRONG>const</STRONG>  <STRONG>chtype</STRONG>
-       <STRONG>*chstr);</STRONG>
-       <STRONG>int</STRONG>  <STRONG>mvwaddchnstr(WINDOW</STRONG>  <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG>
-       <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These routines copy <EM>chstr</EM> into the window image  structure
-       at  and  after the current cursor position.  The four rou-
-       tines with <EM>n</EM> as the last argument copy at most <EM>n</EM> elements,
-       but  no  more than will fit on the line.  If <STRONG>n</STRONG>=<STRONG>-1</STRONG> then the
-       whole string is copied, to the maximum number  of  charac-
-       ters that will fit on the line.
-
-       The window cursor is <EM>not</EM> advanced, and these routines work
-       faster than <STRONG>waddnstr</STRONG>.  On the other hand, they don't  per-
-       form  any  kind  of  checking  (such  as  for the newline,
-       backspace, or  carriage  return  characters),  they  don't
-       advance  the  current  cursor  position, they don't expand
-       other control characters to ^-escapes, and  they  truncate
-       the  string  if  it  crosses the right margin, rather then
-       wrapping it around to the new line.
-
-
-
-</PRE>
-<H2>RETURN VALUES</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 all routines except <STRONG>waddchnstr</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       All  these  entry  points  are described in the XSI Curses
-       standard, Issue 4.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>.
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_addstr.3x.html b/Ada95/html/man/curs_addstr.3x.html
deleted file mode 100644 (file)
index 6ca3cc7..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<HTML>
-<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
-       <STRONG>curses</STRONG> window and advance cursor
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>int</STRONG> <STRONG>waddstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
-       <STRONG>int</STRONG> <STRONG>waddnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvaddstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvaddnstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwaddstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwaddnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG>
-       <STRONG>int</STRONG> <STRONG>n);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These  routines  write  the characters of the (null-termi-
-       nated) character string <EM>str</EM> on the given  window.   It  is
-       similar  to  calling <STRONG>waddch</STRONG> once for each character in the
-       string.  The four routines with <EM>n</EM>  as  the  last  argument
-       write  at  most <EM>n</EM> characters.  If <EM>n</EM> is -1, then the entire
-       string will be added.
-
-
-</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.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note  that  all  of  these  routines  except  <STRONG>waddstr</STRONG>  and
-       <STRONG>waddnstr</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       All  these  entry  points  are described in the XSI Curses
-       standard, Issue 4.  The XSI errors EILSEQ  and  EOVERFLOW,
-       associated  with  extended-level  conformance, are not yet
-       detected.
-
-
-</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>.
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_attr.3x.html b/Ada95/html/man/curs_attr.3x.html
deleted file mode 100644 (file)
index 5891268..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>attroff</STRONG>,  <STRONG>wattroff</STRONG>,  <STRONG>attron</STRONG>,  <STRONG>wattron</STRONG>,  <STRONG>attrset</STRONG>, <STRONG>wattrset</STRONG>,
-       <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><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>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>*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>
-<H2>DESCRIPTION</H2><PRE>
-       These routines manipulate the current  attributes  of  the
-       named window.  The current attributes of a window apply to
-       all characters that are written into the window with  <STRONG>wad-</STRONG>
-       <STRONG>dch</STRONG>,  <STRONG>waddstr</STRONG>  and  <STRONG>wprintw</STRONG>.  Attributes are a property of
-       the character, and move with  the  character  through  any
-       scrolling and insert/delete line/character operations.  To
-       the extent possible, they  are  displayed  as  appropriate
-       modifications  to  the graphic rendition of characters put
-       on the screen.
-
-       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
-       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  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
-       <STRONG>stdscr</STRONG>.   It  does not update the cursor and does not per-
-       form wrapping.  A character count of -1  or  greater  than
-       the  remaining window width means to change attributes all
-       the way to the end of the current line.  The <STRONG>wchgat</STRONG>  func-
-       tion generalizes this to any window; the <STRONG>mvwchgat</STRONG> function
-       does a cursor move before acting.  In these functions, the
-       color  argument  is  a  color-pair  index (as in the first
-       argument of  <EM>init</EM><STRONG>_</STRONG><EM>pair</EM>,  see  <STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>).   The  <STRONG>opts</STRONG>
-       argument  is  not  presently used, but is reserved for the
-       future (leave it <STRONG>NULL</STRONG>).
-
-   <STRONG>Attributes</STRONG>
-       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>.
-
-       center ; l l .  <STRONG>A_NORMAL</STRONG>  Normal  display  (no  highlight)
-       <STRONG>A_STANDOUT</STRONG>     Best  highlighting  mode  of  the terminal.
-       <STRONG>A_UNDERLINE</STRONG>    Underlining     <STRONG>A_REVERSE</STRONG> Reverse     video
-       <STRONG>A_BLINK</STRONG>   Blinking  <STRONG>A_DIM</STRONG>     Half  bright <STRONG>A_BOLD</STRONG>    Extra
-       bright or bold <STRONG>A_PROTECT</STRONG> Protected mode  <STRONG>A_INVIS</STRONG>   Invisi-
-       ble  or  blank mode <STRONG>A_ALTCHARSET</STRONG>   Alternate character set
-       <STRONG>A_CHARTEXT</STRONG>     Bit-mask    to    extract    a    character
-       <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG>  Color-pair number <EM>n</EM>
-
-       The following macro is the reverse of <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG>:
-
-       <STRONG>PAIR_NUMBER(</STRONG><EM>attrs</EM>) Returns the pair number associated
-                          with the <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG> attribute.
-
-       The  return values of many of these routines are not mean-
-       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>.
-       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.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       All  these functions are supported in the XSI Curses stan-
-       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
-       implementation  as  well  as  SVr4 curses, these functions
-       correctly manipulate all other  highlights  (specifically,
-       <STRONG>A_ALTCHARSET</STRONG>, <STRONG>A_PROTECT</STRONG>, and <STRONG>A_INVIS</STRONG>).
-
-       XSI  Curses added the new entry points, <STRONG>attr_get</STRONG>, <STRONG>attr_on</STRONG>,
-       <STRONG>attr_off</STRONG>,  <STRONG>attr_set</STRONG>,   <STRONG>wattr_on</STRONG>,   <STRONG>wattr_off</STRONG>,   <STRONG>wattr_get</STRONG>,
-       <STRONG>wattr_set</STRONG>.   These  are intended to work with a new series
-       of highlight macros prefixed with <STRONG>WA_</STRONG>.
-
-       center ; l l .  <STRONG>WA_NORMAL</STRONG> Normal  display  (no  highlight)
-       <STRONG>WA_STANDOUT</STRONG>    Best  highlighting  mode  of  the terminal.
-       <STRONG>WA_UNDERLINE</STRONG>   Underlining  <STRONG>WA_REVERSE</STRONG>     Reverse   video
-       <STRONG>WA_BLINK</STRONG>  Blinking  <STRONG>WA_DIM</STRONG>    Half  bright <STRONG>WA_BOLD</STRONG>   Extra
-       bright or bold <STRONG>WA_ALTCHARSET</STRONG>  Alternate character set
-
-       The XSI curses standard specifies that each pair of corre-
-       sponding  <STRONG>A_</STRONG>  and <STRONG>WA_</STRONG>-using functions operates on the same
-       current-highlight information.
-
-       The XSI standard extended conformance level adds new high-
-       lights <STRONG>A_HORIZONTAL</STRONG>, <STRONG>A_LEFT</STRONG>, <STRONG>A_LOW</STRONG>, <STRONG>A_RIGHT</STRONG>, <STRONG>A_TOP</STRONG>, <STRONG>A_VER-</STRONG>
-       <STRONG>TICAL</STRONG> (and corresponding <STRONG>WA_</STRONG> macros for each)  which  this
-       curses does not yet support.
-
-
-</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_addstr.3x.html">curs_addstr(3X)</A></STRONG>,
-       <STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_beep.3x.html b/Ada95/html/man/curs_beep.3x.html
deleted file mode 100644 (file)
index 930780a..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<HTML>
-<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><curses.h></STRONG>
-
-       <STRONG>int</STRONG> <STRONG>beep(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>flash(void);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The <STRONG>beep</STRONG> and <STRONG>flash</STRONG> routines are used to alert the terminal
-       user.  The routine <STRONG>beep</STRONG> sounds an  audible  alarm  on  the
-       terminal,  if  possible;  otherwise  it flashes the screen
-       (visible bell).  The routine <STRONG>flash</STRONG> flashes the screen, and
-       if  that  is  not  possible, sounds the alert.  If neither
-       alert is possible, nothing happens.  Nearly all  terminals
-       have  an  audible  alert (bell or beep), but only some can
-       flash the screen.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       These routines return <STRONG>OK</STRONG> if they  succeed  in  beeping  or
-       flashing, <STRONG>ERR</STRONG> otherwise.
-
-
-</PRE>
-<H2>EXTENSIONS</H2><PRE>
-       SVr4's  beep  and flash routines always returned <STRONG>OK</STRONG>, so it
-       was not possible to tell when the beep or flash failed.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These functions are defined in the  XSI  Curses  standard,
-       Issue  4.  Like SVr4, it specifies that they always return
-       <STRONG>OK</STRONG>.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_bkgd.3x.html b/Ada95/html/man/curs_bkgd.3x.html
deleted file mode 100644 (file)
index f84ee44..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>bkgdset</STRONG>,  <STRONG>wbkgdset</STRONG>, <STRONG>bkgd</STRONG>, <STRONG>wbkgd</STRONG> - <STRONG>curses</STRONG> window background
-       manipulation routines
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>int</STRONG> <STRONG>bkgd(const</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wbkgd(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>chtype</STRONG> <STRONG>getbkgd(WINDOW</STRONG> <STRONG>*win);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The <STRONG>bkgdset</STRONG> and <STRONG>wbkgdset</STRONG>  routines  manipulate  the  back-
-       ground  of  the  named window.  The window background is a
-       <STRONG>chtype</STRONG> consisting of any combination of attributes  (i.e.,
-       rendition)  and  a  character.   The attribute part of the
-       background is combined (OR'ed) with all non-blank  charac-
-       ters  that  are written into the window with <STRONG>waddch</STRONG>.  Both
-       the character and attribute parts of  the  background  are
-       combined   with  the  blank  characters.   The  background
-       becomes a property of the character  and  moves  with  the
-       character   through   any   scrolling   and  insert/delete
-       line/character operations.
-
-       To the extent  possible  on  a  particular  terminal,  the
-       attribute  part  of  the  background  is  displayed as the
-       graphic rendition of the character put on the screen.
-
-       The <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> functions set the  background  property
-       of  the  current  or  specified window and then apply this
-       setting to every character position in that window:
-
-              The rendition of every character on the  screen  is
-              changed to the new background rendition.
-
-              Wherever  the  former background character appears,
-              it is changed to the new background character.
-
-       The <STRONG>getbkgd</STRONG> function returns the  given  window's  current
-       background character/attribute pair.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The  routines  <STRONG>bkgd</STRONG>  and <STRONG>wbkgd</STRONG> return the integer <STRONG>OK</STRONG>.  The
-       SVr4.0 manual says "or a non-negative integer  if  <STRONG>immedok</STRONG>
-       is set", but this appears to be an error.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that <STRONG>bkgdset</STRONG> and <STRONG>bkgd</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  functions are described in the XSI Curses standard,
-       return <STRONG>ERR</STRONG>, on failure. but gives no failure conditions.
-
-
-</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_outopts.3x.html">curs_outopts(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_border.3x.html b/Ada95/html/man/curs_border.3x.html
deleted file mode 100644 (file)
index dd4c0ca..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-<HTML>
-<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
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-          <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>box(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>verch,</STRONG> <STRONG>chtype</STRONG> <STRONG>horch);</STRONG>
-       <STRONG>int</STRONG> <STRONG>hline(chtype</STRONG> <STRONG>ch,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>whline(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>vline(chtype</STRONG> <STRONG>ch,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wvline(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>mvhline(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>mvwhline(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvvline(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwvline(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The <STRONG>border</STRONG>, <STRONG>wborder</STRONG> and <STRONG>box</STRONG> routines draw a box around the
-       edges  of  a  window.   The argument <EM>ls</EM> is a character and
-       attributes used for the left side  of  the  border,  <EM>rs</EM>  -
-       right  side,  <EM>ts</EM>  -  top  side, <EM>bs</EM> - bottom side, <EM>tl</EM> - top
-       left-hand corner, <EM>tr</EM> - top right-hand corner, <EM>bl</EM> -  bottom
-       left-hand  corner,  and <EM>br</EM> - bottom right-hand corner.  If
-       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_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>
-       <STRONG>0)</STRONG>.
-
-       The  <STRONG>hline</STRONG> and <STRONG>whline</STRONG> functions draw a horizontal (left to
-       right) line using <EM>ch</EM> starting at the current cursor  posi-
-       tion  in  the  window.  The current cursor position is not
-       changed.  The line is at most <EM>n</EM>  characters  long,  or  as
-       many as fit into the window.
-
-       The  <STRONG>vline</STRONG>  and  <STRONG>wvline</STRONG>  functions draw a vertical (top to
-       bottom) line using <EM>ch</EM> starting at the current cursor posi-
-       tion  in  the  window.  The current cursor position is not
-       changed.  The line is at most <EM>n</EM>  characters  long,  or  as
-       many as fit into the window.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All  routines  return  the  integer <STRONG>OK</STRONG>.  The SVr4.0 manual
-       says "or a non-negative integer if <STRONG>immedok</STRONG>  is  set",  but
-       this appears to be an error.
-       The  borders  generated by these functions are <EM>inside</EM> bor-
-       ders (this is also true of SVr4 curses, though the fact is
-       not documented).
-
-       Note that <STRONG>border</STRONG> and <STRONG>box</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  functions are described in the XSI Curses standard,
-       Issue 4.  Additional functions <STRONG>mvhline</STRONG>, <STRONG>mvvline</STRONG>, <STRONG>mvwhline</STRONG>,
-       and <STRONG>mvwvline</STRONG> are described there which this implementation
-       does not yet support.  The standard  specifies  that  they
-       return  <STRONG>ERR</STRONG> on failure, but specifies no error conditions.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_clear.3x.html b/Ada95/html/man/curs_clear.3x.html
deleted file mode 100644 (file)
index be7651b..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<HTML>
-<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
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>int</STRONG> <STRONG>clear(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wclear(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>int</STRONG> <STRONG>clrtobot(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wclrtobot(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>int</STRONG> <STRONG>clrtoeol(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wclrtoeol(WINDOW</STRONG> <STRONG>*win);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The <STRONG>erase</STRONG> and <STRONG>werase</STRONG> routines copy blanks to  every  posi-
-       tion in the window, clearing the screen.
-
-       The  <STRONG>clear</STRONG>  and <STRONG>wclear</STRONG> routines are like <STRONG>erase</STRONG> and <STRONG>werase</STRONG>,
-       but they also call <STRONG>clearok</STRONG>, so that the screen is  cleared
-       completely  on  the  next call to <STRONG>wrefresh</STRONG> for that window
-       and repainted from scratch.
-
-       The <STRONG>clrtobot</STRONG> and <STRONG>wclrtobot</STRONG> routines erase from the  cursor
-       to the end of screen.  That is, they erase all lines below
-       the cursor in the window.  Also, the current line  to  the
-       right of the cursor, inclusive, is erased.
-
-       The <STRONG>clrtoeol</STRONG> and <STRONG>wclrtoeol</STRONG> routines erase the current line
-       to the right of the cursor, inclusive, to the end  of  the
-       current line.
-
-       Blanks created by erasure have the current background ren-
-       dition (as set by <STRONG>wbkgdset</STRONG>) merged into them.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All routines return the integer  <STRONG>OK</STRONG>.   The  SVr4.0  manual
-       says  "or  a  non-negative integer if <STRONG>immedok</STRONG> is set", but
-       this appears to be an error.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that <STRONG>erase</STRONG>, <STRONG>werase</STRONG>, <STRONG>clear</STRONG>, <STRONG>wclear</STRONG>, <STRONG>clrtobot</STRONG>, and <STRONG>clr-</STRONG>
-       <STRONG>toeol</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  functions are described in the XSI Curses standard,
-       Issue 4.  The standard specifies that they return  <STRONG>ERR</STRONG>  on
-       failure, but specifies no error conditions.
-
-       Some  historic  curses  implementations had, as an undocu-
-       mented feature,  the  ability  to  do  the  equivalent  of
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(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>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_color.3x.html b/Ada95/html/man/curs_color.3x.html
deleted file mode 100644 (file)
index a360965..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-<HTML>
-<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>
-       color manipulation routines
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>bool</STRONG> <STRONG>has_colors(void);</STRONG>
-       <STRONG>bool</STRONG> <STRONG>can_change_color(void);</STRONG>
-       <STRONG>int</STRONG>  <STRONG>color_content(short</STRONG>  <STRONG>color,</STRONG> <STRONG>short</STRONG> <STRONG>*r,</STRONG> <STRONG>short</STRONG> <STRONG>*g,</STRONG> <STRONG>short</STRONG>
-       <STRONG>*b);</STRONG>
-       <STRONG>int</STRONG> <STRONG>pair_content(short</STRONG> <STRONG>pair,</STRONG> <STRONG>short</STRONG> <STRONG>*f,</STRONG> <STRONG>short</STRONG> <STRONG>*b);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-   <STRONG>Overview</STRONG>
-       <STRONG>curses</STRONG> support color attributes  on  terminals  with  that
-       capability.   To  use  these  routines <STRONG>start_color</STRONG> must be
-       called, usually right after <STRONG>initscr</STRONG>.   Colors  are  always
-       used  in pairs (referred to as color-pairs).  A color-pair
-       consists of a foreground  color  (for  characters)  and  a
-       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><curses.h></STRONG>,
-       can be used as a new video attribute.
-
-       If  a  terminal  is capable of redefining colors, the pro-
-       grammer can use the routine <STRONG>init_color</STRONG> to change the defi-
-       nition   of   a   color.    The  routines  <STRONG>has_colors</STRONG>  and
-       <STRONG>can_change_color</STRONG>  return  <STRONG>TRUE</STRONG>  or  <STRONG>FALSE</STRONG>,  depending   on
-       whether  the  terminal  has color capabilities and whether
-       the  programmer  can  change  the  colors.   The   routine
-       <STRONG>color_content</STRONG>  allows  a programmer to extract the amounts
-       of red, green,  and  blue  components  in  an  initialized
-       color.   The  routine  <STRONG>pair_content</STRONG> allows a programmer to
-       find out how a given color-pair is currently defined.
-
-   <STRONG>Routine</STRONG> <STRONG>Descriptions</STRONG>
-       The <STRONG>start_color</STRONG> routine requires no arguments.  It must be
-       called  if  the programmer wants to use colors, and before
-       any other color manipulation routine  is  called.   It  is
-       good  practice  to  call this routine right after <STRONG>initscr</STRONG>.
-       <STRONG>start_color</STRONG> initializes eight basic  colors  (black,  red,
-       green,  yellow,  blue,  magenta, cyan, and white), and two
-       global variables,  <STRONG>COLORS</STRONG>  and  <STRONG>COLOR_PAIRS</STRONG>  (respectively
-       defining  the maximum number of colors and color-pairs the
-       terminal can support).  It also restores the colors on the
-       terminal to the values they had when the terminal was just
-       turned on.
-
-       pair to be changed, the foreground color number,  and  the
-       background  color number.  The value of the first argument
-       must be between <STRONG>1</STRONG> and <STRONG>COLOR_PAIRS-1</STRONG>.   The  value  of  the
-       second  and  third  arguments must be between 0 and <STRONG>COLORS</STRONG>
-       (the 0 color pair is wired to white on black and cannot be
-       changed).   If  the color-pair was previously initialized,
-       the screen is refreshed and all occurrences of that color-
-       pair is changed to the new definition.
-
-       The  <STRONG>init_color</STRONG> routine changes the definition of a color.
-       It takes four arguments: the number of  the  color  to  be
-       changed  followed  by three RGB values (for the amounts of
-       red, green, and blue components).  The value of the  first
-       argument  must  be between <STRONG>0</STRONG> and <STRONG>COLORS</STRONG>.  (See the section
-       <STRONG>Colors</STRONG> for the default color index.)   Each  of  the  last
-       three  arguments must be a value between 0 and 1000.  When
-       <STRONG>init_color</STRONG> is used, all occurrences of that color  on  the
-       screen immediately change to the new definition.
-
-       The  <STRONG>has_colors</STRONG> routine requires no arguments.  It returns
-       <STRONG>TRUE</STRONG> if the terminal can manipulate colors; otherwise,  it
-       returns <STRONG>FALSE</STRONG>.  This routine facilitates writing terminal-
-       independent programs.  For example, a programmer  can  use
-       it  to  decide  whether  to  use color or some other video
-       attribute.
-
-       The <STRONG>can_change_color</STRONG> routine requires  no  arguments.   It
-       returns  <STRONG>TRUE</STRONG>  if  the  terminal  supports  colors and can
-       change their definitions; other, it returns  <STRONG>FALSE</STRONG>.   This
-       routine facilitates writing terminal-independent programs.
-
-       The <STRONG>color_content</STRONG> routine gives programmers a way to  find
-       the intensity of the red, green, and blue (RGB) components
-       in a color.  It requires four arguments: the color number,
-       and  three addresses of <STRONG>short</STRONG>s for storing the information
-       about the amounts of red, green, and  blue  components  in
-       the  given color.  The value of the first argument must be
-       between 0 and <STRONG>COLORS</STRONG>.  The values that are stored  at  the
-       addresses  pointed  to  by  the  last  three arguments are
-       between 0 (no component) and 1000 (maximum amount of  com-
-       ponent).
-
-       The  <STRONG>pair_content</STRONG>  routine  allows programmers to find out
-       what colors a given color-pair consists of.   It  requires
-       three  arguments: the color-pair number, and two addresses
-       of <STRONG>short</STRONG>s for storing the foreground  and  the  background
-       color  numbers.   The  value of the first argument must be
-       between 1 and <STRONG>COLOR_PAIRS-1</STRONG>.  The values that  are  stored
-       at  the addresses pointed to by the second and third argu-
-       ments are between 0 and <STRONG>COLORS</STRONG>.
-
-   <STRONG>Colors</STRONG>
-       is the default background color for all terminals.
-
-             <STRONG>COLOR_BLACK</STRONG>
-             <STRONG>COLOR_RED</STRONG>
-             <STRONG>COLOR_GREEN</STRONG>
-             <STRONG>COLOR_YELLOW</STRONG>
-             <STRONG>COLOR_BLUE</STRONG>
-             <STRONG>COLOR_MAGENTA</STRONG>
-             <STRONG>COLOR_CYAN</STRONG>
-             <STRONG>COLOR_WHITE</STRONG>
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The routines <STRONG>can_change_color()</STRONG>  and  <STRONG>has_colors()</STRONG>  return
-       <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>.
-
-       All other routines return the integer <STRONG>ERR</STRONG> upon failure and
-       an <STRONG>OK</STRONG> (SVr4 specifies only "an integer  value  other  than
-       <STRONG>ERR</STRONG>") upon successful completion.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       In  the  <EM>ncurses</EM> implementation, there is a separate color
-       activation flag, color palette,  color  pairs  table,  and
-       associated  COLORS and COLOR_PAIRS counts for each screen;
-       the <STRONG>start_color</STRONG> function only affects the current  screen.
-       The SVr4/XSI interface is not really designed with this in
-       mind, and historical  implementations  may  use  a  single
-       shared color palette.
-
-       Note that setting an implicit background color via a color
-       pair affects only character cells that a  character  write
-       operation  explicitly  touches.   To change the background
-       color used when parts of a window are blanked  by  erasing
-       or scrolling operations, see <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3X)</A></STRONG>.
-
-       Several  caveats  apply  on 386 and 486 machines with VGA-
-       compatible graphics:
-
-       COLOR_YELLOW  is  actually  brown.   To  get  yellow,  use
-       COLOR_YELLOW combined with the <STRONG>A_BOLD</STRONG> attribute.
-
-       The  A_BLINK  attribute  should  in theory cause the back-
-       ground to go bright.  This often fails to work,  and  even
-       some cards for which it mostly works (such as the Paradise
-       and compatibles) do the wrong thing when you try to set  a
-       bright  "yellow"  background  (you  get  a blinking yellow
-       foreground instead).
-
-       Color RGB values are not settable.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       This implementation satisfies XSI Curses's  minimum  maxi-
-       mums for <STRONG>COLORS</STRONG> and <STRONG>COLOR_PAIRS</STRONG>.
-       ground   and   background    color    to    support    the
-       <STRONG>use_default_colors</STRONG> extension, but only if that routine has
-       been first invoked.
-
-
-</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_attr.3x.html">curs_attr(3X)</A></STRONG>, <STRONG><A HREF="dft_fgbg.3x.html">dft_fgbg(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_delch.3x.html b/Ada95/html/man/curs_delch.3x.html
deleted file mode 100644 (file)
index 38b9946..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<HTML>
-<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
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
-       <STRONG>int</STRONG> <STRONG>delch(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wdelch(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvdelch(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwdelch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These routines delete the character under the cursor;  all
-       characters to the right of the cursor on the same line are
-       moved to the left one position and the last  character  on
-       the line is filled with a blank.  The cursor position does
-       not change (after moving to <EM>y</EM>, <EM>x</EM>,  if  specified).   (This
-       does  not  imply use of the hardware delete character fea-
-       ture.)
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG>
-       (SVr4  specifies  only  "an integer value other than <STRONG>ERR</STRONG>")
-       upon successful completion.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that <STRONG>delch</STRONG>, <STRONG>mvdelch</STRONG>, and <STRONG>mvwdelch</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These functions are described in the XSI Curses  standard,
-       Issue  4.   The standard specifies that they return <STRONG>ERR</STRONG> on
-       failure, but specifies no error conditions.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_deleteln.3x.html b/Ada95/html/man/curs_deleteln.3x.html
deleted file mode 100644 (file)
index f177ee2..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<HTML>
-<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
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
-       <STRONG>int</STRONG> <STRONG>deleteln(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wdeleteln(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>int</STRONG> <STRONG>insdelln(int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>winsdelln(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>insertln(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>winsertln(WINDOW</STRONG> <STRONG>*win);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The <STRONG>deleteln</STRONG> and <STRONG>wdeleteln</STRONG> routines delete the line  under
-       the cursor in the window; all lines below the current line
-       are moved up one line.  The bottom line of the  window  is
-       cleared.  The cursor position does not change.
-
-       The  <STRONG>insdelln</STRONG>  and  <STRONG>winsdelln</STRONG>  routines,  for  positive <EM>n</EM>,
-       insert <EM>n</EM> lines into the specified window above the current
-       line.   The  <EM>n</EM>  bottom  lines  are  lost.  For negative <EM>n</EM>,
-       delete <EM>n</EM> lines (starting with the one under  the  cursor),
-       and  move  the remaining lines up.  The bottom <EM>n</EM> lines are
-       cleared.  The current cursor position remains the same.
-
-       The <STRONG>insertln</STRONG> and <STRONG>insertln</STRONG> routines, insert  a  blank  line
-       above the current line and the bottom line is lost.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG>
-       (SVr4 specifies only "an integer value  other  than  <STRONG>ERR</STRONG>")
-       upon successful completion.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  functions are described in the XSI Curses standard,
-       Issue 4.  The standard specifies that they return  <STRONG>ERR</STRONG>  on
-       failure, but specifies no error conditions.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       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
-       hardware  line  delete/insert  unless <STRONG>idlok(...,</STRONG> <STRONG>TRUE)</STRONG> has
-       been set on the current window.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_getch.3x.html b/Ada95/html/man/curs_getch.3x.html
deleted file mode 100644 (file)
index 376dd59..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-<HTML>
-<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
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
-       <STRONG>int</STRONG> <STRONG>getch(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wgetch(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvgetch(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwgetch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-       <STRONG>int</STRONG> <STRONG>ungetch(int</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>int</STRONG> <STRONG>has_key(int</STRONG> <STRONG>ch);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG> and <STRONG>mvwgetch</STRONG>, routines  read  a
-       character  from the window.  In no-delay mode, if no input
-       is waiting, the value <STRONG>ERR</STRONG> is returned.  In delay mode, the
-       program  waits until the system passes text through to the
-       program.  Depending on the  setting  of  <STRONG>cbreak</STRONG>,  this  is
-       after one character (cbreak mode), or after the first new-
-       line (nocbreak mode).  In  half-delay  mode,  the  program
-       waits  until a character is typed or the specified timeout
-       has been reached.
-
-       If <STRONG>noecho</STRONG> has been set, then the character  will  also  be
-       echoed into the designated window according to the follow-
-       ing rules: If the character is the current  erase  charac-
-       ter,  left  arrow,  or  backspace, the cursor is moved one
-       space to the left and that screen position is erased as if
-       <STRONG>delch</STRONG>  had  been  called.   If  the character value is any
-       other <STRONG>KEY_</STRONG> define, the user is alerted with a  <STRONG>beep</STRONG>  call.
-       Otherwise the character is simply output to the screen.
-
-       If the window is not a pad, and it has been moved or modi-
-       fied since the last call to  <STRONG>wrefresh</STRONG>,  <STRONG>wrefresh</STRONG>  will  be
-       called before another character is read.
-
-       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><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.
-
-       When a character that could be the beginning of a function
-       key is received (which,  on  modern  terminals,  means  an
-       escape  character), <STRONG>curses</STRONG> sets a timer.  If the remainder
-       of the sequence does not come  in  within  the  designated
-       time,  the  character  is  passed  through; otherwise, the
-       function key value is returned.   For  this  reason,  many
-       terminals  experience  a  delay  between  the  time a user
-
-       The <STRONG>ungetch</STRONG> routine places <EM>ch</EM> back onto the input queue to
-       be returned by the next call to <STRONG>wgetch</STRONG>.  Note  that  there
-       is, in effect, just one input queue for all windows.
-
-
-   <STRONG>Function</STRONG> <STRONG>Keys</STRONG>
-       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.
-
-       center tab(/) ; l l l l .  <EM>Name</EM>/<EM>Key</EM> <EM>name</EM>
-
-       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 <= <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
-       line KEY_SF/Scroll 1 line  forward  KEY_SR/Scroll  1  line
-       backward  (reverse) KEY_NPAGE/Next page KEY_PPAGE/Previous
-       page KEY_STAB/Set tab KEY_CTAB/Clear  tab  KEY_CATAB/Clear
-       all tabs KEY_ENTER/Enter or send KEY_SRESET/Soft (partial)
-       reset KEY_RESET/Reset or  hard  reset  KEY_PRINT/Print  or
-       copy    KEY_LL/Home   down   or   bottom   (lower   left).
-       KEY_A1/Upper left of keypad KEY_A3/Upper right  of  keypad
-       KEY_B2/Center   of  keypad  KEY_C1/Lower  left  of  keypad
-       KEY_C3/Lower  right  of  keypad  KEY_BTAB/Back   tab   key
-       KEY_BEG/Beg(inning)      key     KEY_CANCEL/Cancel     key
-       KEY_CLOSE/Close   key   KEY_COMMAND/Cmd   (command)    key
-       KEY_COPY/Copy  key  KEY_CREATE/Create  key KEY_END/End key
-       KEY_EXIT/Exit  key  KEY_FIND/Find  key  KEY_HELP/Help  key
-       KEY_MARK/Mark  key KEY_MESSAGE/Message key KEY_MOUSE/Mouse
-       event read  KEY_MOVE/Move  key  KEY_NEXT/Next  object  key
-       KEY_OPEN/Open   key   KEY_OPTIONS/Options  key  KEY_PREVI-
-       OUS/Previous  object  key  KEY_REDO/Redo  key   KEY_REFER-
-       ENCE/Ref(erence)      key      KEY_REFRESH/Refresh     key
-       KEY_REPLACE/Replace    key    KEY_RESIZE/Screen    resized
-       KEY_RESTART/Restart      key     KEY_RESUME/Resume     key
-       KEY_SAVE/Save key KEY_SBEG/Shifted beginning key KEY_SCAN-
-       CEL/Shifted  cancel  key  KEY_SCOMMAND/Shifted command key
-       KEY_SCOPY/Shifted copy key KEY_SCREATE/Shifted create  key
-       KEY_SDC/Shifted  delete  char  key  KEY_SDL/Shifted delete
-       line key KEY_SELECT/Select key  KEY_SEND/Shifted  end  key
-       KEY_SEOL/Shifted clear line key KEY_SEXIT/Shifted exit key
-       KEY_SFIND/Shifted  find  key  KEY_SHELP/Shifted  help  key
-       KEY_SHOME/Shifted   home  key  KEY_SIC/Shifted  input  key
-       KEY_SLEFT/Shifted left arrow key KEY_SMESSAGE/Shifted mes-
-       sage key KEY_SMOVE/Shifted move key KEY_SNEXT/Shifted next
-       redo     key     KEY_SREPLACE/Shifted     replace      key
-       KEY_SRIGHT/Shifted  right  arrow KEY_SRSUME/Shifted resume
-       key KEY_SSAVE/Shifted save key  KEY_SSUSPEND/Shifted  sus-
-       pend  key  KEY_SUNDO/Shifted  undo key KEY_SUSPEND/Suspend
-       key KEY_UNDO/Undo key
-
-       Keypad is arranged like this:
-
-       center allbox tab(/) ; c c  c  .   <STRONG>A1</STRONG>/<STRONG>up</STRONG>/<STRONG>A3</STRONG>  <STRONG>left</STRONG>/<STRONG>B2</STRONG>/<STRONG>right</STRONG>
-       <STRONG>C1</STRONG>/<STRONG>down</STRONG>/<STRONG>C3</STRONG>
-
-       The <STRONG>has_key</STRONG> routine takes a key value from the above list,
-       and returns TRUE or FALSE according as the current  termi-
-       nal type recognizes a key with that value.
-
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All  routines  return  the integer <STRONG>ERR</STRONG> upon failure and an
-       integer value other than <STRONG>ERR</STRONG> (<STRONG>OK</STRONG> in the case of ungetch())
-       upon successful completion.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Use of the escape key by a programmer for a single charac-
-       ter function is discouraged, as it will cause a  delay  of
-       up to one second while the keypad code looks for a follow-
-       ing function-key sequence.
-
-       When using <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG>, or  <STRONG>mvwgetch</STRONG>,  nocbreak
-       mode (<STRONG>nocbreak</STRONG>) and echo mode (<STRONG>echo</STRONG>) should not be used at
-       the same time.  Depending on the state of the  tty  driver
-       when  each  character  is  typed,  the program may produce
-       undesirable results.
-
-       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&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>,
-       <STRONG>KEY_DOWN</STRONG>,    <STRONG>KEY_LEFT</STRONG>,   <STRONG>KEY_RIGHT</STRONG>,   <STRONG>KEY_HOME</STRONG>,   <STRONG>KEY_END</STRONG>,
-       <STRONG>KEY_NPAGE</STRONG>, <STRONG>KEY_PPAGE</STRONG>, and function keys 1 through 12.  The
-       Ins key is usually mapped to <STRONG>KEY_IC</STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       The  *get* functions are described in the XSI Curses stan-
-       dard, Issue 4.  They  read  single-byte  characters  only.
-       The  standard  specifies  that they return <STRONG>ERR</STRONG> on failure,
-       but specifies no error conditions.
-
-       The echo behavior of these functions on input of  <STRONG>KEY_</STRONG>  or
-       backspace  characters  was not specified in the SVr4 docu-
-
-       The  behavior of <STRONG>getch</STRONG> and friends in the presence of han-
-       dled signals is unspecified in the  SVr4  and  XSI  Curses
-       documentation.   Under  historical curses implementations,
-       it varied depending  on  whether  the  operating  system's
-       implementation  of  handled  signal  receipt  interrupts a
-       <STRONG><A HREF="read.2.html">read(2)</A></STRONG> call in progress or not, and also (in some  imple-
-       mentations)  depending on whether an input timeout or non-
-       blocking mode hsd been set.
-
-       Programmers concerned about portability should be prepared
-       for  either  of  two  cases:  (a)  signal receipt does not
-       interrupt <STRONG>getch</STRONG>; (b) signal receipt interrupts  <STRONG>getch</STRONG>  and
-       causes  it  to  return ERR with <STRONG>errno</STRONG> set to <STRONG>EINTR</STRONG>.  Under
-       the <STRONG>ncurses</STRONG> implementation, handled signals  never  inter-
-       rupt <STRONG>getch</STRONG>.
-
-       The  <STRONG>has_key</STRONG>  function is unique to <STRONG>ncurses</STRONG>.  We recommend
-       that  any  code  using  it  be  conditionalized   on   the
-       <STRONG>NCURSES_VERSION</STRONG> feature macro.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>,        <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>,        <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>,
-       <STRONG><A HREF="curs_move.3x.html">curs_move(3X)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>.  <STRONG><A HREF="resizeterm.3x.html">resizeterm(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_getstr.3x.html b/Ada95/html/man/curs_getstr.3x.html
deleted file mode 100644 (file)
index 384545e..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<HTML>
-<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
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>int</STRONG> <STRONG>wgetstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvgetstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwgetstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvgetnstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwgetnstr(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wgetnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The function <STRONG>getstr</STRONG> is equivalent to a series of calls  to
-       <STRONG>getch</STRONG>, until a newline or carriage return is received (the
-       terminating character is  not  included  in  the  returned
-       string).   The  resulting  value  is  placed  in  the area
-       pointed to by the character pointer <EM>str</EM>.
-
-       <STRONG>wgetnstr</STRONG> reads at most <EM>n</EM>  characters,  thus  preventing  a
-       possible  overflow  of  the  input buffer.  Any attempt to
-       enter more characters (other than the terminating  newline
-       or  carriage  return)  causes  a beep.  Function keys also
-       cause a beep and are ignored.  The <STRONG>getnstr</STRONG> function  reads
-       from the <EM>stdscr</EM> default window.
-
-       The  user's erase and kill characters are interpreted.  If
-       keypad  mode  is  on  for   the   window,   <STRONG>KEY_LEFT</STRONG>   and
-       <STRONG>KEY_BACKSPACE</STRONG> are both considered equivalent to the user's
-       kill character.
-
-       Characters input are echoed only if <STRONG>echo</STRONG> is currently  on.
-       In  that case, backspace is echoed as deletion of the pre-
-       vious character (typically a left motion).
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG>
-       (SVr4  specifies  only  "an integer value other than <STRONG>ERR</STRONG>")
-       upon successful completion.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that <STRONG>getstr</STRONG>, <STRONG>mvgetstr</STRONG>, and <STRONG>mvwgetstr</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These functions are described in the XSI Curses  standard,
-       Issue  4.   They  read  single-byte  characters only.  The
-       standard specifies that they return <STRONG>ERR</STRONG>  on  failure,  but
-       the  single  error  condition  <STRONG>EOVERFLOW</STRONG>  associated  with
-       extended-level conformance is not yet  returned  (the  XSI
-
-       SVr3 and early SVr4 curses implementations did not  reject
-       function keys; the SVr4.0 documentation claimed that "spe-
-       cial keys" (such as function  keys,  "home"  key,  "clear"
-       key,  <EM>etc</EM>.)  are  interpreted" without giving details.  It
-       lied.  In fact, the  `character'  value  appended  to  the
-       string  by  those  implementations was predictable but not
-       useful (being, in fact, the low-order eight  bits  of  the
-       key's KEY_ value).
-
-       The functions <STRONG>getnstr</STRONG>, <STRONG>mvgetnstr</STRONG>, and <STRONG>mvwgetnstr</STRONG> were pre-
-       sent but not documented in SVr4.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_getyx.3x.html b/Ada95/html/man/curs_getyx.3x.html
deleted file mode 100644 (file)
index 1c1b5e7..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>getyx</STRONG>,  <STRONG>getparyx</STRONG>,  <STRONG>getbegyx</STRONG>,  <STRONG>getmaxyx</STRONG> - get <STRONG>curses</STRONG> cursor
-       and window coordinates
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>void</STRONG> <STRONG>getbegyx(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-       <STRONG>void</STRONG> <STRONG>getmaxyx(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The <STRONG>getyx</STRONG> macro places the current cursor position of  the
-       given window in the two integer variables <EM>y</EM> and <EM>x</EM>.
-
-       If  <EM>win</EM>  is  a  subwindow,  the  <STRONG>getparyx</STRONG> macro places the
-       beginning coordinates of the  subwindow  relative  to  the
-       parent  window into two integer variables <EM>y</EM> and <EM>x</EM>.  Other-
-       wise, <STRONG>-1</STRONG> is placed into <EM>y</EM> and <EM>x</EM>.
-
-       Like <STRONG>getyx</STRONG>, the <STRONG>getbegyx</STRONG> and  <STRONG>getmaxyx</STRONG>  macros  store  the
-       current  beginning  coordinates  and size of the specified
-       window.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The return values of these  macros  are  undefined  (<EM>i</EM>.<EM>e</EM>.,
-       they  should not be used as the right-hand side of assign-
-       ment statements).
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       All of these interfaces are macros and  that  "<STRONG>&</STRONG>"  is  not
-       necessary before the variables <EM>y</EM> and <EM>x</EM>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  functions are described in the XSI Curses standard,
-       Issue 4.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_inch.3x.html b/Ada95/html/man/curs_inch.3x.html
deleted file mode 100644 (file)
index a631054..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-<HTML>
-<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
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
-       <STRONG>chtype</STRONG> <STRONG>inch(void);</STRONG>
-       <STRONG>chtype</STRONG> <STRONG>winch(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>chtype</STRONG> <STRONG>mvinch(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-       <STRONG>chtype</STRONG> <STRONG>mvwinch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These routines return the character, of  type  <STRONG>chtype</STRONG>,  at
-       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><curses.h></STRONG> can be used with the <STRONG>&</STRONG> (logical  AND)  operator
-       to extract the character or attributes alone.
-
-
-   <STRONG>Attributes</STRONG>
-       The  following  bit-masks  may  be  AND-ed with characters
-       returned by <STRONG>winch</STRONG>.
-
-       l  l  .   <STRONG>A_CHARTEXT</STRONG>     Bit-mask  to  extract   character
-       <STRONG>A_ATTRIBUTES</STRONG>   Bit-mask      to     extract     attributes
-       <STRONG>A_COLOR</STRONG>   Bit-mask to extract color-pair field information
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that all of these routines may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  functions are described in the XSI Curses standard,
-       Issue 4.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_inchstr.3x.html b/Ada95/html/man/curs_inchstr.3x.html
deleted file mode 100644 (file)
index 9a14c85..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<HTML>
-<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
-       characters (and attributes) from a <STRONG>curses</STRONG> window
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>int</STRONG> <STRONG>winchstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr);</STRONG>
-       <STRONG>int</STRONG> <STRONG>winchnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvinchstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvinchnstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwinchstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr);</STRONG>
-       <STRONG>int</STRONG>  <STRONG>mvwinchnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr,</STRONG>
-       <STRONG>int</STRONG> <STRONG>n);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These routines return a NULL-terminated  array  of  <STRONG>chtype</STRONG>
-       quantities, starting at the current cursor position in the
-       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><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>].
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon  failure  and  an
-       integer  value  other  than <STRONG>ERR</STRONG> upon successful completion
-       (the number of  characters  retrieved,  exclusive  of  the
-       trailing 0).
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note  that  all  routines  except <STRONG>winchnstr</STRONG> may be macros.
-       SVr4 does not document whether the result string is 0-ter-
-       minated; it does not document whether a length limit argu-
-       ment includes any trailing 0; and it does not document the
-       meaning of the return value.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  functions are described in the XSI Curses standard,
-       Issue 4.  It is no more specific than the SVr4  documenta-
-       tion on the trailing 0.  It does specify that the success-
-       ful return of the functions is <STRONG>OK</STRONG>.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG>.
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_initscr.3x.html b/Ada95/html/man/curs_initscr.3x.html
deleted file mode 100644 (file)
index 38e367b..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<HTML>
-<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
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
-       <STRONG>WINDOW</STRONG> <STRONG>*initscr(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>endwin(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>isendwin(void);</STRONG>
-       <STRONG>SCREEN</STRONG>  <STRONG>*newterm(const</STRONG>  <STRONG>char</STRONG>  <STRONG>*type,</STRONG>  <STRONG>FILE</STRONG>  <STRONG>*outfd,</STRONG>   <STRONG>FILE</STRONG>
-       <STRONG>*infd);</STRONG>
-       <STRONG>SCREEN</STRONG> <STRONG>*set_term(SCREEN</STRONG> <STRONG>*new);</STRONG>
-       <STRONG>void</STRONG> <STRONG>delscreen(SCREEN*</STRONG> <STRONG>sp);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       <STRONG>initscr</STRONG>  is normally the first <STRONG>curses</STRONG> routine to call when
-       initializing a program.  A few special routines  sometimes
-       need  to  be called before it; these are <STRONG>slk_init</STRONG>, <STRONG>filter</STRONG>,
-       <STRONG>ripoffline</STRONG>, <STRONG>use_env</STRONG>.  For multiple-terminal  applications,
-       <STRONG>newterm</STRONG> may be called before <STRONG>initscr</STRONG>.
-
-       The initscr code determines the terminal type and initial-
-       izes all <STRONG>curses</STRONG> data structures.  <STRONG>initscr</STRONG> also causes  the
-       first  call  to  <STRONG>refresh</STRONG>  to  clear the screen.  If errors
-       occur, <STRONG>initscr</STRONG> writes  an  appropriate  error  message  to
-       standard error and exits; otherwise, a pointer is returned
-       to <STRONG>stdscr</STRONG>.
-
-       A program that outputs to more than  one  terminal  should
-       use  the  <STRONG>newterm</STRONG>  routine  for  each  terminal instead of
-       <STRONG>initscr</STRONG>.  A program that needs to inspect capabilities, so
-       it can continue to run in a line-oriented mode if the ter-
-       minal cannot support a screen-oriented program, would also
-       use  <STRONG>newterm</STRONG>.   The  routine <STRONG>newterm</STRONG> should be called once
-       for each terminal.  It returns a variable of type <STRONG>SCREEN</STRONG> <STRONG>*</STRONG>
-       which  should  be  saved  as a reference to that terminal.
-       The arguments are the <EM>type</EM> of the terminal to be  used  in
-       place of <STRONG>$TERM</STRONG>, a file pointer for output to the terminal,
-       and another file pointer for input from the  terminal  (if
-       <EM>type</EM>  is <STRONG>NULL</STRONG>, <STRONG>$TERM</STRONG> will be used).  The program must also
-       call <STRONG>endwin</STRONG> for each terminal being  used  before  exiting
-       from  <STRONG>curses</STRONG>.  If <STRONG>newterm</STRONG> is called more than once for the
-       same terminal, the first terminal referred to must be  the
-       last one for which <STRONG>endwin</STRONG> is called.
-
-       A  program  should  always  call  <STRONG>endwin</STRONG> before exiting or
-       escaping  from  <STRONG>curses</STRONG>  mode  temporarily.   This  routine
-       restores  tty  modes,  moves the cursor to the lower left-
-       hand corner of the screen and resets the terminal into the
-       proper non-visual mode.  Calling <STRONG>refresh</STRONG> or <STRONG>doupdate</STRONG> after
-       a temporary escape causes the  program  to  resume  visual
-       mode.
-       called without any subsequent calls to <STRONG>wrefresh</STRONG>, and <STRONG>FALSE</STRONG>
-       otherwise.
-
-       The  <STRONG>set_term</STRONG>  routine is used to switch between different
-       terminals.  The screen reference <STRONG>new</STRONG> becomes the new  cur-
-       rent  terminal.   The previous terminal is returned by the
-       routine.  This  is  the  only  routine  which  manipulates
-       <STRONG>SCREEN</STRONG>  pointers;  all other routines affect only the cur-
-       rent terminal.
-
-       The <STRONG>delscreen</STRONG> routine frees storage  associated  with  the
-       <STRONG>SCREEN</STRONG>  data  structure.   The  <STRONG>endwin</STRONG> routine does not do
-       this, so <STRONG>delscreen</STRONG> should be called after <STRONG>endwin</STRONG> if a par-
-       ticular <STRONG>SCREEN</STRONG> is no longer needed.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       <STRONG>endwin</STRONG>  returns  the  integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> upon
-       successful completion.
-
-       Routines that return pointers always return <STRONG>NULL</STRONG> on error.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  functions are described in the XSI Curses standard,
-       Issue 4.  It specifies that portable applications must not
-       call <STRONG>initscr</STRONG> more than once.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>,       <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>,       <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>,
-       <STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_inopts.3x.html b/Ada95/html/man/curs_inopts.3x.html
deleted file mode 100644 (file)
index 4f82389..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-<HTML>
-<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>,
-       <STRONG>qiflush</STRONG>,  <STRONG>timeout</STRONG>,  <STRONG>wtimeout</STRONG>,  <STRONG>typeahead</STRONG>  -  <STRONG>curses</STRONG>  input
-       options
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
-       <STRONG>int</STRONG> <STRONG>cbreak(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>nocbreak(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>echo(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>noecho(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>halfdelay(int</STRONG> <STRONG>tenths);</STRONG>
-       <STRONG>int</STRONG> <STRONG>intrflush(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>int</STRONG> <STRONG>keypad(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>int</STRONG> <STRONG>meta(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>int</STRONG> <STRONG>nodelay(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>int</STRONG> <STRONG>raw(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>noraw(void);</STRONG>
-       <STRONG>void</STRONG> <STRONG>noqiflush(void);</STRONG>
-       <STRONG>void</STRONG> <STRONG>qiflush(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>notimeout(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>void</STRONG> <STRONG>timeout(int</STRONG> <STRONG>delay);</STRONG>
-       <STRONG>void</STRONG> <STRONG>wtimeout(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>delay);</STRONG>
-       <STRONG>int</STRONG> <STRONG>typeahead(int</STRONG> <STRONG>fd);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       Normally, the tty driver buffers typed characters until  a
-       newline  or  carriage return is typed.  The <STRONG>cbreak</STRONG> routine
-       disables line buffering and erase/kill  character-process-
-       ing  (interrupt  and  flow  control  characters  are unaf-
-       fected), making characters typed by the  user  immediately
-       available  to  the  program.  The <STRONG>nocbreak</STRONG> routine returns
-       the terminal to normal (cooked) mode.
-
-       Initially the terminal may or may not be in  <STRONG>cbreak</STRONG>  mode,
-       as the mode is inherited; therefore, a program should call
-       <STRONG>cbreak</STRONG> or <STRONG>nocbreak</STRONG> explicitly.  Most interactive  programs
-       using  <STRONG>curses</STRONG> set the <STRONG>cbreak</STRONG> mode.  Note that <STRONG>cbreak</STRONG> over-
-       rides <STRONG>raw</STRONG>.  [See <STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG> for a  discussion  of  how
-       these routines interact with <STRONG>echo</STRONG> and <STRONG>noecho</STRONG>.]
-
-       The  <STRONG>echo</STRONG>  and  <STRONG>noecho</STRONG> routines control whether characters
-       typed by the user are echoed by <STRONG>getch</STRONG> as they  are  typed.
-       Echoing  by  the  tty  driver is always disabled, but ini-
-       tially <STRONG>getch</STRONG> is in echo  mode,  so  characters  typed  are
-       echoed.  Authors of most interactive programs prefer to do
-       their own echoing in a controlled area of the  screen,  or
-       not  to  echo  at  all, so they disable echoing by calling
-       <STRONG>noecho</STRONG>.  [See <STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG> for a discussion of how these
-       routines interact with <STRONG>cbreak</STRONG> and <STRONG>nocbreak</STRONG>.]
-
-       user  are  immediately available to the program.  However,
-       after blocking  for  <EM>tenths</EM>  tenths  of  seconds,  ERR  is
-       returned  if  nothing has been typed.  The value of <STRONG>tenths</STRONG>
-       must be a number between 1 and 255.  Use <STRONG>nocbreak</STRONG> to leave
-       half-delay mode.
-
-       If  the <STRONG>intrflush</STRONG> option is enabled, (<EM>bf</EM> is <STRONG>TRUE</STRONG>), when an
-       interrupt key  is  pressed  on  the  keyboard  (interrupt,
-       break,  quit)  all  output in the tty driver queue will be
-       flushed, giving the  effect  of  faster  response  to  the
-       interrupt,  but  causing  <STRONG>curses</STRONG> to have the wrong idea of
-       what is on the  screen.   Disabling  (<EM>bf</EM>  is  <STRONG>FALSE</STRONG>),  the
-       option  prevents the flush.  The default for the option is
-       inherited from the tty driver settings.  The window  argu-
-       ment is ignored.
-
-       The  <STRONG>keypad</STRONG> option enables the keypad of the user's termi-
-       nal.  If enabled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the user can press a  func-
-       tion  key (such as an arrow key) and <STRONG>wgetch</STRONG> returns a sin-
-       gle value representing the function key, as  in  <STRONG>KEY_LEFT</STRONG>.
-       If  disabled (<EM>bf</EM> is <STRONG>FALSE</STRONG>), <STRONG>curses</STRONG> does not treat function
-       keys specially and the program has to interpret the escape
-       sequences  itself.   If  the keypad in the terminal can be
-       turned on  (made  to  transmit)  and  off  (made  to  work
-       locally),  turning on this option causes the terminal key-
-       pad to be turned on when <STRONG>wgetch</STRONG> is  called.   The  default
-       value for keypad is false.
-
-       Initially, whether the terminal returns 7 or 8 significant
-       bits on input depends on  the  control  mode  of  the  tty
-       driver  [see  <STRONG><A HREF="termio.7.html">termio(7)</A></STRONG>].  To force 8 bits to be returned,
-       invoke <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>TRUE</STRONG>); this is equivalent,  under  POSIX,
-       to  setting the CS8 flag on the terminal.  To force 7 bits
-       to be returned, invoke <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>FALSE</STRONG>); this  is  equiva-
-       lent,  under  POSIX, to setting the CS8 flag on the termi-
-       nal.  The window argument, <EM>win</EM>, is always ignored.  If the
-       terminfo capabilities <STRONG>smm</STRONG> (meta_on) and <STRONG>rmm</STRONG> (meta_off) are
-       defined for the terminal, <STRONG>smm</STRONG> is sent to the terminal when
-       <STRONG>meta</STRONG>(<EM>win</EM>,  <STRONG>TRUE</STRONG>)  is called and <STRONG>rmm</STRONG> is sent when <STRONG>meta</STRONG>(<EM>win</EM>,
-       <STRONG>FALSE</STRONG>) is called.
-
-       The <STRONG>nodelay</STRONG> option causes <STRONG>getch</STRONG> to be a non-blocking call.
-       If  no input is ready, <STRONG>getch</STRONG> returns <STRONG>ERR</STRONG>.  If disabled (<EM>bf</EM>
-       is <STRONG>FALSE</STRONG>), <STRONG>getch</STRONG> waits until a key is pressed.
-
-       While interpreting an input escape sequence, <STRONG>wgetch</STRONG> sets a
-       timer  while  waiting  for the next character.  If <STRONG>notime-</STRONG>
-       <STRONG>out(</STRONG><EM>win</EM>, <STRONG>TRUE</STRONG>) is called,  then  <STRONG>wgetch</STRONG>  does  not  set  a
-       timer.   The  purpose  of  the timeout is to differentiate
-       between sequences received from a function key  and  those
-       typed by a user.
-
-       characters  typed  are  immediately  passed through to the
-       user program.  The differences are that in raw  mode,  the
-       interrupt,  quit, suspend, and flow control characters are
-       all passed through uninterpreted, instead of generating  a
-       signal.   The  behavior  of the BREAK key depends on other
-       bits in the tty driver that are not set by <STRONG>curses</STRONG>.
-
-       When the <STRONG>noqiflush</STRONG> routine is used, normal flush of  input
-       and  output queues associated with the <STRONG>INTR</STRONG>, <STRONG>QUIT</STRONG> and <STRONG>SUSP</STRONG>
-       characters will not be done [see <STRONG><A HREF="termio.7.html">termio(7)</A></STRONG>].  When <STRONG>qiflush</STRONG>
-       is  called,  the queues will be flushed when these control
-       characters are read.  You may want to call <STRONG>noqiflush()</STRONG>  in
-       a  signal handler if you want output to continue as though
-       the interrupt had not occurred, after the handler exits.
-
-       The <STRONG>timeout</STRONG> and <STRONG>wtimeout</STRONG> routines  set  blocking  or  non-
-       blocking  read  for a given window.  If <EM>delay</EM> is negative,
-       blocking  read  is  used  (<EM>i</EM>.<EM>e</EM>.,  waits  indefinitely  for
-       input).   If <EM>delay</EM> is zero, then non-blocking read is used
-       (<EM>i</EM>.<EM>e</EM>., read returns <STRONG>ERR</STRONG> if no input is waiting).  If <EM>delay</EM>
-       is  positive, then read blocks for <EM>delay</EM> milliseconds, and
-       returns <STRONG>ERR</STRONG> if there is still no input.  Hence, these rou-
-       tines  provide the same functionality as <STRONG>nodelay</STRONG>, plus the
-       additional capability of being  able  to  block  for  only
-       <EM>delay</EM> milliseconds (where <EM>delay</EM> is positive).
-
-       The  <STRONG>curses</STRONG> library does ``line-breakout optimization'' by
-       looking for  typeahead  periodically  while  updating  the
-       screen.   If  input is found, and it is coming from a tty,
-       the current update is postponed until <STRONG>refresh</STRONG> or  <STRONG>doupdate</STRONG>
-       is  called again.  This allows faster response to commands
-       typed in advance.  Normally, the input FILE pointer passed
-       to  <STRONG>newterm</STRONG>,  or  <STRONG>stdin</STRONG> in the case that <STRONG>initscr</STRONG> was used,
-       will be used to do this typeahead checking.  The <STRONG>typeahead</STRONG>
-       routine  specifies  that  the  file descriptor <EM>fd</EM> is to be
-       used to check for typeahead instead.  If <EM>fd</EM> is -1, then no
-       typeahead checking is done.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All  routines that return an integer return <STRONG>ERR</STRONG> upon fail-
-       ure and OK (SVr4 specifies only "an  integer  value  other
-       than  <STRONG>ERR</STRONG>")  upon  successful completion, unless otherwise
-       noted in the preceding routine descriptions.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These functions are described in the XSI Curses  standard,
-       Issue 4.
-
-       The  ncurses  library obeys the XPG4 standard and the his-
-       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-
-       tion, even if your program remains in cooked mode.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>meta</STRONG>,  <STRONG>node-</STRONG>
-       <STRONG>lay</STRONG>,  <STRONG>notimeout</STRONG>, <STRONG>noqiflush</STRONG>, <STRONG>qiflush</STRONG>, <STRONG>timeout</STRONG>, and <STRONG>wtimeout</STRONG>
-       may be macros.
-
-       The <STRONG>noraw</STRONG> and <STRONG>nocbreak</STRONG> calls follow historical practice in
-       that  they  attempt  to  restore to normal (`cooked') mode
-       from raw and cbreak modes respectively.  Mixing  raw/noraw
-       and  cbreak/nocbreak  calls  leads  to  tty driver control
-       states that are hard to predict or understand; it  is  not
-       recommended.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>, <STRONG><A HREF="termio.7.html">termio(7)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_insch.3x.html b/Ada95/html/man/curs_insch.3x.html
deleted file mode 100644 (file)
index 1281ca9..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<HTML>
-<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
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>int</STRONG> <STRONG>mvinsch(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwinsch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These routines, insert the character <EM>ch</EM> before the charac-
-       ter  under the cursor.  All characters to the right of the
-       cursor are moved one space to the right, with  the  possi-
-       bility  of the rightmost character on the line being lost.
-       The insertion operation does not change the  cursor  posi-
-       tion.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All  routines that return an integer return <STRONG>ERR</STRONG> upon fail-
-       ure and OK (SVr4 specifies only "an  integer  value  other
-       than  <STRONG>ERR</STRONG>")  upon  successful completion, unless otherwise
-       noted in the preceding routine descriptions.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       These routines do not necessarily imply use of a  hardware
-       insert character feature.
-
-       Note that <STRONG>insch</STRONG>, <STRONG>mvinsch</STRONG>, and <STRONG>mvwinsch</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  functions are described in the XSI Curses standard,
-       Issue 4.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_insstr.3x.html b/Ada95/html/man/curs_insstr.3x.html
deleted file mode 100644 (file)
index b33902a..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-<HTML>
-<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
-       <STRONG>curses</STRONG> window
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>int</STRONG> <STRONG>winsnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvinsstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvinsnstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwinsstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwinsnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG>
-       <STRONG>int</STRONG> <STRONG>n);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These  routines insert a character string (as many charac-
-       ters as will fit on the line) before the  character  under
-       the cursor.  All characters to the right of the cursor are
-       shifted right, with the possibility of the rightmost char-
-       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><=0, then the  entire
-       string is inserted.
-
-       If  a  character in <EM>str</EM> is a tab, newline, carriage return
-       or backspace, the cursor is moved appropriately within the
-       window.   A  newline  also  does a <STRONG>clrtoeol</STRONG> before moving.
-       Tabs are considered to be at every eighth  column.   If  a
-       character in <EM>str</EM> is another control character, it is drawn
-       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 ^-representation of the control character.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All  routines that return an integer return <STRONG>ERR</STRONG> upon fail-
-       ure and OK (SVr4 specifies only "an  integer  value  other
-       than  <STRONG>ERR</STRONG>")  upon  successful completion, unless otherwise
-       noted in the preceding routine descriptions.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that all but <STRONG>winsnstr</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These functions are described in the XSI Curses  standard,
-       Issue  4,  which  adds  const qualifiers to the arguments.
-       The XSI Curses error  conditions  <STRONG>EILSEQ</STRONG>  and  <STRONG>EILOVERFLOW</STRONG>
-       associated  with  extended-level  conformance  are not yet
-       detected (this implementation does not  yet  support  XPG4
-       <STRONG><A HREF="ncurses.3x.html">curses(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>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_instr.3x.html b/Ada95/html/man/curs_instr.3x.html
deleted file mode 100644 (file)
index 863bc61..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<HTML>
-<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>
-       window
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>int</STRONG> <STRONG>winstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
-       <STRONG>int</STRONG> <STRONG>winnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvinstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvinnstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwinstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
-       <STRONG>int</STRONG>  <STRONG>mvwinnstr(WINDOW</STRONG>  <STRONG>*win,</STRONG>  <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG>
-       <STRONG>n);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These routines return  a  string  of  characters  in  <EM>str</EM>,
-       extracted  starting  at the current cursor position in the
-       named window.  Attributes are stripped  from  the  charac-
-       ters.   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 NUL).
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All  of the functions return <STRONG>ERR</STRONG> upon failure, or the num-
-       ber of characters actually read into the string.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that all routines except <STRONG>winnstr</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       The XSI Curses error  conditions  <STRONG>EILSEQ</STRONG>  and  <STRONG>EILOVERFLOW</STRONG>
-       associated  with  extended-level  conformance  are not yet
-       detected (this implementation does not  yet  support  XPG4
-       multi-byte  characters).  SVr4 does not document whether a
-       length limit includes or excludes the trailing NUL.
-
-       The ncurses library extends the XSI description by  allow-
-       ing  a  negative value for <EM>n</EM>.  In this case, the functions
-       return the string ending at the right margin.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>.
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_kernel.3x.html b/Ada95/html/man/curs_kernel.3x.html
deleted file mode 100644 (file)
index 9e88cca..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-<HTML>
-<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>
-       <STRONG>fline</STRONG>, <STRONG>curs_set</STRONG>, <STRONG>napms</STRONG> - low-level <STRONG>curses</STRONG> routines
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>int</STRONG> <STRONG>reset_prog_mode(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>reset_shell_mode(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>resetty(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>savetty(void);</STRONG>
-       <STRONG>void</STRONG> <STRONG>getsyx(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-       <STRONG>void</STRONG> <STRONG>setsyx(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-       <STRONG>int</STRONG> <STRONG>ripoffline(int</STRONG> <STRONG>line,</STRONG> <STRONG>int</STRONG> <STRONG>(*init)(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>int));</STRONG>
-       <STRONG>int</STRONG> <STRONG>curs_set(int</STRONG> <STRONG>visibility);</STRONG>
-       <STRONG>int</STRONG> <STRONG>napms(int</STRONG> <STRONG>ms);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  following  routines  give low-level access to various
-       <STRONG>curses</STRONG> capabilities.  Theses routines typically  are  used
-       inside library routines.
-
-       The  <STRONG>def_prog_mode</STRONG>  and  <STRONG>def_shell_mode</STRONG>  routines save the
-       current terminal modes as the  "program"  (in  <STRONG>curses</STRONG>)  or
-       "shell"   (not   in   <STRONG>curses</STRONG>)   state   for   use  by  the
-       <STRONG>reset_prog_mode</STRONG> and <STRONG>reset_shell_mode</STRONG>  routines.   This  is
-       done  automatically  by  <STRONG>initscr</STRONG>.   There is one such save
-       area for each screen context allocated by <STRONG>newterm()</STRONG>.
-
-       The <STRONG>reset_prog_mode</STRONG> and <STRONG>reset_shell_mode</STRONG> routines  restore
-       the  terminal  to "program" (in <STRONG>curses</STRONG>) or "shell" (out of
-       <STRONG>curses</STRONG>) state.  These are  done  automatically  by  <STRONG>endwin</STRONG>
-       and,  after  an  <STRONG>endwin</STRONG>, by <STRONG>doupdate</STRONG>, so they normally are
-       not called.
-
-       The <STRONG>resetty</STRONG> and <STRONG>savetty</STRONG>  routines  save  and  restore  the
-       state  of  the  terminal modes.  <STRONG>savetty</STRONG> saves the current
-       state in a buffer and <STRONG>resetty</STRONG> restores the state  to  what
-       it was at the last call to <STRONG>savetty</STRONG>.
-
-       The  <STRONG>getsyx</STRONG> routine returns the current coordinates of the
-       virtual screen cursor in <EM>y</EM> and <EM>x</EM>.  If <STRONG>leaveok</STRONG> is currently
-       <STRONG>TRUE</STRONG>,  then <STRONG>-1</STRONG>,<STRONG>-1</STRONG> is returned.  If lines have been removed
-       from the top of the screen,  using  <STRONG>ripoffline</STRONG>,  <EM>y</EM>  and  <EM>x</EM>
-       include  these  lines;  therefore,  <EM>y</EM> and <EM>x</EM> should be used
-       only as arguments for <STRONG>setsyx</STRONG>.
-
-       The <STRONG>setsyx</STRONG> routine sets the virtual screen cursor to <EM>y</EM>, <EM>x</EM>.
-       If <EM>y</EM> and <EM>x</EM> are both <STRONG>-1</STRONG>, then <STRONG>leaveok</STRONG> is set.  The two rou-
-       tines <STRONG>getsyx</STRONG> and <STRONG>setsyx</STRONG> are  designed  to  be  used  by  a
-       cursor.   The  library  routine  would  call <STRONG>getsyx</STRONG> at the
-       beginning, do its manipulation of its own  windows,  do  a
-       <STRONG>wnoutrefresh</STRONG>  on  its  windows, call <STRONG>setsyx</STRONG>, and then call
-       <STRONG>doupdate</STRONG>.
-
-       The <STRONG>ripoffline</STRONG> routine provides access to the same  facil-
-       ity  that  <STRONG>slk_init</STRONG>  [see <STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>] uses to reduce the
-       size of the screen.   <STRONG>ripoffline</STRONG>  must  be  called  before
-       <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> is called.  If <EM>line</EM> is positive, a line
-       is removed from the top of <STRONG>stdscr</STRONG>; if <EM>line</EM> is negative,  a
-       line is removed from the bottom.  When this is done inside
-       <STRONG>initscr</STRONG>, the routine <STRONG>init</STRONG> (supplied by the user) is called
-       with  two arguments: a window pointer to the one-line win-
-       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><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.
-
-       <STRONG>ripoffline</STRONG>  can  be called up to five times before calling
-       <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>.
-
-       The <STRONG>curs_set</STRONG> routine sets  the  cursor  state  is  set  to
-       invisible, normal, or very visible for <STRONG>visibility</STRONG> equal to
-       <STRONG>0</STRONG>, <STRONG>1</STRONG>, or <STRONG>2</STRONG> respectively.  If  the  terminal  supports  the
-       <EM>visibility</EM>   requested,   the  previous  <EM>cursor</EM>  state  is
-       returned; otherwise, <STRONG>ERR</STRONG> is returned.
-
-       The <STRONG>napms</STRONG> routine is used to sleep for <EM>ms</EM> milliseconds.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Except for <STRONG>curs_set</STRONG>,  these  routines  always  return  <STRONG>OK</STRONG>.
-       <STRONG>curs_set</STRONG>  returns the previous cursor state, or <STRONG>ERR</STRONG> if the
-       requested <EM>visibility</EM> is not supported.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that <STRONG>getsyx</STRONG> is a macro, so <STRONG>&</STRONG> is not necessary  before
-       the variables <EM>y</EM> and <EM>x</EM>.
-
-       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>
-<H2>PORTABILITY</H2><PRE>
-       The functions <STRONG>setsyx</STRONG> and <STRONG>getsyx</STRONG> are not described  in  the
-       XSI  Curses standard, Issue 4.  All other functions are as
-       described in XSI Curses.
-
-       The SVr4 documentation describes <STRONG>setsyx</STRONG> and <STRONG>getsyx</STRONG> as hav-
-       ing  return  type  int.  This  is  misleading, as they are
-       <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_outopts.3x.html">curs_outopts(3X)</A></STRONG>,
-       <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>, <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3X)</A></STRONG>, <STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_mouse.3x.html b/Ada95/html/man/curs_mouse.3x.html
deleted file mode 100644 (file)
index 57b93a5..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-<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>
diff --git a/Ada95/html/man/curs_move.3x.html b/Ada95/html/man/curs_move.3x.html
deleted file mode 100644 (file)
index 0fdf84b..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>move</STRONG>, <STRONG>wmove</STRONG> - move <STRONG>curses</STRONG> window cursor
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These  routines move the cursor associated with the window
-       to line <EM>y</EM> and column <EM>x</EM>.  This routine does  not  move  the
-       physical  cursor  of the terminal until <STRONG>refresh</STRONG> is called.
-       The position specified is relative to the upper  left-hand
-       corner of the window, which is (0,0).
-
-
-</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.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that <STRONG>move</STRONG> may be a macro.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  functions are described in the XSI Curses standard,
-       Issue 4.  The standard specifies that if (y,x) is within a
-       multi-column  character,  the cursor is moved to the first
-       column of that  character;  however,  this  implementation
-       does  not  yet  support  the extended-level XSI multi-byte
-       characters.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_outopts.3x.html b/Ada95/html/man/curs_outopts.3x.html
deleted file mode 100644 (file)
index 72401f5..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-<HTML>
-<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
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>void</STRONG> <STRONG>idcok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>void</STRONG> <STRONG>immedok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>int</STRONG> <STRONG>leaveok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>int</STRONG> <STRONG>setscrreg(int</STRONG> <STRONG>top,</STRONG> <STRONG>int</STRONG> <STRONG>bot);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wsetscrreg(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>top,</STRONG> <STRONG>int</STRONG> <STRONG>bot);</STRONG>
-       <STRONG>int</STRONG> <STRONG>scrollok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>int</STRONG> <STRONG>nl(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>nonl(void);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These routines set options that change the style of output
-       within  <STRONG>curses</STRONG>.   All  options are initially <STRONG>FALSE</STRONG>, unless
-       otherwise stated.  It  is  not  necessary  to  turn  these
-       options off before calling <STRONG>endwin</STRONG>.
-
-       If  <STRONG>clearok</STRONG> is called with <STRONG>TRUE</STRONG> as argument, the next call
-       to <STRONG>wrefresh</STRONG> with this window will clear  the  screen  com-
-       pletely  and  redraw the entire screen from scratch.  This
-       is useful when the contents of the screen  are  uncertain,
-       or  in  some  cases for a more pleasing visual effect.  If
-       the <EM>win</EM> argument to <STRONG>clearok</STRONG> is the global variable <STRONG>curscr</STRONG>,
-       the  next  call  to  <STRONG>wrefresh</STRONG>  with  any window causes the
-       screen to be cleared and repainted from scratch.
-
-       If <STRONG>idlok</STRONG> is called with <STRONG>TRUE</STRONG> as  second  argument,  <STRONG>curses</STRONG>
-       considers using the hardware insert/delete line feature of
-       terminals so equipped.  Calling <STRONG>idlok</STRONG> with <STRONG>FALSE</STRONG> as second
-       argument  disables  use  of  line  insertion and deletion.
-       This option should be  enabled  only  if  the  application
-       needs  insert/delete  line, for example, for a screen edi-
-       tor.  It is disabled by default because insert/delete line
-       tends  to  be  visually annoying when used in applications
-       where it isn't really needed.  If insert/delete line  can-
-       not  be  used,  <STRONG>curses</STRONG> redraws the changed portions of all
-       lines.
-
-       If <STRONG>idcok</STRONG> is called with <STRONG>FALSE</STRONG> as second  argument,  <STRONG>curses</STRONG>
-       no longer considers using the hardware insert/delete char-
-       acter feature of terminals so equipped.  Use of  character
-       insert/delete  is  enabled by default.  Calling <STRONG>idcok</STRONG> with
-       <STRONG>TRUE</STRONG> as second argument re-enables use of character inser-
-       tion and deletion.
-
-       If  <STRONG>immedok</STRONG> is called with <STRONG>TRUE</STRONG> <STRONG>as</STRONG> <STRONG>argument</STRONG>, any change in
-       <STRONG>fresh</STRONG>.  However, it may degrade performance  considerably,
-       due  to  repeated  calls  to  <STRONG>wrefresh</STRONG>.  It is disabled by
-       default.
-
-       Normally, the hardware cursor is left at the  location  of
-       the  window  cursor  being  refreshed.  The <STRONG>leaveok</STRONG> option
-       allows the cursor to be left wherever the  update  happens
-       to leave it.  It is useful for applications where the cur-
-       sor is not used, since it  reduces  the  need  for  cursor
-       motions.   If  possible, the cursor is made invisible when
-       this option is enabled.
-
-       The <STRONG>setscrreg</STRONG> and <STRONG>wsetscrreg</STRONG> routines allow  the  applica-
-       tion  programmer  to  set a software scrolling region in a
-       window.  <EM>top</EM> and <EM>bot</EM> are the line numbers of the  top  and
-       bottom margin of the scrolling region.  (Line 0 is the top
-       line of the window.)  If  this  option  and  <STRONG>scrollok</STRONG>  are
-       enabled,  an  attempt  to  move off the bottom margin line
-       causes all lines in the scrolling  region  to  scroll  one
-       line in the direction of the first line.  Only the text of
-       the window is scrolled.  (Note that this has nothing to do
-       with  the use of a physical scrolling region capability in
-       the terminal, like that in the VT100.  If <STRONG>idlok</STRONG> is enabled
-       and   the  terminal  has  either  a  scrolling  region  or
-       insert/delete line capability, they will probably be  used
-       by the output routines.)
-
-       The  <STRONG>scrollok</STRONG> option controls what happens when the cursor
-       of a window is  moved  off  the  edge  of  the  window  or
-       scrolling  region,  either as a result of a newline action
-       on the bottom line, or typing the last  character  of  the
-       last line.  If disabled, (<EM>bf</EM> is <STRONG>FALSE</STRONG>), the cursor is left
-       on the bottom line.  If enabled, (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the  window
-       is  scrolled  up  one  line (Note that in order to get the
-       physical scrolling effect on the terminal, it is also nec-
-       essary to call <STRONG>idlok</STRONG>).
-
-       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('\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-
-       ter use of the line-feed capability, resulting  in  faster
-       cursor  motion.   Also, <STRONG>curses</STRONG> will then be able to detect
-       the return key.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The functions <STRONG>setscrreg</STRONG> and <STRONG>wsetscrreg</STRONG> return <STRONG>OK</STRONG> upon suc-
-       cess  and <STRONG>ERR</STRONG> upon failure. All other routines that return
-       an integer always return <STRONG>OK</STRONG>.
-       These functions are described in the XSI Curses  standard,
-       Issue 4.
-
-       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&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.
-
-       Some  historic  curses  implementations had, as an undocu-
-       mented feature,  the  ability  to  do  the  equivalent  of
-       <STRONG>clearok(...,</STRONG>  <STRONG>1)</STRONG>  by saying <STRONG>touchwin(stdscr)</STRONG> or <STRONG>clear(std-</STRONG>
-       <STRONG>scr)</STRONG>.  This will not work under ncurses.
-
-       Earlier System V  curses  implementations  specified  that
-       with  <STRONG>scrollok</STRONG> enabled, any window modification triggering
-       a scroll also forced a physical refresh.  XSI Curses  does
-       not  require this, and <STRONG>ncurses</STRONG> avoids doing it in order to
-       perform better vertical-motion  optimization  at  <STRONG>wrefresh</STRONG>
-       time.
-
-       The  XSI  Curses standard does not mention that the cursor
-       should be made invisible  as  a  side-effect  of  <STRONG>leaveok</STRONG>.
-       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
-       <STRONG>setscrreg</STRONG> may be macros.
-
-       The <STRONG>immedok</STRONG> routine is useful for windows that are used as
-       terminal emulators.
-
-
-</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="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>
diff --git a/Ada95/html/man/curs_overlay.3x.html b/Ada95/html/man/curs_overlay.3x.html
deleted file mode 100644 (file)
index e9c155e..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>overlay</STRONG>, <STRONG>overwrite</STRONG>, <STRONG>copywin</STRONG> - overlay and manipulate over-
-       lapped <STRONG>curses</STRONG> windows
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>int</STRONG> <STRONG>copywin(WINDOW</STRONG> <STRONG>*srcwin,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*dstwin,</STRONG> <STRONG>int</STRONG> <STRONG>sminrow,</STRONG>
-             <STRONG>int</STRONG> <STRONG>smincol,</STRONG> <STRONG>int</STRONG> <STRONG>dminrow,</STRONG> <STRONG>int</STRONG> <STRONG>dmincol,</STRONG> <STRONG>int</STRONG> <STRONG>dmaxrow,</STRONG>
-             <STRONG>int</STRONG> <STRONG>dmaxcol,</STRONG> <STRONG>int</STRONG> <STRONG>overlay);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> routines overlay <EM>srcwin</EM>  on  top
-       of  <EM>dstwin</EM>.   <EM>scrwin</EM> and <EM>dstwin</EM> are not required to be the
-       same size; only text where  the  two  windows  overlap  is
-       copied.  The difference is that <STRONG>overlay</STRONG> is non-destructive
-       (blanks are not copied) whereas <STRONG>overwrite</STRONG> is  destructive.
-
-       The  <STRONG>copywin</STRONG>  routine provides a finer granularity of con-
-       trol over the <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> routines.  Like in the
-       <STRONG>prefresh</STRONG> routine, a rectangle is specified in the destina-
-       tion window, (<EM>dminrow</EM>, <EM>dmincol</EM>)  and  (<EM>dmaxrow</EM>,  <EM>dmaxcol</EM>),
-       and  the  upper-left-corner coordinates of the source win-
-       dow, (<EM>sminrow</EM>, <EM>smincol</EM>).  If the argument <EM>overlay</EM> is <STRONG>true</STRONG>,
-       then copying is non-destructive, as in <STRONG>overlay</STRONG>.
-
-
-</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.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       The XSI Curses standard, Issue 4 describes these functions
-       (adding the const qualifiers).  It further specifies their
-       behavior  in  the  presence  of characters with multi-byte
-       renditions (not yet supported in this implementation).
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_pad.3x.html b/Ada95/html/man/curs_pad.3x.html
deleted file mode 100644 (file)
index d8eccd6..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>newpad</STRONG>, <STRONG>subpad</STRONG>, <STRONG>prefresh</STRONG>, <STRONG>pnoutrefresh</STRONG>, <STRONG>pechochar</STRONG> - create
-       and display <STRONG>curses</STRONG> pads
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-             <STRONG>int</STRONG> <STRONG>begin_y,</STRONG> <STRONG>int</STRONG> <STRONG>begin_x);</STRONG>
-       <STRONG>int</STRONG> <STRONG>prefresh(WINDOW</STRONG> <STRONG>*pad,</STRONG> <STRONG>int</STRONG> <STRONG>pminrow,</STRONG> <STRONG>int</STRONG> <STRONG>pmincol,</STRONG>
-             <STRONG>int</STRONG> <STRONG>sminrow,</STRONG> <STRONG>int</STRONG> <STRONG>smincol,</STRONG> <STRONG>int</STRONG> <STRONG>smaxrow,</STRONG> <STRONG>int</STRONG> <STRONG>smaxcol);</STRONG>
-       <STRONG>int</STRONG> <STRONG>pnoutrefresh(WINDOW</STRONG> <STRONG>*pad,</STRONG> <STRONG>int</STRONG> <STRONG>pminrow,</STRONG> <STRONG>int</STRONG> <STRONG>pmincol,</STRONG>
-             <STRONG>int</STRONG> <STRONG>sminrow,</STRONG> <STRONG>int</STRONG> <STRONG>smincol,</STRONG> <STRONG>int</STRONG> <STRONG>smaxrow,</STRONG> <STRONG>int</STRONG> <STRONG>smaxcol);</STRONG>
-       <STRONG>int</STRONG> <STRONG>pechochar(WINDOW</STRONG> <STRONG>*pad,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The <STRONG>newpad</STRONG> routine creates and returns a pointer to a  new
-       pad data structure with the given number of lines, <EM>nlines</EM>,
-       and columns, <EM>ncols</EM>.  A pad is like a window,  except  that
-       it is not restricted by the screen size, and is not neces-
-       sarily associated with a particular part  of  the  screen.
-       Pads can be used when a large window is needed, and only a
-       part of the window will be on  the  screen  at  one  time.
-       Automatic refreshes of pads (<EM>e</EM>.<EM>g</EM>., from scrolling or echo-
-       ing of input) do not occur.  It is not legal to call  <STRONG>wre-</STRONG>
-       <STRONG>fresh</STRONG>  with a <EM>pad</EM> as an argument; the routines <STRONG>prefresh</STRONG> or
-       <STRONG>pnoutrefresh</STRONG> should be called instead.   Note  that  these
-       routines require additional parameters to specify the part
-       of the pad to be displayed and the location on the  screen
-       to be used for the display.
-
-       The <STRONG>subpad</STRONG> routine creates and returns a pointer to a sub-
-       window within a  pad  with  the  given  number  of  lines,
-       <EM>nlines</EM>,  and  columns,  <EM>ncols</EM>.   Unlike <STRONG>subwin</STRONG>, which uses
-       screen coordinates, the window is  at  position  (<EM>begin</EM>_<EM>x</EM><STRONG>,</STRONG>
-       <EM>begin</EM>_<EM>y</EM>)  on the pad.  The window is made in the middle of
-       the window <EM>orig</EM>, so that changes made to one window affect
-       both  windows.   During  the  use of this routine, it will
-       often be necessary to call <STRONG>touchwin</STRONG> or <STRONG>touchline</STRONG>  on  <EM>orig</EM>
-       before calling <STRONG>prefresh</STRONG>.
-
-       The  <STRONG>prefresh</STRONG>  and  <STRONG>pnoutrefresh</STRONG> routines are analogous to
-       <STRONG>wrefresh</STRONG> and <STRONG>wnoutrefresh</STRONG> except that they relate to  pads
-       instead  of windows.  The additional parameters are needed
-       to indicate what part of the pad and screen are  involved.
-       <EM>pminrow</EM>  and <EM>pmincol</EM> specify the upper left-hand corner of
-       the rectangle to be displayed in the pad.  <EM>sminrow</EM>,  <EM>smin-</EM>
-       <EM>col</EM>, <EM>smaxrow</EM>, and <EM>smaxcol</EM> specify the edges of the rectan-
-       gle to be displayed on the screen.  The  lower  right-hand
-       corner of the rectangle to be displayed in the pad is cal-
-       culated from the screen coordinates, since the  rectangles
-       must  be  the same size.  Both rectangles must be entirely
-       treated as if they were zero.
-
-       The <STRONG>pechochar</STRONG> routine is functionally equivalent to a call
-       to  <STRONG>addch</STRONG>  followed by a call to <STRONG>refresh</STRONG>, a call to <STRONG>waddch</STRONG>
-       followed by a call to <STRONG>wrefresh</STRONG>, or a call to  <STRONG>waddch</STRONG>  fol-
-       lowed  by  a  call  to <STRONG>prefresh.</STRONG> The knowledge that only a
-       single character is being output is taken into  considera-
-       tion  and, for non-control characters, a considerable per-
-       formance gain  might  be  seen  by  using  these  routines
-       instead  of  their equivalents.  In the case of <STRONG>pechochar</STRONG>,
-       the last location of the pad on the screen is  reused  for
-       the arguments to <STRONG>prefresh</STRONG>.
-
-
-</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.
-
-       Routines  that  return  pointers return <STRONG>NULL</STRONG> on error, and
-       set <STRONG>errno</STRONG> to <STRONG>ENOMEM</STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that <STRONG>pechochar</STRONG> may be a macro.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       The XSI Curses standard, Issue  4  describes  these  func-
-       tions.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>,        <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>,       <STRONG><A HREF="curs_touch.3x.html">curs_touch(3X)</A></STRONG>,
-       <STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_printw.3x.html b/Ada95/html/man/curs_printw.3x.html
deleted file mode 100644 (file)
index a50bad3..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-<HTML>
-<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
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>int</STRONG> <STRONG>mvprintw(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*fmt</STRONG> [<STRONG>,</STRONG> <STRONG>arg</STRONG>] <STRONG>...);</STRONG>
-       <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><varargs.h></STRONG>
-       <STRONG>int</STRONG> <STRONG>vwprintw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>varglist);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The <STRONG>printw</STRONG>, <STRONG>wprintw</STRONG>, <STRONG>mvprintw</STRONG> and <STRONG>mvwprintw</STRONG>  routines  are
-       analogous  to  <STRONG>printf</STRONG>  [see  <STRONG><A HREF="printf.3s.html">printf(3S)</A></STRONG>].   In effect, the
-       string that would be output by <STRONG>printf</STRONG> is output instead as
-       though <STRONG>waddstr</STRONG> were used on the given window.
-
-       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><varargs.h></STRONG>.
-
-
-</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.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       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><stdarg.h></STRONG> interface.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="printf.3s.html">printf(3S)</A></STRONG>, <STRONG>vprintf(3S)</STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_refresh.3x.html b/Ada95/html/man/curs_refresh.3x.html
deleted file mode 100644 (file)
index 51a6a3b..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<HTML>
-<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
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
-       <STRONG>int</STRONG> <STRONG>refresh(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wrefresh(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wnoutrefresh(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>int</STRONG> <STRONG>doupdate(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>redrawwin(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wredrawln(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>beg_line,</STRONG> <STRONG>int</STRONG> <STRONG>num_lines);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The <STRONG>refresh</STRONG> and <STRONG>wrefresh</STRONG>  routines  (or  <STRONG>wnoutrefresh</STRONG>  and
-       <STRONG>doupdate</STRONG>)  must be called to get actual output to the ter-
-       minal, as other routines  merely  manipulate  data  struc-
-       tures.   The  routine  <STRONG>wrefresh</STRONG> copies the named window to
-       the physical terminal screen, taking into account what  is
-       already  there  in order to do optimizations.  The <STRONG>refresh</STRONG>
-       routine is the same, using <STRONG>stdscr</STRONG> as the  default  window.
-       Unless  <STRONG>leaveok</STRONG>  has  been enabled, the physical cursor of
-       the terminal is left at the location  of  the  cursor  for
-       that window.
-
-       The  <STRONG>wnoutrefresh</STRONG>  and  <STRONG>doupdate</STRONG>  routines  allow multiple
-       updates with more  efficiency  than  <STRONG>wrefresh</STRONG>  alone.   In
-       addition  to  all  the window structures, <STRONG>curses</STRONG> keeps two
-       data structures representing the terminal screen: a physi-
-       cal screen, describing what is actually on the screen, and
-       a virtual screen, describing what the programmer wants  to
-       have on the screen.
-
-       The  routine <STRONG>wrefresh</STRONG> works by first calling <STRONG>wnoutrefresh</STRONG>,
-       which copies the named window to the virtual  screen,  and
-       then  calling  <STRONG>doupdate</STRONG>, which compares the virtual screen
-       to the physical screen and does the actual update.  If the
-       programmer  wishes  to  output  several windows at once, a
-       series of calls to <STRONG>wrefresh</STRONG> results in  alternating  calls
-       to  <STRONG>wnoutrefresh</STRONG>  and  <STRONG>doupdate</STRONG>, causing several bursts of
-       output to the screen.  By first calling  <STRONG>wnoutrefresh</STRONG>  for
-       each  window,  it  is then possible to call <STRONG>doupdate</STRONG> once,
-       resulting in only one burst of output,  with  fewer  total
-       characters transmitted and less CPU time used.  If the <EM>win</EM>
-       argument to <STRONG>wrefresh</STRONG> is the global  variable  <STRONG>curscr</STRONG>,  the
-       screen  is immediately cleared and repainted from scratch.
-
-       The phrase "copies the named window to the virtual screen"
-       above  is  ambiguous.   What  actually happens is that all
-       <EM>touched</EM> (changed) lines in the window are  copied  to  the
-       virtual  screen.   This affects programs that use overlap-
-       ping windows; it means that if two  windows  overlap,  you
-       see  the  section on <STRONG>PORTABILITY</STRONG> below for a warning about
-       exploiting this behavior.)
-
-       The <STRONG>wredrawln</STRONG> routine indicates to <STRONG>curses</STRONG> that some screen
-       lines  are corrupted and should be thrown away before any-
-       thing is written over  them.   It  touches  the  indicated
-       lines  (marking  them  changed).   The routine <STRONG>redrawwin</STRONG>()
-       touches the entire window.
-
-
-</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.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that <STRONG>refresh</STRONG> and <STRONG>redrawwin</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       The XSI Curses standard, Issue  4  describes  these  func-
-       tions.
-
-       Whether  <STRONG>wnoutrefresh()</STRONG>  copies  to the virtual screen the
-       entire contents of a window or just its  changed  portions
-       has never been well-documented in historic curses versions
-       (including SVr4).  It might be unwise to  rely  on  either
-       behavior  in  programs  that  might have to be linked with
-       other curses implementations.   Instead,  you  can  do  an
-       explicit  <STRONG>touchwin()</STRONG>  before  the  <STRONG>wnoutrefresh()</STRONG>  call to
-       guarantee an entire-contents copy anywhere.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_scanw.3x.html b/Ada95/html/man/curs_scanw.3x.html
deleted file mode 100644 (file)
index 521d3c2..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-<HTML>
-<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
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>int</STRONG> <STRONG>mvscanw(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*fmt</STRONG> [<STRONG>,</STRONG> <STRONG>arg</STRONG>] <STRONG>...);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwscanw(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>...);</STRONG>
-       <STRONG>int</STRONG> <STRONG>vwscanw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>va_list</STRONG> <STRONG>varglist);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG> and <STRONG>mvscanw</STRONG> routines  are  analogous  to
-       <STRONG>scanf</STRONG> [see <STRONG><A HREF="scanf.3s.html">scanf(3S)</A></STRONG>].  The effect of these routines is as
-       though <STRONG>wgetstr</STRONG> were called on the window, and the  result-
-       ing line used as input for <STRONG><A HREF="sscanf.3.html">sscanf(3)</A></STRONG>.  Fields which do not
-       map to a variable in the <EM>fmt</EM> field are lost.
-
-       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><varargs.h></STRONG>.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       <STRONG>vwscanw</STRONG> returns <STRONG>ERR</STRONG> on failure and an integer equal to the
-       number of fields scanned on success.
-
-       Applications may use the  return  value  from  the  <STRONG>scanw</STRONG>,
-       <STRONG>wscanw</STRONG>,  <STRONG>mvscanw</STRONG>  and  <STRONG>mvwscanw</STRONG>  routines to determine the
-       number of fields which were mapped in the call.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       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><stdarg.h></STRONG> interface.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG>, <STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG>, <STRONG><A HREF="scanf.3s.html">scanf(3S)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_scr_dmp.3x.html b/Ada95/html/man/curs_scr_dmp.3x.html
deleted file mode 100644 (file)
index 5c61339..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<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>
diff --git a/Ada95/html/man/curs_scr_dump.3x.html b/Ada95/html/man/curs_scr_dump.3x.html
deleted file mode 100644 (file)
index 5c61339..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<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>
diff --git a/Ada95/html/man/curs_scroll.3x.html b/Ada95/html/man/curs_scroll.3x.html
deleted file mode 100644 (file)
index c8908a5..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<HTML>
-<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><curses.h></STRONG>
-
-       <STRONG>int</STRONG> <STRONG>scroll(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>int</STRONG> <STRONG>scrl(int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wscrl(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  <STRONG>scroll</STRONG>  routine scrolls the window up one line.  This
-       involves moving the lines in the  window  data  structure.
-       As  an optimization, if the scrolling region of the window
-       is the entire screen, the physical screen may be  scrolled
-       at the same time.
-
-       For  positive  <EM>n</EM>,  the  <STRONG>scrl</STRONG> and <STRONG>wscrl</STRONG> routines scroll the
-       window up <EM>n</EM> lines (line <EM>i</EM>+<EM>n</EM> becomes <EM>i</EM>);  otherwise  scroll
-       the  window  down <EM>n</EM> lines.  This involves moving the lines
-       in the window character image structure.  The current cur-
-       sor position is not changed.
-
-       For these functions to work, scrolling must be enabled via
-       <STRONG>scrollok</STRONG>.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       These routines return <STRONG>ERR</STRONG> upon failure, and <STRONG>OK</STRONG> (SVr4  only
-       specifies "an integer value other than <STRONG>ERR</STRONG>") upon success-
-       ful completion.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that <STRONG>scrl</STRONG> and <STRONG>scroll</STRONG> may be macros.
-
-       The SVr4 documentation says that the optimization of phys-
-       ically  scrolling  immediately if the scroll region is the
-       entire screen "is"  performed,  not  "may  be"  performed.
-       This  implementation  deliberately does not guarantee that
-       this will occur, in order to leave open the possibility of
-       smarter  optimization  of  multiple  scroll actions on the
-       next update.
-
-       Neither the SVr4 documentation specifies whether the  cur-
-       rent  attribute  or current color-pair of blanks generated
-       by the scroll function is zeroed.  Under this  implementa-
-       tion it is.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       The  XSI  Curses  standard,  Issue 4 describes these func-
-       tions.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_slk.3x.html b/Ada95/html/man/curs_slk.3x.html
deleted file mode 100644 (file)
index d76728a..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<HTML>
-<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>slk_color</STRONG>  - <STRONG>curses</STRONG> soft label
-       routines
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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_refresh(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>slk_noutrefresh(void);</STRONG>
-       <STRONG>char</STRONG> <STRONG>*slk_label(int</STRONG> <STRONG>labnum);</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(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(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
-       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
-       ncurses simulates this mode by taking over up to two lines
-       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
-       <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>
-       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
-       to identify the key numbers easily.
-
-       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-
-       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_clear</STRONG> routine clears  the  soft  labels  from  the
-       screen.
-
-       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
-       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
-       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
-       the soft keys.
-
-       <STRONG>slk_label</STRONG> returns <STRONG>NULL</STRONG> on error.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Most applications would use <STRONG>slk_noutrefresh</STRONG> because a <STRONG>wre-</STRONG>
-       <STRONG>fresh</STRONG> is likely to follow soon.
-
-
-</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
-       <STRONG>slk_attr</STRONG> are specific to ncurses.
-
-
-</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_initscr.3x.html">curs_initscr(3X)</A></STRONG>,
-       <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_termattrs.3x.html b/Ada95/html/man/curs_termattrs.3x.html
deleted file mode 100644 (file)
index fcc417a..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<HTML>
-<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
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
-       <STRONG>int</STRONG> <STRONG>baudrate(void);</STRONG>
-       <STRONG>char</STRONG> <STRONG>erasechar(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>has_ic(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>has_il(void);</STRONG>
-       <STRONG>char</STRONG> <STRONG>killchar(void);</STRONG>
-       <STRONG>char</STRONG> <STRONG>*longname(void);</STRONG>
-       <STRONG>attr_t</STRONG> <STRONG>termattrs(void);</STRONG>
-       <STRONG>char</STRONG> <STRONG>*termname(void);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The <STRONG>baudrate</STRONG> routine returns the output speed of the  ter-
-       minal.   The  number  returned  is in bits per second, for
-       example <STRONG>9600</STRONG>, and is an integer.
-
-       The <STRONG>erasechar</STRONG> routine returns  the  user's  current  erase
-       character.
-
-       The <STRONG>has_ic</STRONG> routine is true if the terminal has insert- and
-       delete- character capabilities.
-
-       The <STRONG>has_il</STRONG> routine is true if the terminal has insert- and
-       delete-line  capabilities,  or  can  simulate  them  using
-       scrolling regions.  This might be used to determine if  it
-       would  be  appropriate to turn on physical scrolling using
-       <STRONG>scrollok</STRONG>.
-
-       The <STRONG>killchar</STRONG> routine returns the user's current line  kill
-       character.
-
-       The  <STRONG>longname</STRONG>  routine  returns a pointer to a static area
-       containing a verbose description of the current  terminal.
-       The maximum length of a verbose description is 128 charac-
-       ters.  It is defined only after the  call  to  <STRONG>initscr</STRONG>  or
-       <STRONG>newterm</STRONG>.   The area is overwritten by each call to <STRONG>newterm</STRONG>
-       and is not restored by <STRONG>set_term</STRONG>, so the  value  should  be
-       saved  between calls to <STRONG>newterm</STRONG> if <STRONG>longname</STRONG> is going to be
-       used with multiple terminals.
-
-       If a given terminal doesn't support a video attribute that
-       an  application  program is trying to use, <STRONG>curses</STRONG> may sub-
-       stitute a different video attribute for it.  The <STRONG>termattrs</STRONG>
-       function returns a logical <STRONG>OR</STRONG> of all video attributes sup-
-       ported by the terminal.  This information is useful when a
-       <STRONG>curses</STRONG>  program needs complete control over the appearance
-       of the screen.
-
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       <STRONG>longname</STRONG> and <STRONG>termname</STRONG> return <STRONG>NULL</STRONG> on error.
-
-       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.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that <STRONG>termattrs</STRONG> may be a macro.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       The XSI Curses standard, Issue  4  describes  these  func-
-       tions.  It changes the return type of <STRONG>termattrs</STRONG> to the new
-       type <STRONG>attr_t</STRONG>.
-
-
-</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_outopts.3x.html">curs_outopts(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_termcap.3x.html b/Ada95/html/man/curs_termcap.3x.html
deleted file mode 100644 (file)
index 62830ae..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-<HTML>
-<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
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>char</STRONG> <STRONG>*tgetstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*id,</STRONG> <STRONG>char</STRONG> <STRONG>**area);</STRONG>
-       <STRONG>char</STRONG> <STRONG>*tgoto(const</STRONG> <STRONG>char</STRONG> <STRONG>*cap,</STRONG> <STRONG>int</STRONG> <STRONG>col,</STRONG> <STRONG>int</STRONG> <STRONG>row);</STRONG>
-       <STRONG>int</STRONG> <STRONG>tputs(const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>affcnt,</STRONG> <STRONG>int</STRONG> <STRONG>(*putc)(int));</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These routines are included as a conversion aid  for  pro-
-       grams  that use the <EM>termcap</EM> library.  Their parameters are
-       the same and the routines are emulated using the  <EM>terminfo</EM>
-       database.   Thus, they can only be used to query the capa-
-       bilities of entries for which a terminfo  entry  has  been
-       compiled.
-
-       The  <STRONG>tgetent</STRONG> routine loads the entry for <EM>name</EM>.  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 <EM>bp</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>, or -1
-       if it is not available.
-
-       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
-       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>
-       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
-       completion.
-
-       Routines that return pointers return <STRONG>NULL</STRONG> on error.
-       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.
-
-       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
-       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
-       all three were in fact returned ever since SVr1.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="putc.3s.html">putc(3S)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_terminfo.3x.html b/Ada95/html/man/curs_terminfo.3x.html
deleted file mode 100644 (file)
index 2f90578..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-<HTML>
-<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>,
-       <STRONG>tigetnum</STRONG>,   <STRONG>tigetstr</STRONG>   -  <STRONG>curses</STRONG>  interfaces  to  terminfo
-       database
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>TERMINAL</STRONG> <STRONG>*set_curterm(TERMINAL</STRONG> <STRONG>*nterm);</STRONG>
-       <STRONG>int</STRONG> <STRONG>del_curterm(TERMINAL</STRONG> <STRONG>*oterm);</STRONG>
-       <STRONG>int</STRONG>  <STRONG>restartterm(const</STRONG>  <STRONG>char</STRONG>  <STRONG>*term,</STRONG>   <STRONG>int</STRONG>   <STRONG>fildes,</STRONG>   <STRONG>int</STRONG>
-       <STRONG>*errret);</STRONG>
-       <STRONG>char</STRONG> <STRONG>*tparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>...);</STRONG>
-       <STRONG>int</STRONG> <STRONG>tputs(const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>affcnt,</STRONG> <STRONG>int</STRONG> <STRONG>(*putc)(int));</STRONG>
-       <STRONG>int</STRONG> <STRONG>putp(const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
-       <STRONG>int</STRONG> <STRONG>vidputs(chtype</STRONG> <STRONG>attrs,</STRONG> <STRONG>int</STRONG> <STRONG>(*putc)(char));</STRONG>
-       <STRONG>int</STRONG> <STRONG>vidattr(chtype</STRONG> <STRONG>attrs);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvcur(int</STRONG> <STRONG>oldrow,</STRONG> <STRONG>int</STRONG> <STRONG>oldcol,</STRONG> <STRONG>int</STRONG> <STRONG>newrow,</STRONG> <STRONG>int</STRONG> <STRONG>newcol);</STRONG>
-       <STRONG>int</STRONG> <STRONG>tigetflag(const</STRONG> <STRONG>char</STRONG> <STRONG>*capname);</STRONG>
-       <STRONG>int</STRONG> <STRONG>tigetnum(const</STRONG> <STRONG>char</STRONG> <STRONG>*capname);</STRONG>
-       <STRONG>char</STRONG> <STRONG>*tigetstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*capname);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These low-level routines must be called by  programs  that
-       have to deal directly with the <STRONG>terminfo</STRONG> database to handle
-       certain terminal capabilities, such as  programming  func-
-       tion  keys.   For all other functionality, <STRONG>curses</STRONG> routines
-       are more suitable and their use is recommended.
-
-       Initially,  <STRONG>setupterm</STRONG>  should  be   called.    Note   that
-       <STRONG>setupterm</STRONG>  is automatically called by <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG>.
-       This  defines  the  set  of  terminal-dependent  variables
-       [listed in <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>].  The <STRONG>terminfo</STRONG> variables <STRONG>lines</STRONG> and
-       <STRONG>columns</STRONG>  are  initialized  by  <STRONG>setupterm</STRONG>  as  follows:  If
-       <STRONG>use_env(FALSE)</STRONG>  has  been  called,  values  for  <STRONG>lines</STRONG> and
-       <STRONG>columns</STRONG> specified in <STRONG>terminfo</STRONG> are used.  Otherwise, if the
-       environment  variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> exist, their val-
-       ues are used.  If these environment variables do not exist
-       and the program is running in a window, the current window
-       size is used.  Otherwise, if the environment variables  do
-       not  exist,  the values for <STRONG>lines</STRONG> and <STRONG>columns</STRONG> specified in
-       the <STRONG>terminfo</STRONG> database are used.
-
-       The header files <STRONG>curses.h</STRONG> and <STRONG>term.h</STRONG>  should  be  included
-       (in  this order) to get the definitions for these strings,
-       numbers,  and  flags.   Parameterized  strings  should  be
-       passed  through  <STRONG>tparm</STRONG>  to instantiate them.  All <STRONG>terminfo</STRONG>
-       strings [including the output of <STRONG>tparm</STRONG>] should be  printed
-       with  <STRONG>tputs</STRONG> or <STRONG>putp</STRONG>.  Call the <STRONG>reset_shell_mode</STRONG> to restore
-       <STRONG>enter_ca_mode</STRONG> upon startup and should output  <STRONG>exit_ca_mode</STRONG>
-       before  exiting.   Programs  desiring shell escapes should
-       call
-
-       <STRONG>reset_shell_mode</STRONG> and output <STRONG>exit_ca_mode</STRONG> before the  shell
-       is   called  and  should  output  <STRONG>enter_ca_mode</STRONG>  and  call
-       <STRONG>reset_prog_mode</STRONG> after returning from the shell.
-
-       The <STRONG>setupterm</STRONG> routine reads in the <STRONG>terminfo</STRONG> database, ini-
-       tializing the <STRONG>terminfo</STRONG> structures, but does not set up the
-       output virtualization structures used by <STRONG>curses</STRONG>.  The ter-
-       minal  type is the character string <EM>term</EM>; if <EM>term</EM> is null,
-       the environment variable <STRONG>TERM</STRONG> is used.  All output  is  to
-       file  descriptor  <STRONG>fildes</STRONG>  which is initialized for output.
-       If <EM>errret</EM> is not null, then <STRONG>setupterm</STRONG> returns  <STRONG>OK</STRONG>  or  <STRONG>ERR</STRONG>
-       and  stores  a  status  value in the integer pointed to by
-       <EM>errret</EM>.  A status of <STRONG>1</STRONG> in <EM>errret</EM> is normal, <STRONG>0</STRONG>  means  that
-       the  terminal  could  not  be found, and <STRONG>-1</STRONG> means that the
-       <STRONG>terminfo</STRONG> database could not be found.  If <EM>errret</EM> is  null,
-       <STRONG>setupterm</STRONG>  prints  an  error message upon finding an error
-       and exits.  Thus, the simplest call is:
-
-             <STRONG>setupterm((char</STRONG> <STRONG>*)0,</STRONG> <STRONG>1,</STRONG> <STRONG>(int</STRONG> <STRONG>*)0);</STRONG>,
-
-       which uses all the defaults and sends the output  to  <STRONG>std-</STRONG>
-       <STRONG>out</STRONG>.
-
-       The  <STRONG>setterm</STRONG>  routine is being replaced by <STRONG>setupterm</STRONG>.  The
-       call:
-
-             <STRONG>setupterm(</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>1,</STRONG> <STRONG>(int</STRONG> <STRONG>*)0)</STRONG>
-
-       provides the same  functionality  as  <STRONG>setterm(</STRONG><EM>term</EM><STRONG>)</STRONG>.   The
-       <STRONG>setterm</STRONG>  routine  is  included here for BSD compatibility,
-       and is not recommended for new programs.
-
-       The <STRONG>set_curterm</STRONG> routine  sets  the  variable  <STRONG>cur_term</STRONG>  to
-       <EM>nterm</EM>, and makes all of the <STRONG>terminfo</STRONG> boolean, numeric, and
-       string variables use the values from  <EM>nterm</EM>.   It  returns
-       the old value of <STRONG>cur_term</STRONG>.
-
-       The  <STRONG>del_curterm</STRONG>  routine  frees  the  space pointed to by
-       <EM>oterm</EM> and makes it available for further use.  If <EM>oterm</EM> is
-       the  same  as  <STRONG>cur_term</STRONG>, references to any of the <STRONG>terminfo</STRONG>
-       boolean, numeric,  and  string  variables  thereafter  may
-       refer  to invalid memory locations until another <STRONG>setupterm</STRONG>
-       has been called.
-
-       The  <STRONG>restartterm</STRONG>  routine  is  similar  to  <STRONG>setupterm</STRONG>  and
-       <STRONG>initscr</STRONG>,  except  that it is called after restoring memory
-       to a previous state (for example, when  reloading  a  game
-       saved  as a core image dump).  It assumes that the windows
-       be different.  Accordingly, it  saves  various  tty  state
-       bits, does a setupterm, and then restores the bits.
-
-       The <STRONG>tparm</STRONG> routine instantiates the string <EM>str</EM> with parame-
-       ters <EM>pi</EM>.  A pointer is returned to the result of <EM>str</EM>  with
-       the parameters applied.
-
-       The  <STRONG>tputs</STRONG>  routine  applies  padding  information  to the
-       string <EM>str</EM> and outputs it.  The <EM>str</EM>  must  be  a  terminfo
-       string  variable  or the return value from <STRONG>tparm</STRONG>, <STRONG>tgetstr</STRONG>,
-       or <STRONG>tgoto</STRONG>.  <EM>affcnt</EM> is the number of lines affected, or 1 if
-       not  applicable.   <EM>putc</EM> is a <STRONG>putchar</STRONG>-like routine to which
-       the characters are passed, one at a time.
-
-       The <STRONG>putp</STRONG> routine calls <STRONG>tputs(</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>1,</STRONG> <STRONG>putchar)</STRONG>.  Note  that
-       the  output  of  <STRONG>putp</STRONG>  always  goes  to <STRONG>stdout</STRONG>, not to the
-       <EM>fildes</EM> specified in <STRONG>setupterm</STRONG>.
-
-       The <STRONG>vidputs</STRONG> routine displays the string on the terminal in
-       the  video  attribute mode <EM>attrs</EM>, which is any combination
-       of the attributes listed in  <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>.   The  characters
-       are passed to the <STRONG>putchar</STRONG>-like routine <EM>putc</EM>.
-
-       The  <STRONG>vidattr</STRONG>  routine  is like the <STRONG>vidputs</STRONG> routine, except
-       that it outputs through <STRONG>putchar</STRONG>.
-
-       The <STRONG>mvcur</STRONG> routine provides low-level  cursor  motion.   It
-       takes   effect   immediately  (rather  than  at  the  next
-       refresh).
-
-       The <STRONG>tigetflag</STRONG>, <STRONG>tigetnum</STRONG> and <STRONG>tigetstr</STRONG> routines  return  the
-       value of the capability corresponding to the <STRONG>terminfo</STRONG> <EM>cap-</EM>
-       <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,  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,  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, 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
-       <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
-
-       <STRONG>char</STRONG> <STRONG>*boolnames</STRONG>, <STRONG>*boolcodes</STRONG>, <STRONG>*boolfnames</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
-       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
-       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
-       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
-       XSI Curses semantics.
-
-       In System V Release 4, the third argument of <STRONG>tputs</STRONG> has the
-       type <STRONG>int</STRONG> <STRONG>(*putc)(char)</STRONG>.
-
-       The XSI Curses standard prototypes <STRONG>tparm</STRONG> with a fixed num-
-       ber of parameters, rather than a variable argument list.
-
-
-</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="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>
diff --git a/Ada95/html/man/curs_touch.3x.html b/Ada95/html/man/curs_touch.3x.html
deleted file mode 100644 (file)
index 1f558bf..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-<HTML>
-<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
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>int</STRONG> <STRONG>wtouchln(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>n,</STRONG> <STRONG>int</STRONG> <STRONG>changed);</STRONG>
-       <STRONG>int</STRONG> <STRONG>is_linetouched(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>line);</STRONG>
-       <STRONG>int</STRONG> <STRONG>is_wintouched(WINDOW</STRONG> <STRONG>*win);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The <STRONG>touchwin</STRONG> and <STRONG>touchline</STRONG> routines throw away  all  opti-
-       mization  information about which parts of the window have
-       been touched, by pretending that  the  entire  window  has
-       been  drawn  on.   This  is sometimes necessary when using
-       overlapping windows, since a change to one window  affects
-       the other window, but the records of which lines have been
-       changed in the other window do  not  reflect  the  change.
-       The  routine <STRONG>touchline</STRONG> only pretends that <EM>count</EM> lines have
-       been changed, beginning with line <EM>start</EM>.
-
-       The <STRONG>untouchwin</STRONG> routine marks all lines in  the  window  as
-       unchanged since the last call to <STRONG>wrefresh</STRONG>.
-
-       The <STRONG>wtouchln</STRONG> routine makes <EM>n</EM> lines in the window, starting
-       at line <EM>y</EM>, look as if they have (<EM>changed</EM><STRONG>=1</STRONG>)  or  have  not
-       (<EM>changed</EM><STRONG>=0</STRONG>)  been changed since the last call to <STRONG>wrefresh</STRONG>.
-
-       The <STRONG>is_linetouched</STRONG> and <STRONG>is_wintouched</STRONG> routines return  <STRONG>TRUE</STRONG>
-       if  the  specified line/window was modified since the last
-       call to <STRONG>wrefresh</STRONG>; otherwise they return <STRONG>FALSE</STRONG>.   In  addi-
-       tion,  <STRONG>is_linetouched</STRONG> returns <STRONG>ERR</STRONG> if <EM>line</EM> is not valid for
-       the given window.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon  failure  and  an
-       integer  value  other than <STRONG>ERR</STRONG> upon successful completion,
-       unless otherwise noted in the preceding  routine  descrip-
-       tions.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       The  XSI  Curses  standard,  Issue 4 describes these func-
-       tions.
-
-       Some historic curses implementations had,  as  an  undocu-
-       mented  feature,  the  ability  to  do  the  equivalent of
-       <STRONG>clearok(...,</STRONG> <STRONG>1)</STRONG> by saying <STRONG>touchwin(stdscr)</STRONG>  or  <STRONG>clear(std-</STRONG>
-       <STRONG>scr)</STRONG>.  This will not work under ncurses.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_util.3x.html b/Ada95/html/man/curs_util.3x.html
deleted file mode 100644 (file)
index e6d8f74..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<HTML>
-<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-
-       tines
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>
-       <STRONG>void</STRONG> <STRONG>filter(void);</STRONG>
-       <STRONG>void</STRONG> <STRONG>use_env(char</STRONG> <STRONG>bool);</STRONG>
-       <STRONG>int</STRONG> <STRONG>putwin(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>FILE</STRONG> <STRONG>*filep);</STRONG>
-       <STRONG>WINDOW</STRONG> <STRONG>*getwin(FILE</STRONG> <STRONG>*filep);</STRONG>
-       <STRONG>int</STRONG> <STRONG>delay_output(int</STRONG> <STRONG>ms);</STRONG>
-       <STRONG>int</STRONG> <STRONG>flushinp(void);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  <STRONG>unctrl</STRONG> macro expands to a character string which is a
-       printable representation  of  the  character  <EM>c</EM>.   Control
-       characters  are  displayed  in  the <STRONG>^</STRONG><EM>X</EM> notation.  Printing
-       characters are displayed as is.
-
-       The <STRONG>keyname</STRONG> routine returns a character string correspond-
-       ing to the key <EM>c</EM>.
-
-       The <STRONG>filter</STRONG> routine, if used, must be called before <STRONG>initscr</STRONG>
-       or <STRONG>newterm</STRONG> are called.  The effect is that,  during  those
-       calls,  <STRONG>LINES</STRONG>  is  set  to 1; the capabilities <STRONG>clear</STRONG>, <STRONG>cup</STRONG>,
-       <STRONG>cud</STRONG>, <STRONG>cud1</STRONG>, <STRONG>cuu1</STRONG>, <STRONG>cuu</STRONG>,  <STRONG>vpa</STRONG>  are  disabled;  and  the  <STRONG>home</STRONG>
-       string is set to the value of <STRONG>cr</STRONG>.
-
-       The  <STRONG>use_env</STRONG> routine, if used, is called before <STRONG>initscr</STRONG> or
-       <STRONG>newterm</STRONG> are called.  When called with <STRONG>FALSE</STRONG>  as  an  argu-
-       ment,  the  values  of  <STRONG>lines</STRONG> and <STRONG>columns</STRONG> specified in the
-       <EM>terminfo</EM> database will be used, even if environment  vari-
-       ables  <STRONG>LINES</STRONG>  and <STRONG>COLUMNS</STRONG> (used by default) are set, or if
-       <STRONG>curses</STRONG> is running in  a  window  (in  which  case  default
-       behavior  would  be  to  use  the window size if <STRONG>LINES</STRONG> and
-       <STRONG>COLUMNS</STRONG> are not set).
-
-       The <STRONG>putwin</STRONG> routine writes all data associated with  window
-       <EM>win</EM> into the file to which <EM>filep</EM> points.  This information
-       can be later retrieved using the <STRONG>getwin</STRONG> function.
-
-       The <STRONG>getwin</STRONG> routine reads window related data stored in the
-       file  by <STRONG>putwin</STRONG>.  The routine then creates and initializes
-       a new window using that data.  It returns a pointer to the
-       new window.
-
-       The  <STRONG>delay_output</STRONG>  routine inserts an <EM>ms</EM> millisecond pause
-       in output.  This routine should not  be  used  extensively
-       because  padding  characters  are  used  rather than a CPU
-       been  typed  by  the user and has not yet been read by the
-       program.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Except for  <STRONG>flushinp</STRONG>,  routines  that  return  an  integer
-       return  <STRONG>ERR</STRONG>  upon  failure and <STRONG>OK</STRONG> (SVr4 specifies only "an
-       integer value other than <STRONG>ERR</STRONG>") upon successful completion.
-
-       <STRONG>flushinp</STRONG> always returns <STRONG>OK</STRONG>.
-
-       Routines that return pointers return <STRONG>NULL</STRONG> on error.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       The  XSI  Curses  standard,  Issue 4 describes these func-
-       tions.
-
-       The SVr4 documentation describes the action of <STRONG>filter</STRONG> only
-       in  the  vaguest  terms.   The description here is adapted
-       from the XSI Curses standard (which erroneously  fails  to
-       describe the disabling of <STRONG>cuu</STRONG>).
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note  that  <STRONG>unctrl</STRONG>  is  a macro, which is defined in <<STRONG>unc-</STRONG>
-       <STRONG>trl.h</STRONG>>.
-
-
-</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_scr_dump.3x.html">curs_scr_dump(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/curs_window.3x.html b/Ada95/html/man/curs_window.3x.html
deleted file mode 100644 (file)
index c4e2738..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-<HTML>
-<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>
-       windows
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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>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>
-             <STRONG>int</STRONG> <STRONG>begin_y,</STRONG> <STRONG>int</STRONG> <STRONG>begin_x);</STRONG>
-       <STRONG>WINDOW</STRONG> <STRONG>*derwin(WINDOW</STRONG> <STRONG>*orig,</STRONG> <STRONG>int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols,</STRONG>
-             <STRONG>int</STRONG> <STRONG>begin_y,</STRONG> <STRONG>int</STRONG> <STRONG>begin_x);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvderwin(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>par_y,</STRONG> <STRONG>int</STRONG> <STRONG>par_x);</STRONG>
-       <STRONG>WINDOW</STRONG> <STRONG>*dupwin(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>void</STRONG> <STRONG>wsyncup(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>int</STRONG> <STRONG>syncok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>void</STRONG> <STRONG>wcursyncup(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>void</STRONG> <STRONG>wsyncdown(WINDOW</STRONG> <STRONG>*win);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       Calling <STRONG>newwin</STRONG> creates and returns a pointer to a new win-
-       dow with the given number of lines and columns.  The upper
-       left-hand  corner of the window is at line <EM>begin</EM>_<EM>y</EM>, column
-       <EM>begin</EM>_<EM>x</EM>.  If either <EM>nlines</EM> or <EM>ncols</EM> is zero, they  default
-       to  <STRONG>LINES</STRONG> <STRONG>-</STRONG> <EM>begin</EM>_<EM>y</EM> and <STRONG>COLS</STRONG> <STRONG>-</STRONG> <EM>begin</EM>_<EM>x</EM>.  A new full-screen
-       window is created by calling <STRONG>newwin(0,0,0,0)</STRONG>.
-
-       Calling <STRONG>delwin</STRONG> deletes the named window, freeing all  mem-
-       ory  associated  with  it  (it does not actually erase the
-       window's screen image).  Subwindows must be deleted before
-       the main window can be deleted.
-
-       Calling <STRONG>mvwin</STRONG> moves the window so that the upper left-hand
-       corner is at position (<EM>x</EM>, <EM>y</EM>).  If the move would cause the
-       window to be off the screen, it is an error and the window
-       is not moved.  Moving subwindows is allowed, but should be
-       avoided.
-
-       Calling <STRONG>subwin</STRONG> creates and returns a pointer to a new win-
-       dow with the given number of lines, <EM>nlines</EM>,  and  columns,
-       <EM>ncols</EM>.   The  window  is at position (<EM>begin</EM>_<EM>y</EM>, <EM>begin</EM>_<EM>x</EM>) on
-       the screen.  (This position is relative to the screen, and
-       not to the window <EM>orig</EM>.)  The window is made in the middle
-       of the window <EM>orig</EM>, so that changes  made  to  one  window
-       will  affect  both  windows.   The subwindow shares memory
-       with the window <EM>orig</EM>.  When using this routine, it is nec-
-       essary  to call <STRONG>touchwin</STRONG> or <STRONG>touchline</STRONG> on <EM>orig</EM> before call-
-       ing <STRONG>wrefresh</STRONG> on the subwindow.
-
-       dow <EM>orig</EM> rather than the screen.  There is  no  difference
-       between the subwindows and the derived windows.
-
-       Calling  <STRONG>mvderwin</STRONG>  moves  a  derived window (or subwindow)
-       inside its parent window.  The screen-relative  parameters
-       of  the  window  are not changed.  This routine is used to
-       display different parts of the parent window at  the  same
-       physical position on the screen.
-
-       Calling  <STRONG>dupwin</STRONG>  creates  an exact duplicate of the window
-       <EM>win</EM>.
-
-       Calling <STRONG>wsyncup</STRONG> touches all locations in ancestors of  <EM>win</EM>
-       that  are changed in <EM>win</EM>.  If <STRONG>syncok</STRONG> is called with second
-       argument <STRONG>TRUE</STRONG> then <STRONG>wsyncup</STRONG> is called  automatically  when-
-       ever there is a change in the window.
-
-       The  <STRONG>wsyncdown</STRONG>  routine  touches each location in <EM>win</EM> that
-       has been touched in any of  its  ancestor  windows.   This
-       routine  is  called by <STRONG>wrefresh</STRONG>, so it should almost never
-       be necessary to call it manually.
-
-       The routine <STRONG>wcursyncup</STRONG> updates the current cursor position
-       of  all the ancestors of the window to reflect the current
-       cursor position of the window.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Routines that return an integer  return  the  integer  <STRONG>ERR</STRONG>
-       upon failure and <STRONG>OK</STRONG> (SVr4 only specifies "an integer value
-       other than <STRONG>ERR</STRONG>") upon successful completion.
-
-       <STRONG>delwin</STRONG> returns the integer <STRONG>ERR</STRONG> upon failure  and  <STRONG>OK</STRONG>  upon
-       successful completion.
-
-       Routines that return pointers return <STRONG>NULL</STRONG> on error.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       If  many small changes are made to the window, the <STRONG>wsyncup</STRONG>
-       option could degrade performance.
-
-       Note that <STRONG>syncok</STRONG> may be a macro.
-
-
-</PRE>
-<H2>BUGS</H2><PRE>
-       The subwindow functions (<EM>subwin</EM>, <EM>derwin</EM>,  <EM>mvderwin</EM>,  <STRONG>wsyn-</STRONG>
-       <STRONG>cup</STRONG>,  <STRONG>wsyncdown</STRONG>,  <STRONG>wcursyncup</STRONG>,  <STRONG>syncok</STRONG>)  are  flaky, incom-
-       pletely implemented, and not well tested.
-
-       The System V curses documentation is  very  unclear  about
-       what <STRONG>wsyncup</STRONG> and <STRONG>wsyncdown</STRONG> actually do.  It seems to imply
-       that they are only supposed to touch exactly  those  lines
-       that are affected by ancestor changes.  The language here,
-       and the behavior of the  <STRONG>curses</STRONG>  implementation,  is  pat-
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       The XSI Curses standard, Issue  4  describes  these  func-
-       tions.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>, <STRONG><A HREF="curs_touch.3x.html">curs_touch(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/dft_fgbg.3x.html b/Ada95/html/man/dft_fgbg.3x.html
deleted file mode 100644 (file)
index a19446f..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>dft_fgbg</STRONG> - use terminal's default colors
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
-       <STRONG>int</STRONG> <STRONG>use_default_colors(void);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       This  is  an  extension to the curses library.  It is used
-       with terminals that support ISO 6429 color, or equivalent.
-       These terminals allow the application to reset color to an
-       unspecified default value (e.g., with SGR 39 or  SGR  49).
-       Because  they  are  designed to support this, their design
-       usually includes features to change the default foreground
-       or background colors so that they do not match the assump-
-       tion in XSI curses of white on black.
-
-       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.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The  function  returns the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>
-       on success.  It will fail if either the terminal does  not
-       support  the  <EM>orig</EM><STRONG>_</STRONG><EM>pair</EM> or <EM>orig</EM><STRONG>_</STRONG><EM>colors</EM> capability.  If the
-       <EM>initialize</EM><STRONG>_</STRONG><EM>pair</EM> capability is found, this causes an  error
-       as well.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Associated with this extension, the <STRONG><A HREF="init_pair.3x.html">init_pair(3X)</A></STRONG> function
-       accepts negative arguments to specify  default  foreground
-       or background colors.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       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 con-
-       ditioned using NCURSES_VERSION.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>, <STRONG><A HREF="ded.1.html">ded(1)</A></STRONG>.
-
-
-</PRE>
-<H2>AUTHOR</H2><PRE>
-       Thomas Dickey (from an analysis of  the  requirements  for
-       color xterm for XFree86 3.1.2C, February 1996).
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/form.3x.html b/Ada95/html/man/form.3x.html
deleted file mode 100644 (file)
index ef414e3..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>form</STRONG> - curses extension for programming forms
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  <STRONG>form</STRONG> library provides terminal-independent facilities
-       for composing form screens  on  character-cell  terminals.
-       The  library  includes:  field  routines, which create and
-       modify form fields; and form routines, which group  fields
-       into forms, display forms on the screen, and handle inter-
-       action with the user.
-
-       The <STRONG>form</STRONG> library uses the <STRONG>curses</STRONG> libraries, and  a  curses
-       initialization  routine  such  as  <STRONG>initscr</STRONG>  must be called
-       before using any of these  functions.   To  use  the  <STRONG>form</STRONG>
-       library, link with the options <STRONG>-lform</STRONG> <STRONG>-lcurses</STRONG>.
-
-
-   <STRONG>Current</STRONG> <STRONG>Default</STRONG> <STRONG>Values</STRONG> <STRONG>for</STRONG> <STRONG>Field</STRONG> <STRONG>Attributes</STRONG>
-       The  <STRONG>form</STRONG>  library  maintains  a  default  value for field
-       attributes.  You can get or set this  default  by  calling
-       the  appropriate  <STRONG>get_</STRONG>  or  <STRONG>set_</STRONG> routine with a <STRONG>NULL</STRONG> field
-       pointer.  Changing  this  default  with  a  <STRONG>set_</STRONG>  function
-       affects  future  field  creations, but does not change the
-       rendering of fields already created.
-
-
-   <STRONG>Routine</STRONG> <STRONG>Name</STRONG> <STRONG>Index</STRONG>
-       The following table lists each <STRONG>form</STRONG> routine and  the  name
-       of the manual page on which it is described.
-
-       l  l  l  l  .   <STRONG>curses</STRONG>  Routine  Name Manual  Page  Name =
-       current_field  <STRONG><A HREF="form_page.3x.html">form_page(3X)</A></STRONG>  data_ahead     <STRONG><A HREF="form_data.3x.html">form_data(3X)</A></STRONG>
-       data_behind    <STRONG><A HREF="form_data.3x.html">form_data(3X)</A></STRONG>  dup_field <STRONG><A HREF="form_field_new.3x.html">form_field_new(3X)</A></STRONG>
-       dynamic_fieldinfo   <STRONG><A HREF="form_field_info.3x.html">form_field_info(3X)</A></STRONG>
-       field_arg <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3X)</A></STRONG>
-       field_back     <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3X)</A></STRONG>
-       field_buffer   <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3X)</A></STRONG>
-       field_count    <STRONG><A HREF="form_field.3x.html">form_field(3X)</A></STRONG>
-       field_fore     <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3X)</A></STRONG>
-       field_index    <STRONG><A HREF="form_page.3x.html">form_page(3X)</A></STRONG>
-       field_info     <STRONG><A HREF="form_field_info.3x.html">form_field_info(3X)</A></STRONG>
-       field_init     <STRONG><A HREF="form_hook.3x.html">form_hook(3X)</A></STRONG>
-       field_just     <STRONG><A HREF="form_field_just.3x.html">form_field_just(3X)</A></STRONG>
-       field_opts     <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3X)</A></STRONG>
-       field_opts_off <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3X)</A></STRONG>
-       field_opts_on  <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3X)</A></STRONG>
-       field_pad <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3X)</A></STRONG>
-       field_status   <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3X)</A></STRONG>
-       field_term     <STRONG><A HREF="form_hook.3x.html">form_hook(3X)</A></STRONG>
-       field_type     <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3X)</A></STRONG>
-       form_fields    <STRONG><A HREF="form_field.3x.html">form_field(3X)</A></STRONG>      form_init <STRONG><A HREF="form_hook.3x.html">form_hook(3X)</A></STRONG>
-       form_opts <STRONG><A HREF="form_opts.3x.html">form_opts(3X)</A></STRONG>       form_opts_off  <STRONG><A HREF="form_opts.3x.html">form_opts(3X)</A></STRONG>
-       form_opts_on   <STRONG><A HREF="form_opts.3x.html">form_opts(3X)</A></STRONG>       form_page <STRONG><A HREF="form_page.3x.html">form_page(3X)</A></STRONG>
-       form_request_by_name     <STRONG><A HREF="form_requestname.3x.html">form_requestname(3X)</A></STRONG>
-       form_request_name   <STRONG><A HREF="form_requestname.3x.html">form_requestname(3X)</A></STRONG>
-       form_sub  <STRONG><A HREF="form_win.3x.html">form_win(3X)</A></STRONG>             form_term <STRONG><A HREF="form_hook.3x.html">form_hook(3X)</A></STRONG>
-       form_userptr   <STRONG><A HREF="form_userptr.3x.html">form_userptr(3X)</A></STRONG>     form_win  <STRONG><A HREF="form_win.3x.html">form_win(3X)</A></STRONG>
-       free_field     <STRONG><A HREF="form_field_new.3x.html">form_field_new(3X)</A></STRONG>   free_form <STRONG><A HREF="form_new.3x.html">form_new(3X)</A></STRONG>
-       link_field     <STRONG><A HREF="form_field_new.3x.html">form_field_new(3X)</A></STRONG>
-       link_fieldtype <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3X)</A></STRONG>
-       move_field     <STRONG><A HREF="form_field.3x.html">form_field(3X)</A></STRONG> new_field <STRONG><A HREF="form_field_new.3x.html">form_field_new(3X)</A></STRONG>
-       new_form  <STRONG><A HREF="form_new.3x.html">form_new(3X)</A></STRONG>         new_page  <STRONG><A HREF="form_new_page.3x.html">form_new_page(3X)</A></STRONG>
-       pos_form_cursor     <STRONG><A HREF="form_cursor.3x.html">form_cursor(3X)</A></STRONG>
-       post_form <STRONG><A HREF="form_post.3x.html">form_post(3X)</A></STRONG>        scale_form     <STRONG><A HREF="form_win.3x.html">form_win(3X)</A></STRONG>
-       set_current_field   <STRONG><A HREF="form_page.3x.html">form_page(3X)</A></STRONG>
-       set_field_back <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3X)</A></STRONG>
-       set_field_buffer    <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3X)</A></STRONG>
-       set_field_fore <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3X)</A></STRONG>
-       set_field_init <STRONG><A HREF="form_hook.3x.html">form_hook(3X)</A></STRONG>
-       set_field_just <STRONG><A HREF="form_field_just.3x.html">form_field_just(3X)</A></STRONG>
-       set_field_opts <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3X)</A></STRONG>
-       set_field_pad  <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3X)</A></STRONG>
-       set_field_status    <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3X)</A></STRONG>
-       set_field_term <STRONG><A HREF="form_hook.3x.html">form_hook(3X)</A></STRONG>
-       set_field_type <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3X)</A></STRONG>
-       set_field_userptr   <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3X)</A></STRONG>
-       set_fieldtype_arg   <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3X)</A></STRONG>
-       set_fieldtype_choice     <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3X)</A></STRONG>
-       set_form_fields     <STRONG><A HREF="form_field.3x.html">form_field(3X)</A></STRONG>
-       set_form_init  <STRONG><A HREF="form_hook.3x.html">form_hook(3X)</A></STRONG>
-       set_form_opts  <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3X)</A></STRONG>
-       set_form_page  <STRONG><A HREF="form_page.3x.html">form_page(3X)</A></STRONG>   set_form_sub   <STRONG><A HREF="form_win.3x.html">form_win(3X)</A></STRONG>
-       set_form_term  <STRONG><A HREF="form_hook.3x.html">form_hook(3X)</A></STRONG>
-       set_form_userptr    <STRONG><A HREF="form_userptr.3x.html">form_userptr(3X)</A></STRONG>
-       set_form_win   <STRONG><A HREF="form_win.3x.html">form_win(3X)</A></STRONG>
-       set_max_field  <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3X)</A></STRONG>
-       set_new_page   <STRONG><A HREF="form_new_page.3x.html">form_new_page(3X)</A></STRONG>
-       unpost_form    <STRONG><A HREF="form_post.3x.html">form_post(3X)</A></STRONG>
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Routines that return pointers return <STRONG>NULL</STRONG> on error.   Rou-
-       tines  that  return an integer return one of the following
-       error codes:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_CONNECTED</STRONG>
-            The field is already connected to a form.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       <STRONG>E_POSTED</STRONG>
-            The form is already posted.
-
-       <STRONG>E_BAD_STATE</STRONG>
-            Routine was called from an initialization or termina-
-            tion function.
-
-       <STRONG>E_NO_ROOM</STRONG>
-            Form is too large for its window.
-
-       <STRONG>E_NOT_POSTED</STRONG>
-            The form has not been posted.
-
-       <STRONG>E_UNKNOWN_COMMAND</STRONG>
-            The form driver code saw an unknown request code.
-
-       <STRONG>E_INVALID_FIELD</STRONG>
-            Contents of a field are not valid.
-
-       <STRONG>E_NOT_CONNECTED</STRONG>
-            No fields are connected to the form.
-
-       <STRONG>E_REQUEST_DENIED</STRONG>
-            The form driver could not process the request.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> and 3X pages  whose  names  begin  "form_"  for
-       detailed descriptions of the entry points.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       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
-       the other way around (which would give you  a  link  error
-       using GNU <STRONG><A HREF="ld.1.html">ld(1)</A></STRONG> and many other linkers).
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  routines  emulate the System V forms library.  They
-       were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen Pfeifer.  Manual pages and adaptation for  ncurses
-       by Eric S. Raymond.
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/form_field.3x.html b/Ada95/html/man/form_field.3x.html
deleted file mode 100644 (file)
index 470f01d..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>form_field</STRONG> - make and break connections between fields and
-       forms
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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);
-       int move_field(FIELD *field, int frow, int fcol);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The function <STRONG>set_form_fields</STRONG>  changes  the  field  pointer
-       array  of the given <EM>form</EM>.  The array must be terminated by
-       a <STRONG>NULL</STRONG>.
-
-       The function <STRONG>form_fields</STRONG> returns the field  array  of  the
-       given form.
-
-       The  function  <STRONG>field_count</STRONG>  returns the count of fields in
-       <EM>form</EM>.
-
-       The function <STRONG>move_field</STRONG> move the given field  (which  must
-       be disconnected) to a specified location on the screen.
-
-
-</PRE>
-<H2>RETURN VALUES</H2><PRE>
-       The function <STRONG>form_fields</STRONG> returns <STRONG>NULL</STRONG> on error.
-
-       The  function  <STRONG>field_count</STRONG> returns <STRONG>ERR</STRONG> (the general <STRONG>curses</STRONG>
-       error return value) on error.
-
-       The functions <STRONG>set_form_fields</STRONG> and <STRONG>move_field</STRONG> return one of
-       the following codes on error:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       <STRONG>E_POSTED</STRONG>
-            The form is already posted.
-
-       <STRONG>E_CONNECTED</STRONG>
-            The field is already connected to a form.
-
-
-</PRE>
-<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>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  routines  emulate the System V forms library.  They
-       were not supported on Version 7 or BSD versions.
-
-       The  SVr4  forms  library  documentation   specifies   the
-       <STRONG>field_count</STRONG> error value as -1 (which is the value of <STRONG>ERR</STRONG>).
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/form_field_attributes.3x.html b/Ada95/html/man/form_field_attributes.3x.html
deleted file mode 100644 (file)
index 2408cbc..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>form_field_attributes</STRONG>  -  color  and attribute control for
-       form fields
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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);
-       chtype field_back(const FIELD *field);
-       int set_field_pad(FIELD *field, int pad);
-       chtype field_pad(const FIELD *field);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The function <STRONG>set_field_fore</STRONG> sets the foreground  attribute
-       of  <EM>field</EM>. This is the highlight used to display the field
-       contents.  The function <STRONG>field_fore</STRONG> returns the  foreground
-       attribute.  The default is <STRONG>A_STANDOUT</STRONG>.
-
-       The  function <STRONG>set_field_back</STRONG> sets the background attribute
-       of <EM>form</EM>. This is the highlight used to display the  extent
-       fields  in  the form.  The function <STRONG>field_back</STRONG> returns the
-       background attribute.  The default is <STRONG>A_NORMAL</STRONG>.
-
-       The function <STRONG>set_field_pad</STRONG> sets the character used to fill
-       the  field.   The  function  <STRONG>field_pad</STRONG>  returns  the given
-       form's pad character.  The default is a blank.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       These routines return one of the following:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>  and  3X  pages  whose  names begin "form_" for
-       detailed descriptions of the entry points.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       The header file <STRONG><form.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  routines  emulate the System V forms library.  They
-       were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/form_field_buffer.3x.html b/Ada95/html/man/form_field_buffer.3x.html
deleted file mode 100644 (file)
index 5586ab1..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>form_field_buffer</STRONG> - field buffer control
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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);
-       int set_field_status(FIELD *field, bool status);
-       bool field_status(const FIELD *field);
-       int set_max_field(FIELD *field, int max);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The function <STRONG>set_field_buffer</STRONG> 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 <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
-       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
-       status flag is set to a nonzero value whenever  the  field
-       changes.
-
-       The  function  <STRONG>set_max_field</STRONG>  sets  the maximum size for a
-       dynamic field.  An argument of 0  turns  off  any  maximum
-       size threshold for that field.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The <STRONG>field_buffer</STRONG> function returns NULL on error.
-
-       The <STRONG>field_status</STRONG> function returns <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>.
-
-       The remaining routines return one of the following:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> and 3X pages  whose  names  begin  "form_"  for
-       detailed descriptions of the entry points.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       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.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/form_field_just.3x.html b/Ada95/html/man/form_field_just.3x.html
deleted file mode 100644 (file)
index 3691707..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>form_field_just</STRONG> - retrieve field characteristics
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
-       int set_field_just(FIELD *field, int justification);
-       int field_just(const FIELD *field);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The   function   <STRONG>set_field_just</STRONG>   sets  the  justification
-       attribute of a field; <STRONG>field_just</STRONG> returns a field's  justi-
-       fication attribute.  The attribute may be one of NO_JUSTI-
-       FICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, or  JUSTIFY_CENTER.
-
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The  function <STRONG>field_just</STRONG> returns one of: NO_JUSTIFICATION,
-       JUSTIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER.
-
-       The function <STRONG>set_field_just</STRONG> return one of the following:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>  and  3X  pages  whose  names begin "form_" for
-       detailed descriptions of the entry points.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       The header file <STRONG><form.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  routines  emulate the System V forms library.  They
-       were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/form_hook.3x.html b/Ada95/html/man/form_hook.3x.html
deleted file mode 100644 (file)
index 698c07f..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>form_hook</STRONG> - set hooks for automatic invocation by applica-
-       tions
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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 *));
-       void (*)(FORM *) field_term(const FORM *form);
-       int set_form_init(FORM *form, void (*func)(FORM *));
-       void (*)(FORM *) form_init(const FORM *form);
-       int set_form_term(FORM *form, void (*func)(FORM *));
-       void (*)(FORM *) form_term(const FORM *form);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These functions make it possible to set hook functions  to
-       be called at various points in the automatic processing of
-       input event codes by <STRONG>form_driver</STRONG>.
-
-       The function <STRONG>set_field_init</STRONG> sets a hook to  be  called  at
-       form-post  time  and  each time the selected field changes
-       (after the change).  <STRONG>field_init</STRONG> returns the current  field
-       init hook, if any (<STRONG>NULL</STRONG> if there is no such hook).
-
-       The  function  <STRONG>set_field_term</STRONG>  sets a hook to be called at
-       form-unpost time and each time the selected field  changes
-       (before the change).  <STRONG>field_term</STRONG> returns the current field
-       term hook, if any (<STRONG>NULL</STRONG> if there is no such hook).
-
-       The function <STRONG>set_form_init</STRONG> sets a hook  to  be  called  at
-       form-post  time  and  just  after a page change once it is
-       posted.  <STRONG>form_init</STRONG> returns the current form init hook,  if
-       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 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>
-<H2>RETURN VALUE</H2><PRE>
-       Routines that return pointers return <STRONG>NULL</STRONG> on error.  Other
-       routines return one of the following:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-
-</PRE>
-<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>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/form_new.3x.html b/Ada95/html/man/form_new.3x.html
deleted file mode 100644 (file)
index 98dfd32..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>form_new</STRONG> - create and destroy forms
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
-       FORM *new_form(FIELD **fields);
-       int free_form(FORM *form);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  function  <STRONG>new_form</STRONG>  creates a new form connected to a
-       specified field pointer array (which must  be  <STRONG>NULL</STRONG>-termi-
-       nated).
-
-       The  function  <STRONG>free_form</STRONG>  disconnects  <EM>form</EM> from its field
-       array and frees the storage allocated for the form.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The function <STRONG>new_form</STRONG> returns <STRONG>NULL</STRONG> on error.
-
-       The function <STRONG>free_form</STRONG> returns one of the following:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       <STRONG>E_POSTED</STRONG>
-            The form has already been posted.
-
-
-</PRE>
-<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>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       The header file <STRONG><form.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/form_new_page.3x.html b/Ada95/html/man/form_new_page.3x.html
deleted file mode 100644 (file)
index ef7cffc..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>form_new_page</STRONG> - form pagination functions
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
-       int set_new_page(FIELD *field, bool new_page_flag);
-       bool new_page(const FIELD *field);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  function  <STRONG>set_new_page</STRONG>  sets or resets a flag marking
-       the given field as the beginning of  a  new  page  on  its
-       form.
-
-       The  function  <STRONG>new_page</STRONG>  is  a  predicate which tests if a
-       given field marks a page beginning on its form.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The function <STRONG>new_page</STRONG> returns <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>.
-
-       The function <STRONG>set_new_page</STRONG> return one of the following:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_CONNECTED</STRONG>
-            The given field is already connected to a form.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> and 3X pages  whose  names  begin  "form_"  for
-       detailed descriptions of the entry points.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       The header file <STRONG><form.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/form_opts.3x.html b/Ada95/html/man/form_opts.3x.html
deleted file mode 100644 (file)
index f4e6ce3..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>form_opts</STRONG> - set and get form options
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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);
-       OPTIONS form_opts(const FORM *form);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  function  <STRONG>set_form_opts</STRONG>  sets  all  the  given form's
-       option bits  (form  option  bits  may  be  logically-OR'ed
-       together).
-
-       The  function <STRONG>form_opts_on</STRONG> turns on the given option bits,
-       and leaves others alone.
-
-       The function <STRONG>form_opts_off</STRONG>  turns  off  the  given  option
-       bits, and leaves others alone.
-
-       The  function  <STRONG>form_opts</STRONG> returns the form's current option
-       bits.
-
-       The following options are defined (all are on by default):
-
-       O_NL_OVERLOAD
-            Overload  the  <STRONG>REQ_NEW_LINE</STRONG>  forms  driver request so
-            that calling it at the end of a  field  goes  to  the
-            next field.
-
-       O_BS_OVERLOAD
-            Overload  the  <STRONG>REQ_DEL_PREV</STRONG>  forms  driver request so
-            that calling it at the beginning of a field  goes  to
-            the previous field.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Except for <STRONG>form_opts</STRONG>, each routine returns one of the fol-
-       lowing:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-
-</PRE>
-<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>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       The header file <STRONG><form.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/form_page.3x.html b/Ada95/html/man/form_page.3x.html
deleted file mode 100644 (file)
index 700f8e0..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>form_page</STRONG> - set and get form page number
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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);
-       int form_page(const FORM *form);
-       int field_index(const FIELD *field);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  function  <STRONG>set_current</STRONG> <STRONG>field</STRONG> sets the current field of
-       the given form; <STRONG>current_field</STRONG> returns the current field of
-       the given form.
-
-       The  function  <STRONG>set_form_page</STRONG>  sets  the form's page number
-       (goes to page <EM>n</EM> of the form).
-
-       The function <STRONG>form_page</STRONG> returns  the  form's  current  page
-       number.
-
-       The function <STRONG>field_index</STRONG> returns the index of the field in
-       the field array of the form it is connected to. It returns
-       <STRONG>ERR</STRONG>  if  the  argument is the null pointer or the field is
-       not connected.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Except for <STRONG>form_page</STRONG>, each routine returns one of the fol-
-       lowing:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       <STRONG>E_BAD_STATE</STRONG>
-            Routine was called from an initialization or termina-
-            tion function.
-
-       <STRONG>E_INVALID_FIELD</STRONG>
-            Contents of a field are not valid.
-
-       <STRONG>E_REQUEST_DENIED</STRONG>
-            The form driver could not process the request.
-
-
-</PRE>
-<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><form.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/form_post.3x.html b/Ada95/html/man/form_post.3x.html
deleted file mode 100644 (file)
index cec8b24..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>form_post</STRONG>  -  write or erase forms from associated subwin-
-       dows
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
-       int post_form(FORM *form);
-       int unpost_form(FORM *form);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The function <STRONG>post_form</STRONG> displays a form to  its  associated
-       subwindow.   To trigger physical display of the subwindow,
-       use  <STRONG>refresh</STRONG>  or  some  equivalent  <STRONG>curses</STRONG>  routine   (the
-       implicit  <STRONG>doupdate</STRONG>  triggered  by  an <STRONG>curses</STRONG> input request
-       will do).
-
-       The function <STRONG>unpost_form</STRONG> erases form from  its  associated
-       subwindow.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       These routines return one of the following:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       <STRONG>E_POSTED</STRONG>
-            The form has already been posted.
-
-       <STRONG>E_BAD_STATE</STRONG>
-            Routine was called from an initialization or termina-
-            tion function.
-
-       <STRONG>E_NO_ROOM</STRONG>
-            Form is too large for its window.
-
-       <STRONG>E_NOT_POSTED</STRONG>
-            The form has not been posted.
-
-       <STRONG>E_NOT_CONNECTED</STRONG>
-            No items are connected to the form.
-
-
-</PRE>
-<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>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       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.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/menu.3x.html b/Ada95/html/man/menu.3x.html
deleted file mode 100644 (file)
index eee145d..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>menu</STRONG> - curses extension for programming menus
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  <STRONG>menu</STRONG> library provides terminal-independent facilities
-       for composing menu systems  on  character-cell  terminals.
-       The library includes: item routines, which create and mod-
-       ify menu items; and menu routines, which group items  into
-       menus, display menus on the screen, and handle interaction
-       with the user.
-
-       The <STRONG>menu</STRONG> library uses the <STRONG>curses</STRONG> libraries, and  a  curses
-       initialization  routine  such  as  <STRONG>initscr</STRONG>  must be called
-       before using any of these  functions.   To  use  the  <STRONG>menu</STRONG>
-       library, link with the options <STRONG>-lmenu</STRONG> <STRONG>-lcurses</STRONG>.
-
-
-   <STRONG>Current</STRONG> <STRONG>Default</STRONG> <STRONG>Values</STRONG> <STRONG>for</STRONG> <STRONG>Item</STRONG> <STRONG>Attributes</STRONG>
-       The  <STRONG>menu</STRONG>  library  maintains  a  default  value  for item
-       attributes.  You can get or set this  default  by  calling
-       the  appropriate  <STRONG>get_</STRONG>  or  <STRONG>set_</STRONG>  routine with a <STRONG>NULL</STRONG> item
-       pointer.  Changing  this  default  with  a  <STRONG>set_</STRONG>  function
-       affects  future  item  creations,  but does not change the
-       rendering of items already created.
-
-
-   <STRONG>Routine</STRONG> <STRONG>Name</STRONG> <STRONG>Index</STRONG>
-       The following table lists each <STRONG>menu</STRONG> routine and  the  name
-       of the manual page on which it is described.
-
-       l   l   .    <STRONG>curses</STRONG>   Routine   Name Manual  Page  Name  =
-       current_item   <STRONG><A HREF="mitem_current.3x.html">mitem_current(3X)</A></STRONG>                 free_item
-            <STRONG><A HREF="mitem_new.3x.html">mitem_new(3X)</A></STRONG>       free_menu            <STRONG><A HREF="menu_new.3x.html">menu_new(3X)</A></STRONG>
-       item_count     <STRONG><A HREF="menu_items.3x.html">menu_items(3X)</A></STRONG>
-       item_description    <STRONG><A HREF="mitem_name.3x.html">mitem_name(3X)</A></STRONG>
-       item_index     <STRONG><A HREF="mitem_current.3x.html">mitem_current(3X)</A></STRONG>                 item_init
-            <STRONG><A HREF="menu_hook.3x.html">menu_hook(3X)</A></STRONG> item_name      <STRONG><A HREF="mitem_name.3x.html">mitem_name(3X)</A></STRONG> item_opts
-            <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3X)</A></STRONG>          item_opts_off  <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3X)</A></STRONG>
-       item_opts_on   <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3X)</A></STRONG> item_term      <STRONG><A HREF="menu_hook.3x.html">menu_hook(3X)</A></STRONG>
-       item_userptr   <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3X)</A></STRONG>
-       item_value     <STRONG><A HREF="mitem_value.3x.html">mitem_value(3X)</A></STRONG>  item_visible   <STRONG>mitem_visi-</STRONG>
-       <STRONG><A HREF="ble.3x.html">ble(3X)</A></STRONG>          menu_back                <STRONG><A HREF="menu_attribs.3x.html">menu_attribs(3X)</A></STRONG>
-       menu_driver    <STRONG><A HREF="menu_driver.3x.html">menu_driver(3X)</A></STRONG>                   menu_fore
-            <STRONG><A HREF="menu_attribs.3x.html">menu_attribs(3X)</A></STRONG>       menu_format    <STRONG><A HREF="menu_format.3x.html">menu_format(3X)</A></STRONG>
-       menu_grey               <STRONG><A HREF="menu_attribs.3x.html">menu_attribs(3X)</A></STRONG>         menu_init
-            <STRONG><A HREF="menu_hook.3x.html">menu_hook(3X)</A></STRONG> menu_items     <STRONG><A HREF="menu_items.3x.html">menu_items(3X)</A></STRONG> menu_mark
-            <STRONG><A HREF="menu_mark.3x.html">menu_mark(3X)</A></STRONG>       menu_opts           <STRONG><A HREF="menu_opts.3x.html">menu_opts(3X)</A></STRONG>
-       menu_opts_off  <STRONG><A HREF="menu_opts.3x.html">menu_opts(3X)</A></STRONG>  menu_opts_on   <STRONG><A HREF="menu_opts.3x.html">menu_opts(3X)</A></STRONG>
-       menu_pad        <STRONG><A HREF="menu_attribs.3x.html">menu_attribs(3X)</A></STRONG>  menu_pattern   <STRONG>menu_pat-</STRONG>
-       <STRONG><A HREF="tern.3x.html">tern(3X)</A></STRONG>     menu_request_by_name     <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3X)</A></STRONG>
-            <STRONG><A HREF="menu_win.3x.html">menu_win(3X)</A></STRONG>       menu_term            <STRONG><A HREF="menu_hook.3x.html">menu_hook(3X)</A></STRONG>
-       menu_userptr   <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3X)</A></STRONG>                   menu_win
-            <STRONG><A HREF="menu_win.3x.html">menu_win(3X)</A></STRONG>  new_item        <STRONG><A HREF="mitem_new.3x.html">mitem_new(3X)</A></STRONG>  new_menu
-            <STRONG><A HREF="menu_new.3x.html">menu_new(3X)</A></STRONG>      pos_menu_cursor     <STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3X)</A></STRONG>
-       post_menu     <STRONG><A HREF="menu_post.3x.html">menu_post(3X)</A></STRONG>    scale_menu     <STRONG><A HREF="menu_win.3x.html">menu_win(3X)</A></STRONG>
-       set_current_item    <STRONG><A HREF="mitem_current.3x.html">mitem_current(3X)</A></STRONG>
-       set_item_init  <STRONG><A HREF="menu_hook.3x.html">menu_hook(3X)</A></STRONG> set_item_opts  <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3X)</A></STRONG>
-       set_item_term  <STRONG><A HREF="menu_hook.3x.html">menu_hook(3X)</A></STRONG>
-       set_item_userptr    <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3X)</A></STRONG>
-       set_item_value <STRONG><A HREF="mitem_value.3x.html">mitem_value(3X)</A></STRONG>
-       set_menu_back  <STRONG><A HREF="menu_attribs.3x.html">menu_attribs(3X)</A></STRONG>
-       set_menu_fore  <STRONG><A HREF="menu_attribs.3x.html">menu_attribs(3X)</A></STRONG>
-       set_menu_format     <STRONG><A HREF="menu_format.3x.html">menu_format(3X)</A></STRONG>
-       set_menu_grey  <STRONG><A HREF="menu_attribs.3x.html">menu_attribs(3X)</A></STRONG>
-       set_menu_init  <STRONG><A HREF="menu_hook.3x.html">menu_hook(3X)</A></STRONG> set_menu_items <STRONG><A HREF="menu_items.3x.html">menu_items(3X)</A></STRONG>
-       set_menu_mark  <STRONG><A HREF="menu_mark.3x.html">menu_mark(3X)</A></STRONG> set_menu_opts  <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3X)</A></STRONG>
-       set_menu_pad   <STRONG><A HREF="menu_attribs.3x.html">menu_attribs(3X)</A></STRONG>
-       set_menu_pattern    <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3X)</A></STRONG>
-       set_menu_spacing    <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3X)</A></STRONG>
-       set_menu_sub   <STRONG><A HREF="menu_win.3x.html">menu_win(3X)</A></STRONG>   set_menu_term  <STRONG><A HREF="menu_hook.3x.html">menu_hook(3X)</A></STRONG>
-       set_menu_userptr    <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3X)</A></STRONG>
-       set_menu_win   <STRONG><A HREF="menu_win.3x.html">menu_win(3X)</A></STRONG>      set_top_row    <STRONG>mitem_cur-</STRONG>
-       <STRONG><A HREF="rent.3x.html">rent(3X)</A></STRONG>          top_row                <STRONG><A HREF="mitem_current.3x.html">mitem_current(3X)</A></STRONG>
-       unpost_menu    <STRONG><A HREF="menu_post.3x.html">menu_post(3X)</A></STRONG>
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Routines that return pointers return <STRONG>NULL</STRONG> on error.   Rou-
-       tines  that  return an integer return one of the following
-       error codes:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       <STRONG>E_POSTED</STRONG>
-            The menu is already posted.
-
-       <STRONG>E_BAD_STATE</STRONG>
-            Routine was called from an initialization or termina-
-            tion function.
-
-       <STRONG>E_NO_ROOM</STRONG>
-            Menu is too large for its window.
-
-       <STRONG>E_NOT_POSTED</STRONG>
-            The menu has not been posted.
-
-            The menu driver code saw an unknown request code.
-
-       <STRONG>E_NO_MATCH</STRONG>
-            Character failed to match.
-
-       <STRONG>E_NOT_SELECTABLE</STRONG>
-            The designated item cannot be selected.
-
-       <STRONG>E_NOT_CONNECTED</STRONG>
-            No items are connected to the menu.
-
-       <STRONG>E_REQUEST_DENIED</STRONG>
-            The menu driver could not process the request.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> and 3X pages  whose  names  begin  "menu_"  for
-       detailed descriptions of the entry points.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       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
-       the other way around (which would give you  a  link  error
-       using GNU <STRONG><A HREF="ld.1.html">ld(1)</A></STRONG> and many other linkers).
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  routines  emulate  the System V menu library.  They
-       were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen Pfeifer.  Manual pages and adaptation for  ncurses
-       by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/menu_attribs.3x.html b/Ada95/html/man/menu_attribs.3x.html
deleted file mode 100644 (file)
index a9110c0..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>menu_attributes</STRONG> - color and attribute control for menus
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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);
-       chtype menu_back(const MENU *menu);
-       int set_menu_grey(MENU *menu, chtype attr);
-       chtype menu_grey(const MENU *menu);
-       int set_menu_pad(MENU *menu, int pad);
-       int menu_pad(const MENU *menu);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  function  <STRONG>set_menu_fore</STRONG> sets the foreground attribute
-       of <EM>menu</EM>. This is the  highlight  used  for  selected  menu
-       items.   <STRONG>menu_fore</STRONG>  returns the foreground attribute.  The
-       default is <STRONG>A_STANDOUT</STRONG>.
-
-       The function <STRONG>set_menu_back</STRONG> sets the  background  attribute
-       of  <EM>menu</EM>.  This  is the highlight used for selectable (but
-       not  currently  selected)  menu   items.    The   function
-       <STRONG>menu_back</STRONG>  returns  the background attribute.  The default
-       is <STRONG>A_NORMAL</STRONG>.
-
-       The function <STRONG>set_menu_grey</STRONG>  sets  the  grey  attribute  of
-       <EM>menu</EM>.  This  is  the highlight used for un-selectable menu
-       items in menus that permit more than one  selection.   The
-       function   <STRONG>menu_grey</STRONG>  returns  the  grey  attribute.   The
-       default is <STRONG>A_UNDERLINE</STRONG>.
-
-       The function <STRONG>set_menu_pad</STRONG> sets the character used to  fill
-       the space between the name and description parts of a menu
-       item.  <STRONG>menu_pad</STRONG> returns the given  menu's  pad  character.
-       The default is a blank.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       These routines return one of the following:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <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><menu.h></STRONG> automatically includes the header
-       file <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.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/menu_format.3x.html b/Ada95/html/man/menu_format.3x.html
deleted file mode 100644 (file)
index 9c6e7a1..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>menu_format</STRONG> - set and get menu sizes
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The function <STRONG>set_menu_format</STRONG> sets the maximum display size
-       of the given menu.  If this size is too small  to  display
-       all  menu items, the menu will be made scrollable. If this
-       size is larger than the menus subwindow and the  subwindow
-       is  too  small to display all menu items, <STRONG>post_menu()</STRONG> will
-       fail.
-
-       The  default  format  is  16  rows,  1  column.    Calling
-       <STRONG>set_menu_format</STRONG>  with a null menu pointer will change this
-       default.  A zero row or column argument to <STRONG>set_menu_format</STRONG>
-       is  interpreted  as  a  request  not to change the current
-       value.
-
-       The function <STRONG>menu_format</STRONG>  returns  the  maximum-size  con-
-       straints  for the given menu into the storage addressed by
-       <STRONG>rows</STRONG> and <STRONG>cols</STRONG>.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       These routines returns one of the following:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       <STRONG>E_POSTED</STRONG>
-            The menu is already posted.
-
-
-</PRE>
-<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>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <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.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/menu_hook.3x.html b/Ada95/html/man/menu_hook.3x.html
deleted file mode 100644 (file)
index edaeb7a..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>menu_hook</STRONG> - set hooks for automatic invocation by applica-
-       tions
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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 *));
-       void (*)(MENU *) item_term(const MENU *menu);
-       int set_menu_init(MENU *menu, void (*func)(MENU *));
-       void (*)(MENU *) menu_init(const MENU *menu);
-       int set_menu_term(MENU *menu, void (*func)(MENU *));
-       void (*)(MENU *) menu_term(const MENU *menu);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These functions make it possible to set hook functions  to
-       be called at various points in the automatic processing of
-       input event codes by <STRONG>menu_driver</STRONG>.
-
-       The function <STRONG>set_item_init</STRONG> sets a hook  to  be  called  at
-       menu-post  time  and  each  time the selected item changes
-       (after the change).  <STRONG>item_init</STRONG> returns  the  current  item
-       init hook, if any (<STRONG>NULL</STRONG> if there is no such hook).
-
-       The  function  <STRONG>set_item_term</STRONG>  sets  a hook to be called at
-       menu-unpost time and each time the selected  item  changes
-       (before  the  change).  <STRONG>item_term</STRONG> returns the current item
-       term hook, if any (<STRONG>NULL</STRONG> if there is no such hook).
-
-       The function <STRONG>set_menu_init</STRONG> sets a hook  to  be  called  at
-       menu-post  time  and  just  after  the top row on the menu
-       changes once it is posted.  <STRONG>menu_init</STRONG> returns the  current
-       menu init hook, if any (<STRONG>NULL</STRONG> if there is no such hook).
-
-       The  function  <STRONG>set_menu_term</STRONG>  sets  a hook to be called at
-       menu-unpost time and just before the top row on  the  menu
-       changes  once it is posted.  <STRONG>menu_term</STRONG> returns the current
-       menu term hook, if any (<STRONG>NULL</STRONG> if there is no such hook).
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Routines that return pointers return <STRONG>NULL</STRONG> on error.  Other
-       routines return one of the following:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-
-</PRE>
-<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>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines emulate the System V  menu  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/menu_items.3x.html b/Ada95/html/man/menu_items.3x.html
deleted file mode 100644 (file)
index fb016b8..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>menu_items</STRONG>  - make and break connections between items and
-       menus
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The function <STRONG>set_menu_items</STRONG> changes the item pointer array
-       of  the  given  <EM>menu</EM>.   The  array must be terminated by a
-       <STRONG>NULL</STRONG>.
-
-       The function <STRONG>menu_items</STRONG> returns  the  item  array  of  the
-       given menu.
-
-       The  function  <STRONG>item_count</STRONG>  returns  the  count of items in
-       <EM>menu</EM>.
-
-
-</PRE>
-<H2>RETURN VALUES</H2><PRE>
-       The function <STRONG>menu_items</STRONG> returns <STRONG>NULL</STRONG> on error.
-
-       The function <STRONG>item_count</STRONG> returns <STRONG>ERR</STRONG>  (the  general  <STRONG>curses</STRONG>
-       error return value) on error.
-
-       The  function  <STRONG>set_menu_items</STRONG> returns one of the following
-       codes on error:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       <STRONG>E_POSTED</STRONG>
-            The menu is already posted.
-
-       <STRONG>E_NOT_CONNECTED</STRONG>
-            No items are connected to the menu.
-
-
-</PRE>
-<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>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-
-       The   SVr4   menu   library  documentation  specifies  the
-       <STRONG>item_count</STRONG> error value as -1 (which is the value of  <STRONG>ERR</STRONG>).
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/menu_mark.3x.html b/Ada95/html/man/menu_mark.3x.html
deleted file mode 100644 (file)
index 959dc1b..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>menu_mark</STRONG> - get and set the menu mark string
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
-       int set_menu_mark(MENU *menu, const char *mark);
-       const char *menu_mark(const MENU *menu);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       In  order  to make menu selections visible on older termi-
-       nals without highlighting or color  capability,  the  menu
-       library  marks  selected  items  in  a  menu with a prefix
-       string.
-
-       The function <STRONG>set_menu_mark</STRONG> sets the mark  string  for  the
-       given  menu.   Calling <STRONG>set_menu_mark</STRONG> with a null menu item
-       will abolish the mark  string.   Note  that  changing  the
-       length  of  the  mark  string for a menu while the menu is
-       posted is likely to produce unhelpful behavior.
-
-       The default string is "-" (a dash). Calling  <STRONG>set_menu_mark</STRONG>
-       with a <STRONG>NULL</STRONG> menu argument will change this default.
-
-       The  function <STRONG>menu_mark</STRONG> returns the menu's mark string (or
-       <STRONG>NULL</STRONG> if there is none).
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The function <STRONG>menu_mark</STRONG> returns <STRONG>NULL</STRONG> on error.   The  func-
-       tion <STRONG>set_menu_mark</STRONG> may return the following error codes:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-
-</PRE>
-<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>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <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.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/menu_new.3x.html b/Ada95/html/man/menu_new.3x.html
deleted file mode 100644 (file)
index b96d85a..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>menu_new</STRONG> - create and destroy menus
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
-       MENU *new_menu(ITEM **items);
-       int free_menu(MENU *menu);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  function  <STRONG>new_menu</STRONG>  creates a new menu connected to a
-       specified item pointer array (which  must  be  <STRONG>NULL</STRONG>-termi-
-       nated).
-
-       The  function  <STRONG>free_menu</STRONG>  disconnects  <EM>menu</EM>  from its item
-       array and frees the storage allocated for the menu.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The function <STRONG>new_menu</STRONG> returns <STRONG>NULL</STRONG> on error.
-
-       The function <STRONG>free_menu</STRONG> returns one of the following:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       <STRONG>E_POSTED</STRONG>
-            The menu has already been posted.
-
-
-</PRE>
-<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>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <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.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/menu_pattern.3x.html b/Ada95/html/man/menu_pattern.3x.html
deleted file mode 100644 (file)
index 6effa22..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>menu_pattern</STRONG> - get and set a menu's pattern buffer
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
-       int set_menu_pattern(MENU *menu, const char *pattern);
-       char *menu_pattern(const MENU *menu);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       Every  menu  has  an  associated pattern match buffer.  As
-       input events that are printable ASCII characters come  in,
-       they  are  appended  to this match buffer and tested for a
-       match, as described in <STRONG><A HREF="menu_driver.3x.html">menu_driver(3X)</A></STRONG>.
-
-       The function <STRONG>set_menu_pattern</STRONG> sets the pattern buffer  for
-       the  given menu and tries to find the first matching item.
-       If it succeeds, that item becomes  current;  if  not,  the
-       current item does not change.
-
-       The  function  <STRONG>menu_pattern</STRONG>  returns the pattern buffer of
-       the given <EM>menu</EM>.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The function <STRONG>menu_pattern</STRONG>  returns  <STRONG>NULL</STRONG>  on  error.   The
-       function  <STRONG>set_menu_pattern</STRONG>  may return the following error
-       codes:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       <STRONG>E_NO_MATCH</STRONG>
-            Character failed to match.
-
-
-</PRE>
-<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>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <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.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/menu_post.3x.html b/Ada95/html/man/menu_post.3x.html
deleted file mode 100644 (file)
index 3ac4793..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>menu_post</STRONG>  -  write or erase menus from associated subwin-
-       dows
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
-       int post_menu(MENU *menu);
-       int unpost_menu(MENU *menu);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The function <STRONG>post_menu</STRONG> displays a menu to  its  associated
-       subwindow.   To trigger physical display of the subwindow,
-       use  <STRONG>refresh</STRONG>  or  some  equivalent  <STRONG>curses</STRONG>  routine   (the
-       implicit  <STRONG>doupdate</STRONG>  triggered  by  an <STRONG>curses</STRONG> input request
-       will do). <STRONG>post_menu</STRONG> resets the  selection  status  of  all
-       items.
-
-       The  function  <STRONG>unpost_menu</STRONG> erases menu from its associated
-       subwindow.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       These routines return one of the following:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       <STRONG>E_POSTED</STRONG>
-            The menu has already been posted.
-
-       <STRONG>E_BAD_STATE</STRONG>
-            Routine was called from an initialization or termina-
-            tion function.
-
-       <STRONG>E_NO_ROOM</STRONG>
-            Menu is too large for its window. You should consider
-            to use <STRONG>set_menu_format()</STRONG> to solve the problem.
-
-       <STRONG>E_NOT_POSTED</STRONG>
-            The menu has not been posted.
-
-       <STRONG>E_NOT_CONNECTED</STRONG>
-            No items are connected to the menu.
-
-
-</PRE>
-<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>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines emulate the System V  menu  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/mitem_current.3x.html b/Ada95/html/man/mitem_current.3x.html
deleted file mode 100644 (file)
index 344ada6..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>mitem_current</STRONG> - set and get current_menu_item
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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);
-       int top_row(const MENU *menu);
-       int item_index(const ITEM *item);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  function  <STRONG>set_current_item</STRONG> sets the current item (the
-       item on  which  the  menu  cursor  is  positioned).   <STRONG>cur-</STRONG>
-       <STRONG>rent_item</STRONG>  returns  a  pointer  to the current item in the
-       given menu.
-
-       The function <STRONG>set_top_row</STRONG> sets the top row of the  menu  to
-       show  the  given  row  (the top row is initially 0, and is
-       reset to this value whenever the <STRONG>O_ROWMAJOR</STRONG> option is tog-
-       gled).   The  item  leftmost on the given row becomes cur-
-       rent.  The function <STRONG>top_row</STRONG> returns the number of the  top
-       menu row being displayed.
-
-       The function <STRONG>item_index</STRONG> returns the (zero-origin) index of
-       <EM>item</EM> in the menu's item pointer list.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       <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>
-       error value) on error.
-
-       <STRONG>set_current_item</STRONG> and <STRONG>set_top_row</STRONG> return one of the follow-
-       ing:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       <STRONG>E_BAD_STATE</STRONG>
-            Routine was called from an initialization or termina-
-            tion function.
-
-       <STRONG>E_NOT_CONNECTED</STRONG>
-            No items are connected to the menu.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <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.
-
-       The SVr4 menu library documentation specifies the  <STRONG>top_row</STRONG>
-       and  <STRONG>index_item</STRONG>  error  value as -1 (which is the value of
-       <STRONG>ERR</STRONG>).
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/mitem_name.3x.html b/Ada95/html/man/mitem_name.3x.html
deleted file mode 100644 (file)
index 6e3ebef..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>mitem_name</STRONG> - get menu item name and description fields
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
-       const char *item_name(const ITEM *item);
-       const char *item_description(const ITEM *item);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  function <STRONG>item_name</STRONG> returns the name part of the given
-       item.
-       The function <STRONG>item_description</STRONG> returns the description part
-       of the given item.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       These routines returns <STRONG>NULL</STRONG> on error.
-
-
-</PRE>
-<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>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <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.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/mitem_opts.3x.html b/Ada95/html/man/mitem_opts.3x.html
deleted file mode 100644 (file)
index a4224ff..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>mitem_opts</STRONG> - set and get menu item options
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <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);
-       OPTIONS item_opts(const ITEM *item);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  function  <STRONG>set_item_opts</STRONG>  sets  all  the  given item's
-       option bits  (menu  option  bits  may  be  logically-OR'ed
-       together).
-
-       The  function <STRONG>item_opts_on</STRONG> turns on the given option bits,
-       and leaves others alone.
-
-       The function <STRONG>item_opts_off</STRONG>  turns  off  the  given  option
-       bits, and leaves others alone.
-
-       The  function  <STRONG>item_opts</STRONG> returns the item's current option
-       bits.
-
-       There is only one defined option bit  mask,  <STRONG>O_SELECTABLE</STRONG>.
-       When this is on, the item may be selected during menu pro-
-       cessing.  This option defaults to on.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Except for <STRONG>item_opts</STRONG>, each routine returns one of the fol-
-       lowing:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-
-</PRE>
-<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>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <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.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/mitem_value.3x.html b/Ada95/html/man/mitem_value.3x.html
deleted file mode 100644 (file)
index 8d13b91..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       <STRONG>mitem_value</STRONG> - set and get menu item values
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
-       int set_item_value(ITEM *item, bool value);
-       bool item_value(const ITEM *item);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       If  you  turn  off  the menu option <STRONG>O_ONEVALUE</STRONG> (e.g., with
-       <STRONG>set_menu_opts</STRONG> or <STRONG>menu_opts_off</STRONG>;  see  <STRONG><A HREF="menu_opts.3x.html">menu_opts(3X)</A></STRONG>),  the
-       menu becomes multi-valued; that is, more than one item may
-       simultaneously be selected.
-
-       In a multi_valued menu, you  can  used  <STRONG>set_item_value</STRONG>  to
-       select the given menu item (second argument <STRONG>TRUE</STRONG>) or dese-
-       lect it (second argument <STRONG>FALSE</STRONG>).
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The function <STRONG>set_item_value</STRONG> returns one of the following:
-
-       <STRONG>E_OK</STRONG> The routine succeeded.
-
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
-
-       <STRONG>E_REQUEST_DENIED</STRONG>
-            The menu driver could not process the request.
-
-
-</PRE>
-<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>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <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.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/man/ncurses.3x.html b/Ada95/html/man/ncurses.3x.html
deleted file mode 100644 (file)
index 164ae90..0000000
+++ /dev/null
@@ -1,701 +0,0 @@
-<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>
diff --git a/Ada95/html/man/panel.3x.html b/Ada95/html/man/panel.3x.html
deleted file mode 100644 (file)
index 29120fc..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-<HTML>
-<BODY>
-<PRE>
-       panel - panel stack extension for curses
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><panel.h></STRONG>
-
-       <STRONG>cc</STRONG> <STRONG>[flags]</STRONG> <STRONG>sourcefiles</STRONG> <STRONG>-lpanel</STRONG> <STRONG>-lncurses</STRONG>
-
-       <STRONG>PANEL</STRONG> <STRONG>*new_panel(WINDOW</STRONG> <STRONG>*win)</STRONG>
-       <STRONG>int</STRONG> <STRONG>bottom_panel(PANEL</STRONG> <STRONG>*pan)</STRONG>
-       <STRONG>int</STRONG> <STRONG>top_panel(PANEL</STRONG> <STRONG>*pan)</STRONG>
-       <STRONG>int</STRONG> <STRONG>show_panel(PANEL</STRONG> <STRONG>*pan)</STRONG>
-       <STRONG>void</STRONG> <STRONG>update_panels();</STRONG>
-       <STRONG>int</STRONG> <STRONG>hide_panel(PANEL</STRONG> <STRONG>*pan)</STRONG>
-       <STRONG>WINDOW</STRONG> <STRONG>*panel_window(const</STRONG> <STRONG>PANEL</STRONG> <STRONG>*pan)</STRONG>
-       <STRONG>int</STRONG> <STRONG>replace_panel(PANEL</STRONG> <STRONG>*pan,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*window)</STRONG>
-       <STRONG>int</STRONG> <STRONG>move_panel(PANEL</STRONG> <STRONG>*pan,</STRONG> <STRONG>int</STRONG> <STRONG>starty,</STRONG> <STRONG>int</STRONG> <STRONG>startx)</STRONG>
-       <STRONG>int</STRONG> <STRONG>panel_hidden(const</STRONG> <STRONG>PANEL</STRONG> <STRONG>*pan)</STRONG>
-       <STRONG>PANEL</STRONG> <STRONG>*panel_above(const</STRONG> <STRONG>PANEL</STRONG> <STRONG>*pan)</STRONG>
-       <STRONG>PANEL</STRONG> <STRONG>*panel_below(const</STRONG> <STRONG>PANEL</STRONG> <STRONG>*pan)</STRONG>
-       <STRONG>int</STRONG> <STRONG>set_panel_userptr(PANEL</STRONG> <STRONG>*pan,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*ptr)</STRONG>
-       <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*panel_userptr(const</STRONG> <STRONG>PANEL</STRONG> <STRONG>*pan)</STRONG>
-       <STRONG>int</STRONG> <STRONG>del_panel(PANEL</STRONG> <STRONG>*pan)</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       Panels  are  <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>  windows with the added feature of
-       depth.  Panel functions allow the use of  stacked  windows
-       and  ensure  the  proper  portions  of each window and the
-       curses <STRONG>stdscr</STRONG> window are hidden or displayed  when  panels
-       are  added,  moved,  modified or removed.  The set of cur-
-       rently visible panels is the stack of panels.  The  <STRONG>stdscr</STRONG>
-       window  is  beneath all panels, and is not considered part
-       of the stack.
-
-       A window is associated with every panel.  The  panel  rou-
-       tines  enable you to create, move, hides, and show panels,
-       as well as position a panel at any desired location in the
-       stack.
-
-       Panel routines are a functional layer added to <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>,
-       make only high-level curses calls, and work anywhere  ter-
-       minfo curses does.
-
-
-</PRE>
-<H2>FUNCTIONS</H2><PRE>
-       <STRONG>new_panel(win)</STRONG>
-              allocates   a   <STRONG>PANEL</STRONG> structure, associates it with
-              <STRONG>win</STRONG>, places the panel  on  the  top  of  the  stack
-              (causes   it  to   be   displayed  above  any other
-              panel) and returns a pointer to the new panel.
-
-       <STRONG>void</STRONG> <STRONG>update_panels()</STRONG>
-              refreshes the virtual screen to reflect  the  rela-
-              tions between the panels in the stack, but does not
-              update_panels() may be called more than once before
-              a  call  to doupdate(), but doupdate() is the func-
-              tion responsible for updating the physical  screen.
-
-       <STRONG>del_panel(pan)</STRONG>
-              removes the given panel from the  stack and deallo-
-              cates the <STRONG>PANEL</STRONG> structure (but not  its  associated
-              window).
-
-       <STRONG>hide_panel(pan)</STRONG>
-              removes  the  given  panel from the panel stack and
-              thus hides it from view. The <STRONG>PANEL</STRONG> structure is not
-              lost, merely removed from the stack.
-
-       <STRONG>show_panel(pan)</STRONG>
-              makes  a  hidden panel visible by placing it on top
-              of the panels in the panel stack. See COMPATIBILITY
-              below.
-
-       <STRONG>top_panel(pan)</STRONG>
-              puts  the  given visible panel on top of all panels
-              in the stack.  See COMPATIBILITY below.
-
-       <STRONG>bottom_panel(pan)</STRONG>
-              puts panel at the bottom of all panels.
-
-       <STRONG>move_panel(pan,starty,startx)</STRONG>
-              moves the given panel window so that its upper-left
-              corner  is  at  <STRONG>starty</STRONG>, <STRONG>startx</STRONG>.  It does not change
-              the position of the panel in the stack.  Be sure to
-              use  this  function,  not  <STRONG>mvwin()</STRONG>, to move a panel
-              window.
-
-       <STRONG>replace_panel(pan,window)</STRONG>
-              replaces the current window of  panel  with  <STRONG>window</STRONG>
-              (useful, for example if you want to resize a panel;
-              if you're using <STRONG>ncurses</STRONG>, you can call <STRONG>replace_panel</STRONG>
-              on  the output of <STRONG><A HREF="wresize.3x.html">wresize(3X)</A></STRONG>).  It does not change
-              the position of the panel in the stack.
-
-       <STRONG>panel_above(pan)</STRONG>
-              returns a pointer to the panel above pan.   If  the
-              panel  argument is <STRONG>(PANEL</STRONG> <STRONG>*)0</STRONG>, it returns a pointer
-              to the bottom panel in the stack.
-
-       <STRONG>panel_below(pan)</STRONG>
-              returns a pointer to the panel just below pan.   If
-              the  panel  argument  is  <STRONG>(PANEL</STRONG>  <STRONG>*)0</STRONG>, it returns a
-              pointer to the top panel in the stack.
-
-       <STRONG>set_panel_userptr(pan,ptr)</STRONG>
-              sets the panel's user pointer.
-              returns the user pointer for a given panel.
-
-       <STRONG>panel_window(pan)</STRONG>
-              returns a pointer to the window of the given panel.
-
-
-</PRE>
-<H2>DIAGNOSTICS</H2><PRE>
-       Each  routine  that  returns  a pointer returns <STRONG>NULL</STRONG> if an
-       error occurs. Each  routine  that  returns  an  int  value
-       returns <STRONG>OK</STRONG> if it executes successfully and <STRONG>ERR</STRONG> if not.
-
-
-</PRE>
-<H2>COMPATIBILITY</H2><PRE>
-       Reasonable  care  has been taken to  ensure  compatibility
-       with  the  native  panel  facility  introduced  in  SVr3.2
-       (inspection of the SVr4 manual pages suggests the program-
-       ming interface is unchanged).  The <STRONG>PANEL</STRONG>  data  structures
-       are  merely   similar. The  programmer is cautioned not to
-       directly use <STRONG>PANEL</STRONG> fields.
-
-       The functions <STRONG>show_panel()</STRONG> and <STRONG>top_panel()</STRONG>  are  identical
-       in  this  implementation,  and work equally well with dis-
-       played or hidden panels.  In the native System V implemen-
-       tation, <STRONG>show_panel()</STRONG> is intended for making a hidden panel
-       visible (at the top  of  the  stack)  and  <STRONG>top_panel()</STRONG>  is
-       intended  for  making an already-visible panel move to the
-       top of the stack. You are cautioned  to  use  the  correct
-       function   to   ensure  compatibility  with  native  panel
-       libraries.
-
-
-</PRE>
-<H2>NOTE</H2><PRE>
-       In your library list, libpanel.a should  be  before  libn-
-       curses.a;  that  is,  you want to say `-lpanel -lncurses',
-       not the other way around (which  would  give  you  a  link
-       error using GNU <STRONG><A HREF="ld.1.html">ld(1)</A></STRONG> and some other linkers).
-
-
-</PRE>
-<H2>FILES</H2><PRE>
-       panel.h interface for the panels library
-
-       libpanel.a the panels library itself
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>
-
-
-</PRE>
-<H2>AUTHOR</H2><PRE>
-       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.
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/table.html b/Ada95/html/table.html
deleted file mode 100644 (file)
index 7d21204..0000000
+++ /dev/null
@@ -1,325 +0,0 @@
-<!DOCTYPE HTML
-PUBLIC "-//IETF//DTD HTML 3.0//EN">
-<HTML>
-<HEAD>
-<TITLE>Correspondence between ncurses C and Ada functions</TITLE>
-</HEAD>
-<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="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>
index c43e2873bc81aa036686b1837a7a40f2578cbcd5..c9582fb7a323a86ed7668c569793f28495f0e8c1 100644 (file)
@@ -29,7 +29,7 @@
 #  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 #
 #  Version Control
-#  $Revision: 1.21 $
+#  $Revision: 1.24 $
 #
 .SUFFIXES:
 
@@ -82,7 +82,7 @@ ALIB         = @cf_ada_package@
 ABASE        = $(ALIB)-curses
 
 CARGS        =-cargs $(ADAFLAGS)
-LARGS        =-largs -L../../lib $(LD_FLAGS) -lncurses
+LARGS        =-largs -L../../lib $(LD_FLAGS) -lAdaCurses -lncurses@LIB_SUFFIX@
 
 PROGS        = tour rain
 
@@ -102,6 +102,7 @@ all ::  demo1 rainy_day
 sources :
        @
 
+libs \
 install \
 install.libs ::
        @
index 46b232ad08a9da1e042e8a94ed8880613d3fc479..a3de1954896540d1ccb408e81dbdff7c393ad47f 100644 (file)
@@ -29,7 +29,7 @@
 #  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 #
 #  Version Control
-#  $Revision: 1.19 $
+#  $Revision: 1.20 $
 #
 .SUFFIXES:
 
@@ -171,10 +171,12 @@ dotouch :
 sources :
        @
 
-install ::
-install.libs ::
-uninstall ::
+libs \
+install \
+install.libs \
+uninstall \
 uninstall.libs ::
+       @
 
 generics: $(GENALIS)
        @
diff --git a/INSTALL b/INSTALL
index 5033c44bab7e902d342bc21a9efaafbc17cc8e3d..9058c0616ddec53da63f9518e1bc7528c914e6ea 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,7 +1,8 @@
--- $Id: INSTALL,v 1.33 1999/09/18 23:04:36 tom Exp $
+-- $Id: INSTALL,v 1.38 2000/07/08 22:46:08 tom Exp $
 ---------------------------------------------------------------------
              How to install Ncurses/Terminfo on your system
 ---------------------------------------------------------------------
+
     ************************************************************
     * READ ALL OF THIS FILE BEFORE YOU TRY TO INSTALL NCURSES. *
     ************************************************************
@@ -27,9 +28,6 @@ read the USING NCURSES WITH EMACS section below.
 If you are trying to build applications using gpm with ncurses,
 read the USING NCURSES WITH GPM section below.
 
-If you are trying to build Elvis using ncurses for terminal support,
-read the USING NCURSES WITH ELVIS section below.
-
 If you are running over the Andrew File System see the note below on
 USING NCURSES WITH AFS.
 
@@ -40,7 +38,9 @@ If you are using anything but (a) Linux, or (b) one of the 4.4BSD-based
 i386 Unixes, go read the Portability section in the TO-DO file before you
 do anything else.
 
+
 REQUIREMENTS:
+------------
 
 You will need the following in order to build and install ncurses under UNIX:
 
@@ -52,7 +52,9 @@ You will need the following in order to build and install ncurses under UNIX:
 
 Ncurses has been also built in the OS/2 EMX environment.
 
+
 INSTALLATION PROCEDURE:
+----------------------
 
 1.  First, decide whether you want ncurses to replace your existing library (in
     which case you'll need super-user privileges) or be installed in parallel
@@ -66,7 +68,7 @@ INSTALLATION PROCEDURE:
     The package gets installed beneath the --prefix directory as follows:
 
     In $(prefix)/bin:          tic, infocmp, captoinfo, tset,
-                               reset, clear, tput, toe
+                               reset, clear, tput, toe
     In $(prefix)/lib:          libncurses*.* libcurses.a
     In $(prefix)/share/terminfo: compiled terminal descriptions
     In $(prefix)/include:      C header files
@@ -102,19 +104,19 @@ INSTALLATION PROCEDURE:
     If you do not specify any models, the normal and debug libraries will be
     configured.  Typing `configure' with no arguments is equivalent to:
 
-       ./configure --with-normal --with-debug --enable-overwrite
+       ./configure --with-normal --with-debug --enable-overwrite
 
     Typing
 
-       ./configure --with-shared
+       ./configure --with-shared
 
     makes the shared libraries the default, resulting in
 
-       ./configure --with-shared --with-normal --with-debug --enable-overwrite
+       ./configure --with-shared --with-normal --with-debug --enable-overwrite
 
     If you want only shared libraries, type
 
-       ./configure --with-shared --without-normal --without-debug
+       ./configure --with-shared --without-normal --without-debug
 
     Rules for generating shared libraries are highly dependent upon the choice
     of host system and compiler.  We've been testing shared libraries on Linux
@@ -130,14 +132,14 @@ INSTALLATION PROCEDURE:
 3.  Type `make'.  Ignore any warnings, no error messages should be produced.
     This should compile the ncurses library, the terminfo compiler tic(1),
     captoinfo(1), infocmp(1), toe(1), clear(1) tset(1), reset(1), and tput(1)
-    programs (see the man pages for explanation of what they do), some test
+    programs (see the manual pages for explanation of what they do), some test
     programs, and the panels, menus, and forms libraries.
 
 4.  Run ncurses and several other test programs in the test directory to
     verify that ncurses functions correctly before doing an install that
     may overwrite system files.  Read the file test/README for details on
     the test programs.
-    
+
     NOTE: You must have installed the terminfo database, or set the
     environment variable $TERMINFO to point to a SVr4-compatible terminfo
     database before running the test programs.  Not all vendors' terminfo
@@ -149,17 +151,17 @@ INSTALLATION PROCEDURE:
     cursor addressing and window scrolling works OK, etc.
 
 5.  Once you've tested, you can type `make install' to install libraries,
-    the programs, the terminfo database and the man pages.  Alternately, you
+    the programs, the terminfo database and the manual pages.  Alternately, you
     can type `make install' in each directory you want to install.  In the
     top-level directory, you can do a partial install using these commands:
 
        'make install.progs'    installs tic, infocmp, etc...
-       'make install.includes' installs the headers.
-       'make install.libs'     installs the libraries (and the headers).
-       'make install.data'     installs the terminfo data. (Note: `tic' must
-                               be installed before the terminfo data can be
-                               compiled).
-       'make install.man'      installs the man pages.
+       'make install.includes' installs the headers.
+       'make install.libs'     installs the libraries (and the headers).
+       'make install.data'     installs the terminfo data. (Note: `tic' must
+                               be installed before the terminfo data can be
+                               compiled).
+       'make install.man'      installs the manual pages.
 
   ############################################################################
   #     CAVEAT EMPTOR: `install.data' run as root will NUKE any existing     #
@@ -168,9 +170,9 @@ INSTALLATION PROCEDURE:
   #  this purpose.  Don't forget to run tic on the file once you're done.    #
   ############################################################################
 
-    The terminfo(5) manual page wants to be preprocessed with tbl(1) before
+    The terminfo(5) manual page must be preprocessed with tbl(1) before
     being formatted by nroff(1).  Modern man(1) implementations tend to do
-    this by default, but you may want to look at your version's man page
+    this by default, but you may want to look at your version's manual page
     to be sure.
 
     If the system already has a curses library that you need to keep using
@@ -205,7 +207,7 @@ INSTALLATION PROCEDURE:
     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
@@ -226,7 +228,527 @@ INSTALLATION PROCEDURE:
     and you'll have to redo it. There is no need to have entries for all
     possible screen sizes, ncurses will figure out the size automatically.
 
+
+SUMMARY OF CONFIGURE OPTIONS:
+----------------------------
+
+    The configure script provides a short list of its options when you type
+
+       ./configure --help
+
+    The --help and several options are common to all configure scripts that are
+    generated with autoconf.  Those are all listed before the line
+
+       --enable and --with options recognized:
+
+    The other options are specific to this package.  We list them in alphabetic
+    order.
+
+    --disable-big-core
+       Assume machine has little memory.  The configure script attempts to
+       determine if your machine has enough memory (about 6Mb) to compile the
+       terminfo database without writing portions to disk.  Some allocators
+       return deceptive results, so you may have to override the configure
+       script.  Or you may be building tic for a smaller machine.
+
+    --disable-database
+       Use only built-in data.  The ncurses libraries normally read terminfo
+       and termcap data from disk.  You can configure ncurses to have a
+       built-in database, aka "fallback" entries.  Embedded applications may
+       have no need for an external database.
+
+    --disable-ext-funcs
+       Disable function-extensions.  Configure ncurses without the functions
+       that are not specified by XSI.  See ncurses/modules for the exact
+       list of library modules that would be suppressed.
+
+    --disable-leaks
+       For testing, compile-in code that frees memory that normally would not
+       be freed, to simplify analysis of memory-leaks.
+
+    --disable-macros
+       For testing, use functions rather than macros.  The program will run
+       more slowly, but it is simpler to debug.  This makes a header file
+       "nomacros.h".  See also the --enable-expanded option.
+
+    --disable-overwrite
+       If you are installing ncurses on a system which contains another
+       development version of curses, or which could be confused by the loader
+       for another version, we recommend that you leave out the link to
+       -lcurses.  The ncurses library is always available as -lncurses.
+       Disabling overwrite also causes the ncurses header files to be
+       installed into a subdirectory, e.g., /usr/local/include/ncurses,
+       rather than the include directory.  This makes it simpler to avoid
+       compile-time conflicts with other versions of curses.h
+
+    --disable-scroll-hints
+       Compile without scroll-hints code.  This option is ignored when
+       hashmap scrolling is configured, which is the default.
+
+    --enable-add-ons=DIR...
+       This is used to check if this package is a glibc add-on.  This is used
+       only by the glibc makefiles.
+
+    --enable-assertions
+       For testing, compile-in assertion code.  This is used only for a few
+       places where ncurses cannot easily recover by returning an error code.
+
+    --enable-broken_linker
+       A few platforms have what we consider a broken linker:  it cannot link
+       objects from an archive solely by referring to data objects in those
+       files, but requires a function reference.  This configure option
+       changes several data references to functions to work around this
+       problem.
+
+       NOTE:  With ncurses 5.1, this may not be necessary, since we are
+       told that some linkers interpret uninitialized global data as a
+       different type of reference which behaves as described above.  We have
+       explicitly initialized all of the global data to work around the
+       problem.
+
+    --enable-bsdpad
+       Recognize BSD-style prefix padding.  Some ancient BSD programs (such as
+       nethack) call tputs("50") to implement delays.
+
+    --enable-colorfgbg
+       Compile with experimental $COLORFGBG code.  That environment variable
+       is set by some terminal emulators as a hint to applications, by
+       advertising the default foreground and background colors.  During
+       initialization, ncurses sets color pair 0 to match this.
+
+    --enable-const
+       The curses interface as documented in XSI is rather old, in fact
+       including features that precede ANSI C.  The prototypes generally do
+       not make effective use of "const".  When using stricter compilers (or
+       gcc with appropriate warnings), you may see warnings about the mismatch
+       between const and non-const data.  We provide a configure option which
+       changes the interfaces to use const - quieting these warnings and
+       reflecting the actual use of the parameters more closely.  The ncurses
+       library uses the symbol NCURSES_CONST for these instances of const,
+       and if you have asked for compiler warnings, will add gcc's const-qual
+       warning.  There will still be warnings due to subtle inconsistencies
+       in the interface, but at a lower level.
+
+       NOTE:  configuring ncurses with this option may detract from the
+       portability of your applications by encouraging you to use const in
+       places where the XSI curses interface would not allow them.  Similar
+       issues arise when porting to SVr4 curses, which uses const in even
+       fewer places.
+
+    --enable-echo
+       Use the option --disable-echo to make the build-log less verbose by
+       suppressing the display of the compile and link commands.  This makes
+       it easier to see the compiler warnings.  (You can always use "make -n"
+       to see the options that are used).
+
+    --enable-expanded
+       For testing, generate functions for certain macros to make them visible
+       as such to the debugger.  See also the --disable-macros option.
+
+    --enable-getcap
+       Use the 4.4BSD getcap code if available, or a bundled version of it to
+       fetch termcap entries.  Entries read in this way cannot use (make
+       cross-references to) the terminfo tree, but it is faster than reading
+       /etc/termcap.
+
+    --enable-getcap-cache
+       Cache translated termcaps under the directory $HOME/.terminfo
+
+       NOTE:  this sounds good - it makes ncurses run faster the second time. 
+       But look where the data comes from - an /etc/termcap containing lots of
+       entries that are not up to date.  If you configure with this option and
+       forget to install the terminfo database before running an ncurses
+       application, you will end up with a hidden terminfo database that
+       generally does not support color and will miss some function keys.
+
+    --enable-hard-tabs
+       Compile-in cursor-optimization code that uses hard-tabs.  We would make
+       this a standard feature except for the concern that the terminfo entry
+       may not be accurate, or that your stty settings have disabled the use
+       of tabs.
+
+    --enable-hashmap
+       Compile with hashmap scrolling-optimization code.  This is the default,
+       replacing an older scrolling-hints algorithm.
+
+    --enable-no-padding
+       Compile-in support for the $NCURSES_NO_PADDING environment variable,
+       which allows you to suppress the effect of non-mandatory padding in
+       terminfo entries.  This is the default, unless you have disabled the
+       extended functions.
+
+    --enable-rpath
+       Use rpath option when generating shared libraries.  This applies mainly
+       to systems using the GNU linker (read the manpage).
+
+    --enable-safe-sprintf
+       Compile with experimental safe-sprintf code.  You may consider using
+       this if you are building ncurses for a system that has neither
+       vsnprintf() or vsprintf().  It is slow, however.
+
+    --enable-sigwinch
+       Compile support for ncurses' SIGWINCH handler.  If your application has
+       its own SIGWINCH handler, ncurses will not use its own.  The ncurses
+       handler causes wgetch() to return KEY_RESIZE when the screen-size
+       changes.  This option is the default, unless you have disabled the
+       extended functions.
+
+    --enable-symlinks
+       If your system supports symbolic links, make tic use symbolic links
+       rather than hard links to save diskspace when writing aliases in the
+       terminfo database.
+
+    --enable-tcap-names
+       Compile-in support for user-definable terminal capabilities.  Use the
+       -x option of tic and infocmp to treat unrecognized terminal
+       capabilities as user-defined strings.  This option is the default,
+       unless you have disabled the extended functions.
+
+    --enable-termcap
+       Compile in support for reading terminal descriptions from termcap if no
+       match is found in the terminfo database.  See also the --enable-getcap
+       and --enable-getcap-cache options.
+
+    --enable-warnings
+       Turn on GCC compiler warnings.  There should be only a few.
+
+    --enable-widec
+       Compile with experimental wide-character code.  This makes a different
+       version of the libraries (e.g., libncursesw.so), which stores
+       characters in 16-bits.  We provide a simple UTF-8 driver and test
+       program to use this feature with terminals that can display UTF-8.
+
+       NOTE: applications compiled with this configuration are not compatible
+       with those built for 8-bit characters.  You cannot simply make a
+       symbolic link to equate libncurses.so with libncursesw.so
+
+    --enable-xmc-glitch
+       Compile-in support experimental xmc (magic cookie) code.
+
+    --with-ada-compiler=CMD
+       Specify the Ada95 compiler command (default "gnatmake")
+
+    --with-ada-include=DIR
+       Tell where to install the Ada includes (default: 
+       PREFIX/lib/ada/adainclude)
+
+    --with-ada-objects=DIR
+       Tell where to install the Ada objects (default:  PREFIX/lib/ada/adalib)
+
+    --with-dbmalloc
+       For testing, compile and link with Conor Cahill's dbmalloc library.
+
+    --with-debug
+       Generate debug-libraries (default).  These are named by adding "_g"
+       to the root, e.g., libncurses_g.a
+
+    --with-develop
+       Enable experimental/development options.  This does not count those
+       that change the interface, such as --enable-widec.
+
+    --with-dmalloc
+       For testing, compile and link with Gray Watson's dmalloc library.
+
+    --with-fallbacks=XXX
+       Specify a list of fallback terminal descriptions which will be
+       compiled into the ncurses library.  See CONFIGURING FALLBACK ENTRIES.
+
+    --with-gpm
+       use Alessandro Rubini's GPM library to provide mouse support on the
+       Linux console.
+
+    --with-install-prefix=XXX
+       Allows you to specify an alternate location for installing ncurses
+       after building it.  The value you specify is prepended to the "real"
+       install location.  This simplifies making binary packages.
+
+       NOTE:  a few systems build shared libraries with fixed pathnames; this
+       option probably will not work for those configurations.
+
+    --with-manpage-format=XXX
+       Tell the configure script how you would like to install man-pages.  The
+       option value must be one of these:  gzip, compress, BSDI, normal,
+       formatted.  If you do not give this option, the configure script
+       attempts to determine which is the case.
+
+    --with-manpage-renames=XXX
+       Tell the configure script that you wish to rename the manpages while
+       installing.  Currently the only distribution which does this is
+       the Linux Debian.  The option value specifies the name of a file
+       that lists the renamed files, e.g., $srcdir/man/man_db.renames
+
+    --with-manpage-symlinks
+       Tell the configure script that you wish to make symbolic links in the
+       man-directory for aliases to the man-pages.  This is the default, but
+       can be disabled for systems that provide this automatically.  Doing
+       this on systems that do not support symbolic links will result in
+       copying the man-page for each alias.
+
+    --with-normal
+       Generate normal (i.e., static) libraries (default).
+
+    --with-profile
+       Generate profile-libraries These are named by adding "_p" to the root,
+       e.g., libncurses_p.a
+
+    --with-rcs-ids
+       Compile-in RCS identifiers.  Most of the C files have an identifier.
+
+    --with-shared
+       Generate shared-libraries.  The names given depend on the system for
+       which you are building, typically using a ".so" suffix, along with
+       symbolic links that refer to the release version.
+       
+       NOTE:  Unless you override the configure script by setting the $CFLAGS
+       environment variable, these will not be built with the -g debugging
+       option.
+
+    --with-shlib-version=XXX
+       Specify whether to use the release or ABI version for shared libraries.
+       This is normally chosen automatically based on the type of system
+       which you are building on.  We use it for testing the configure script.
+
+    --with-system-type=XXX
+       For testing, override the derived host system-type which is used to
+       decide things such as the linker commands used to build shared
+       libraries.  This is normally chosen automatically based on the type of
+       system which you are building on.  We use it for testing the configure
+       script.
+
+    --with-terminfo-dirs=XXX
+       Specify a search-list of terminfo directories which will be compiled into
+       the ncurses library (default: DATADIR/terminfo)
+
+    --with-termlib
+       When building the ncurses library, organize this as two parts:  the
+       curses library (libncurses) and the low-level terminfo library
+       (libtinfo).  This is done to accommodate applications that use only
+       the latter.  The terminfo library is about half the size of the total.
+
+    --without-ada
+       Suppress the configure script's check for Ada95, do not build the
+       Ada95 binding and related demo.
+
+    --without-cxx
+       XSI curses declares "bool" as part of the interface.  C++ also declares
+       "bool".  Neither specifies the size and type of booleans, but both
+       insist on the same name.  We chose to accommodate this by making the
+       configure script check for the size and type (e.g., unsigned or signed)
+       that your C++ compiler uses for booleans.  If you do not wish to use
+       ncurses with C++, use this option to tell the configure script to not
+       adjust ncurses bool to match C++.
+
+    --without-cxx-binding
+       Suppress the configure script's check for C++, do not build the
+       C++ binding and related demo.
+
+    --without-progs
+       Tell the configure script to suppress the build of ncurses' application
+       programs (e.g., tic).  The test applications will still be built if you
+       type "make", though not if you simply do "make install".
+
+
+COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
+--------------------------------------------
+
+    Because ncurses implements the X/Open Curses Specification, its interface
+    is fairly stable.  That does not mean the interface does not change.
+    Changes are made to the documented interfaces when we find differences
+    between ncurses and X/Open or implementations which they certify (such as
+    Solaris).  We add extensions to those interfaces to solve problems not
+    addressed by the original curses design, but those must not conflict with
+    the X/Open documentation.
+
+    Here are some of the major interface changes, and related problems which
+    you may encounter when building a system with different versions of
+    ncurses:
+
+    5.1 (July 8, 2000)
+       Interface changes:
+
+       + made the extended terminal capabilities
+         (configure --enable-tcap-names) a standard feature.  This should
+         be transparent to applications that do not require it.
+
+       + removed the trace() function and related trace support from the
+         production library.
+
+       + modified curses.h.in, undef'ing some symbols to avoid conflict
+         with C++ STL.
+
+       Added extensions:  assume_default_colors().
+
+    5.0 (October 23, 1999)
+       Interface changes:
+
+       + implemented the wcolor_set() and slk_color() functions.
+
+       + move macro winch to a function, to hide details of struct ldat
+
+       + 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.
+
+       + modified several prototypes to correspond with 1997 version of X/Open
+         Curses:  [w]attr_get(), [w]attr_set(), border_set() have different
+         parameters.  Some functions were renamed or misspelled:
+         erase_wchar(), in_wchntr(), mvin_wchntr().  Some developers have used
+         attr_get().
+
+       Added extensions:  keybound(), curses_version().
+
+       Terminfo database changes:
+
+       + change translation for termcap 'rs' to terminfo 'rs2', which is
+         the documented equivalent, rather than 'rs1'.
+
+       The problems are subtler in recent releases.
+
+       a) This release provides users with the ability to define their own
+          terminal capability extensions, like termcap.  To accomplish this,
+          we redesigned the TERMTYPE struct (in term.h).  Very few
+          applications use this struct.  They must be recompiled to work with
+          the 5.0 library.
+
+       a) If you use the extended terminfo names (i.e., you used configure
+          --enable-tcap-names), the resulting terminfo database can have some
+          entries which are not readable by older versions of ncurses.  This
+          is a bug in the older versions:
+
+          + the terminfo database stores booleans, numbers and strings in
+            arrays.  The capabilities that are listed in the arrays are
+            specified by X/Open.  ncurses recognizes a number of obsolete and
+            extended names which are stored past the end of the specified
+            entries.
+
+          + a change to read_entry.c in 951001 made the library do an lseek()
+            call incorrectly skipping data which is already read from the
+            string array.  This happens when the number of strings in the
+            terminfo data file is greater than STRCOUNT, the number of
+            specified and obsolete or extended strings.
+
+          + as part of alignment with the X/Open final specification, in the
+            990109 patch we added two new terminfo capabilities:
+            set_a_attributes and set_pglen_inch).  This makes the indices for
+            the obsolete and extended capabilities shift up by 2.
+
+          + the last two capabilities in the obsolete/extended list are memu
+            and meml, which are found in most terminfo descriptions for xterm.
+
+            When trying to read this terminfo entry, the spurious lseek()
+            causes the library to attempt to read the final portion of the
+            terminfo data (the text of the string capabilities) 4 characters
+            past its starting point, and reads 4 characters too few.  The
+            library rejects the data, and applications are unable to
+            initialize that terminal type.
+
+          FIX: remove memu and meml from the xterm description.  They are
+          obsolete, not used by ncurses.  (It appears that the feature was
+          added to xterm to make it more like hpterm).
+
+          This is not a problem if you do not use the -x option of tic to
+          create a terminfo database with extended names.  Note that the
+          user-defined terminal capabilities are not affected by this bug,
+          since they are stored in a table after the older terminfo data ends,
+          and are invisible to the older libraries.
+
+       c) Some developers did not wish to use the C++ binding, and used the
+          configure --without-cxx option.  This causes problems if someone
+          uses the ncurses library from C++ because that configure test
+          determines the type for C++'s bool and makes ncurses match it, since
+          both C++ and curses are specified to declare bool.  Calling ncurses
+          functions with the incorrect type for bool will cause execution
+          errors.  In 5.0 we added a configure option "--without-cxx-binding"
+          which controls whether the binding itself is built and installed.
+
+    4.2 (March 2, 1998)
+       Interface changes:
+
+       + correct prototype for termattrs() as per XPG4 version 2.
+
+       + add placeholder prototypes for color_set(), erasewchar(),
+         term_attrs(), wcolor_set() as per XPG4 version 2.
+
+       + add macros getcur[xy] getbeg[xy] getpar[xy], which are defined in
+         SVr4 headers.
+
+       New extensions: keyok() and define_key().
+
+       Terminfo database changes:
+
+       + corrected definition in curses.h for ACS_LANTERN, which was 'I'
+         rather than 'i'.
+
+    4.1 (May 15, 1997)
+
+       We added these extensions:  use_default_colors().  Also added
+       configure option --enable-const, to support the use of const where
+       X/Open should have, but did not, specify.
+
+       The terminfo database content changed the representation of color for
+       most entries that use ANSI colors.  SVr4 curses treats the setaf/setab
+       and setf/setb capabilities differently, interchanging the red/blue
+       colors in the latter.
+
+    4.0 (December 24, 1996)
+
+       We bumped to version 4.0 because the newly released dynamic loader
+       (ld.so.1.8.5) on Linux did not load shared libraries whose ABI and REL
+       versions were inconsistent.  At that point, ncurses ABI was 3.4 and the
+       REL was 1.9.9g, so we made them consistent.
+
+    1.9.9g (December 1, 1996)
+
+       This fixed most of the problems with 1.9.9e, and made these interface
+       changes:
+
+       + remove tparam(), which had been provided for compatibility with
+         some termcap.  tparm() is standard, and does not conflict with
+         application's fallback for missing tparam().
+
+       + turn off hardware echo in initscr().  This changes the sense of the
+         echo() function, which was initialized to echoing rather than
+         nonechoing (the latter is specified).  There were several other
+         corrections to the terminal I/O settings which cause applications to
+         behave differently.
+
+       + implemented several functions (such as attr_on()) which were
+         available only as macros.
+
+       + corrected several typos in curses.h.in (i.e., the mvXXXX macros).
+
+       + corrected prototypes for delay_output(),
+         has_color, immedok() and idcok().
+
+       + corrected misspelled getbkgd().  Some applications used the
+         misspelled name.
+
+       + added _yoffset to WINDOW.  The size of WINDOW does not impact
+         applications, since they use only pointers to WINDOW structs.
+
+       These changes were made to the terminfo database:
+
+       + removed boolean 'getm' which was available as an extended name.
+
+       We added these extensions: wresize(), resizeterm(), has_key() and
+       mcprint().
+
+    1.9.9e (March 24, 1996)
+
+       not recommended (a last-minute/untested change left the forms and
+       menus libraries unusable since they do not repaint the screen).
+       Foreground/background colors are combined incorrectly, working properly
+       only on a black background.  When this was released, the X/Open
+       specification was available only in draft form.
+
+       Some applications (such as lxdialog) were "fixed" to work with the
+       incorrect color scheme.
+
+
 IF YOU ARE A SYSTEM INTEGRATOR:
+------------------------------
 
     Beginning with 1.9.9, the ncurses distribution includes both a tset
     utility and /usr/share/tabset directory.  If you are installing ncurses,
@@ -265,7 +787,7 @@ IF YOU ARE A SYSTEM INTEGRATOR:
        reverse-tabulation sequence) rather than ^I.  Here are the loadkeys -d
        mappings that will set this up:
 
-               keycode  15 = Tab             Tab
+               keycode  15 = Tab             Tab
                        alt     keycode  15 = Meta_Tab
                        shift   keycode  15 = F26
                string F26 ="\033[Z"
@@ -297,7 +819,10 @@ IF YOU ARE A SYSTEM INTEGRATOR:
        to us explaining why you don't want to, so we can work out nomenclature
        that will make users' lives easier rather than harder.
 
-RECENT XTERM VERSIONS
+
+RECENT XTERM VERSIONS:
+---------------------
+
        The terminfo database file included with this distribution assumes you
        are running an XFree86 xterm based on X11R6 (i.e., xterm-r6).  The
        earlier X11R5 entry (xterm-r5) is provided as well.
@@ -311,7 +836,10 @@ RECENT XTERM VERSIONS
        applications that assume these capabilities will produce incorrect
        output on the older xterm (e.g., highlighting is not cleared).
 
-CONFIGURING FALLBACK ENTRIES
+
+CONFIGURING FALLBACK ENTRIES:
+----------------------------
+
        In order to support operation of ncurses programs before the terminfo
        tree is accessible (that is, in single-user mode or at OS installation
        time) the ncurses library can be compiled to include an array of
@@ -348,7 +876,10 @@ CONFIGURING FALLBACK ENTRIES
        fallbacks.  A good rule of thumb for modern vt100-like entries is that
        each one will cost about 2.5K of text space.
 
+
 BSD CONVERSION NOTES:
+--------------------
+
        If you need to support really ancient BSD programs, you probably
        want to configure with the --enable-bsdpad option.  What this does
        is enable code in tputs() that recognizes a numeric prefix on a
@@ -359,7 +890,7 @@ BSD CONVERSION NOTES:
        an application you probably want to put the remainder of this section
        in the package README file.)
 
-        The following note applies only if you have configured ncurses with
+       The following note applies only if you have configured ncurses with
        --enable-termcap.
 
 ------------------------------- CUT HERE --------------------------------
@@ -432,54 +963,26 @@ USING NCURSES WITH GPM:
        which is used on Linux console.  Be aware that GPM is commonly
        installed as a shared library which contains a wrapper for the curses
        wgetch() function (libcurses.o).  Some integrators have simplified
-       linking applications by combining all of libcurses.so (the BSD curses)
-       into the libgpm.so file, producing symbol conflicts with ncurses.  You
-       may be able to work around this problem by linking as follows:
+       linking applications by combining all or part of libcurses.so (the BSD
+       curses) into the libgpm.so file, producing symbol conflicts with
+       ncurses (specifically the wgetch function).  You may be able to work
+       around this problem by linking as follows:
 
                cc -o foo foo.o -lncurses -lgpm -lncurses
 
        but the linker may not cooperate, producing mysterious errors.
        A patched version of gpm is available:
 
-               ftp.clark.net:/pub/dickey/ncurses/gpm-1.10-970125.tgz
+               dickey.his.com:/ncurses/gpm-1.10-970125.tar.gz
 
        This patch is incorporated in gpm 1.12; however some integrators
-       are slow to update this library.
-
-USING NCURSES WITH ELVIS:
-       To use ncurses as the screen-painting library for Elvis, apply the
-       following patch to the Elvis curses
-
-*** curses.c.orig       Sun Jun 26 05:48:23 1994
---- curses.c    Sun Feb 11 16:50:41 1996
-***************
-*** 986,992 ****
-  {
-        if (has_IM)
-                do_IM();
-!       do_IC();
-        qaddch(ch);
-        if (has_EI)
-                do_EI();
---- 986,995 ----
-  {
-        if (has_IM)
-                do_IM();
-!#ifdef NCURSES_VERSION
-!       else   /* ncurses does insertion in a slightly nonstandard way */
-!#endif
-!               do_IC();
-        qaddch(ch);
-        if (has_EI)
-                do_EI();
-
-This patch is for elvis-1.8pl4 but it can even be used for elvis-1.8pl3 with
-an offset of -11 lines.
+       are slow to update this library.  Current distributions of gpm can
+       be configured properly using the --without-curses option.
 
 BUGS:
        Send any feedback to the ncurses mailing list at
-       bug-ncurses@gnu.org. To subscribe send mail to 
-       bug-ncurses-request@gnu.org 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 a69adea605588278eeb0272146b1a95e33789e78..0007f2aa46df4268c00cc765da4583763b4e6945 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -4,7 +4,9 @@
 ./Ada95/TODO
 ./Ada95/gen/Makefile.in
 ./Ada95/gen/gen.c
+./Ada95/gen/html.m4
 ./Ada95/gen/normal.m4
+./Ada95/gen/table.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-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
-./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/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/samples/Makefile.in
 ./Ada95/samples/README
 ./Ada95/samples/explain.txt
 ./README.glibc
 ./TO-DO
 ./aclocal.m4
-./announce.html
 ./announce.html.in
 ./c++/Makefile.in
 ./c++/NEWS
 ./configure.in
 ./convert_configure.pl
 ./dist.mk
+./doc/hackguide.doc
+./doc/html/Ada95.html
+./doc/html/ada/files.htm
+./doc/html/ada/files/T.htm
+./doc/html/ada/funcs.htm
+./doc/html/ada/funcs/A.htm
+./doc/html/ada/funcs/B.htm
+./doc/html/ada/funcs/C.htm
+./doc/html/ada/funcs/D.htm
+./doc/html/ada/funcs/E.htm
+./doc/html/ada/funcs/F.htm
+./doc/html/ada/funcs/G.htm
+./doc/html/ada/funcs/H.htm
+./doc/html/ada/funcs/I.htm
+./doc/html/ada/funcs/K.htm
+./doc/html/ada/funcs/L.htm
+./doc/html/ada/funcs/M.htm
+./doc/html/ada/funcs/N.htm
+./doc/html/ada/funcs/O.htm
+./doc/html/ada/funcs/P.htm
+./doc/html/ada/funcs/Q.htm
+./doc/html/ada/funcs/R.htm
+./doc/html/ada/funcs/S.htm
+./doc/html/ada/funcs/T.htm
+./doc/html/ada/funcs/U.htm
+./doc/html/ada/funcs/V.htm
+./doc/html/ada/funcs/W.htm
+./doc/html/ada/index.htm
+./doc/html/ada/main.htm
+./doc/html/ada/table.html
+./doc/html/ada/terminal_interface-curses-aux__adb.htm
+./doc/html/ada/terminal_interface-curses-aux__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm
+./doc/html/ada/terminal_interface-curses-forms__adb.htm
+./doc/html/ada/terminal_interface-curses-forms__ads.htm
+./doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm
+./doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm
+./doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm
+./doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm
+./doc/html/ada/terminal_interface-curses-menus__adb.htm
+./doc/html/ada/terminal_interface-curses-menus__ads.htm
+./doc/html/ada/terminal_interface-curses-mouse__adb.htm
+./doc/html/ada/terminal_interface-curses-mouse__ads.htm
+./doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm
+./doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm
+./doc/html/ada/terminal_interface-curses-panels__adb.htm
+./doc/html/ada/terminal_interface-curses-panels__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io__ads.htm
+./doc/html/ada/terminal_interface-curses__adb.htm
+./doc/html/ada/terminal_interface-curses__ads.htm
+./doc/html/ada/terminal_interface__ads.htm
+./doc/html/announce.html
+./doc/html/hackguide.html
+./doc/html/index.html
+./doc/html/man/captoinfo.1m.html
+./doc/html/man/clear.1.html
+./doc/html/man/curs_addch.3x.html
+./doc/html/man/curs_addchstr.3x.html
+./doc/html/man/curs_addstr.3x.html
+./doc/html/man/curs_attr.3x.html
+./doc/html/man/curs_beep.3x.html
+./doc/html/man/curs_bkgd.3x.html
+./doc/html/man/curs_border.3x.html
+./doc/html/man/curs_clear.3x.html
+./doc/html/man/curs_color.3x.html
+./doc/html/man/curs_delch.3x.html
+./doc/html/man/curs_deleteln.3x.html
+./doc/html/man/curs_extend.3x.html
+./doc/html/man/curs_getch.3x.html
+./doc/html/man/curs_getstr.3x.html
+./doc/html/man/curs_getyx.3x.html
+./doc/html/man/curs_inch.3x.html
+./doc/html/man/curs_inchstr.3x.html
+./doc/html/man/curs_initscr.3x.html
+./doc/html/man/curs_inopts.3x.html
+./doc/html/man/curs_insch.3x.html
+./doc/html/man/curs_insstr.3x.html
+./doc/html/man/curs_instr.3x.html
+./doc/html/man/curs_kernel.3x.html
+./doc/html/man/curs_mouse.3x.html
+./doc/html/man/curs_move.3x.html
+./doc/html/man/curs_outopts.3x.html
+./doc/html/man/curs_overlay.3x.html
+./doc/html/man/curs_pad.3x.html
+./doc/html/man/curs_print.3x.html
+./doc/html/man/curs_printw.3x.html
+./doc/html/man/curs_refresh.3x.html
+./doc/html/man/curs_scanw.3x.html
+./doc/html/man/curs_scr_dump.3x.html
+./doc/html/man/curs_scroll.3x.html
+./doc/html/man/curs_slk.3x.html
+./doc/html/man/curs_termattrs.3x.html
+./doc/html/man/curs_termcap.3x.html
+./doc/html/man/curs_terminfo.3x.html
+./doc/html/man/curs_touch.3x.html
+./doc/html/man/curs_trace.3x.html
+./doc/html/man/curs_util.3x.html
+./doc/html/man/curs_window.3x.html
+./doc/html/man/define_key.3x.html
+./doc/html/man/dft_fgbg.3x.html
+./doc/html/man/form.3x.html
+./doc/html/man/form_cursor.3x.html
+./doc/html/man/form_data.3x.html
+./doc/html/man/form_driver.3x.html
+./doc/html/man/form_field.3x.html
+./doc/html/man/form_field_attributes.3x.html
+./doc/html/man/form_field_buffer.3x.html
+./doc/html/man/form_field_info.3x.html
+./doc/html/man/form_field_just.3x.html
+./doc/html/man/form_field_new.3x.html
+./doc/html/man/form_field_opts.3x.html
+./doc/html/man/form_field_userptr.3x.html
+./doc/html/man/form_field_validation.3x.html
+./doc/html/man/form_fieldtype.3x.html
+./doc/html/man/form_hook.3x.html
+./doc/html/man/form_new.3x.html
+./doc/html/man/form_new_page.3x.html
+./doc/html/man/form_opts.3x.html
+./doc/html/man/form_page.3x.html
+./doc/html/man/form_post.3x.html
+./doc/html/man/form_requestname.3x.html
+./doc/html/man/form_userptr.3x.html
+./doc/html/man/form_win.3x.html
+./doc/html/man/infocmp.1m.html
+./doc/html/man/infotocap.1m.html
+./doc/html/man/keybound.3x.html
+./doc/html/man/keyok.3x.html
+./doc/html/man/menu.3x.html
+./doc/html/man/menu_attribs.3x.html
+./doc/html/man/menu_cursor.3x.html
+./doc/html/man/menu_driver.3x.html
+./doc/html/man/menu_format.3x.html
+./doc/html/man/menu_hook.3x.html
+./doc/html/man/menu_items.3x.html
+./doc/html/man/menu_mark.3x.html
+./doc/html/man/menu_new.3x.html
+./doc/html/man/menu_opts.3x.html
+./doc/html/man/menu_pattern.3x.html
+./doc/html/man/menu_post.3x.html
+./doc/html/man/menu_requestname.3x.html
+./doc/html/man/menu_spacing.3x.html
+./doc/html/man/menu_userptr.3x.html
+./doc/html/man/menu_win.3x.html
+./doc/html/man/mitem_current.3x.html
+./doc/html/man/mitem_name.3x.html
+./doc/html/man/mitem_new.3x.html
+./doc/html/man/mitem_opts.3x.html
+./doc/html/man/mitem_userptr.3x.html
+./doc/html/man/mitem_value.3x.html
+./doc/html/man/mitem_visible.3x.html
+./doc/html/man/ncurses.3x.html
+./doc/html/man/panel.3x.html
+./doc/html/man/resizeterm.3x.html
+./doc/html/man/term.5.html
+./doc/html/man/term.7.html
+./doc/html/man/terminfo.5.html
+./doc/html/man/tic.1m.html
+./doc/html/man/toe.1m.html
+./doc/html/man/tput.1.html
+./doc/html/man/tset.1.html
+./doc/html/man/wresize.3x.html
+./doc/html/ncurses-intro.html
+./doc/ncurses-intro.doc
 ./form/Makefile.in
 ./form/READ.ME
 ./form/fld_arg.c
 ./man/curs_color.3x
 ./man/curs_delch.3x
 ./man/curs_deleteln.3x
+./man/curs_extend.3x
 ./man/curs_getch.3x
 ./man/curs_getstr.3x
 ./man/curs_getyx.3x
 ./man/curs_termcap.3x
 ./man/curs_terminfo.3x
 ./man/curs_touch.3x
+./man/curs_trace.3x
 ./man/curs_util.3x
 ./man/curs_window.3x
 ./man/define_key.3x
 ./man/form_userptr.3x
 ./man/form_win.3x
 ./man/infocmp.1m
+./man/infotocap.1m
 ./man/keybound.3x
 ./man/keyok.3x
 ./man/make_sed.sh
 ./man/man_db.renames
+./man/manlinks.sed
 ./man/menu.3x
 ./man/menu_attribs.3x
 ./man/menu_cursor.3x
 ./misc/emx.src
 ./misc/form.def
 ./misc/form.ref
-./misc/hackguide.doc
-./misc/hackguide.html
+./misc/indent.pro
 ./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
 ./progs/toe.c
 ./progs/tput.c
 ./progs/tset.c
-./shlib-versions
 ./sysdeps/unix/sysv/linux/Makefile
 ./sysdeps/unix/sysv/linux/alpha/configure
 ./sysdeps/unix/sysv/linux/configure
 ./test/ncurses.c
 ./test/ncurses_tst.hin
 ./test/newdemo.c
+./test/railroad.c
 ./test/rain.c
 ./test/tclock.c
 ./test/test.priv.h
diff --git a/NEWS b/NEWS
index 274f0815b6b8af0740bc0a1421a70f9b5fe1bc66..558846f556891cdd56f35b72f8de9a97ace501dc 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
--- $Id: NEWS,v 1.504 1999/10/24 00:31:05 tom Exp $
+-- $Id: NEWS,v 1.577 2000/07/08 20:59:25 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,549 @@ 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.
 
+20000708 5.1 release for upload to ftp.gnu.org
+       + document configure options in INSTALL.
+       + add man-page for ncurses trace functions.
+       + correct return value shown in curs_touch.3x for is_linetouched() and
+         is_wintouched(), in curs_initscr.3x for isendwin(), and in
+         curs_termattr.3x for has_ic() and has_il().
+       + add prototypes for touchline() and touchwin(), adding them to the
+         list of generated functions.
+       + modify fifo_push() to put ERR into the fifo just like other values to
+         return from wgetch().  It was returning without doing that, making
+         end-of-file condition incorrectly return a 0 (reported by Todd C
+         Miller).
+       + uncomment CC_SHARED_OPTS for progs and tack (see 971115), since they
+         are needed for SCO OpenServer.
+       + move _nc_disable_period from free_ttype.c to comp_scan.c to appease
+         dynamic loaders on SCO and IRIX64.
+       + add "-a" option to test/ncurses.c to invoke assume_default_colors()
+         for testing.
+       + correct assignment in assume_default_colors() which tells ncurses
+         whether to use default colors, or the assumed ones (reported by Gary
+         Funck <gary@Intrepid.Com>).
+       + review/correct logic in mk-1st.awk for making symbolic links for
+         shared libraries, in particular for FreeBSD, etc.
+       + regenerate misc/*.def files for OS/2 EMX dll's.
+       + correct quoting of values for CC_SHARED_OPTS in aclocal.m4 for
+         cases openbsd2*, openbsd*, freebsd* and netbsd* (patch by Peter
+         Wemm) (err in 20000610).
+       + minor updates to release notes, as well as adding/updating URLs for
+         examples cited in announce.html
+       > several fixes from Philippe Blain <philippe.blain2@freesbee.fr>:
+       + correct placement of ifdef for NCURSES_XNAMES in function
+         _nc_free_termtype(), fixes a memory leak.
+       + add a call to _nc_synchook() to the end of function whline() like
+         that in wvline() (difference was in 1.9.4).
+       + make ClearScreen() a little faster by moving two instances of
+         UpdateAttr() out of for-loops.
+       + simplify ClrBottom() by eliminating the tstLine data, using for-loops
+         (cf: 960428).
+
+20000701 pre-release
+       + change minor version to 1, i.e., ncurses 5.1
+       + add experimental configure option --enable-colorfgbg to check for
+         $COLORTERM variable as set by rxvt/aterm/Eterm.
+       + add Eterm terminfo entry (Michael Jennings <mej@valinux.com>).
+       + modify manlinks.sed to pick aliases from the SYNOPSIS section, and
+         several manpages so manlinks.sed can find aliases for creating
+         symbolic links.
+       + add explanation to run_tic.sh regarding extended terminal
+         capabilities.
+       + change message format for edit_cfg.sh, since some people interpret
+         it as a warning.
+       + correct unescaped '$' in sysv5uw7*|unix_sv* rule for CF_SHARED_OPTS
+         configure macro (report by Thanh Ma <Thanh.Ma@casi-rusco.com>).
+       + correct logic in lib_twait.c as used by lib_mouse.c for GPM mouse
+         support when poll() is used rather than select() (prompted by
+         discussion with David Allen <DAllen24@aol.com>).
+
+20000624 pre-release
+       + modify TransformLine() to check for cells with different color pairs
+         that happen to render the same display colors.
+       + apply $NCURSES_NO_PADDING to cost-computation in mvcur().
+       + improve cost computation in PutRange() by accounting for the use
+         of parm_right_cursor in mvcur().
+       + correct cost computation in EmitRange(), which was not using the
+         normalized value for cursor_address.
+       + newer config.guess, config.sub (reference version used in TIN 1.5.6).
+
+20000617
+       + update config.guess, config.sub (reference version used in PCRE 3.2).
+       + resync changes to gnathtml against version 1.22, regenerated html
+         files under doc/html/ada using this (1.22.1.1).
+       + regenerated html files under doc/html/man after correcting top and
+         bottom margin options for man2html in dist.mk
+       + minor fixes to test programs ncurses 'i' and testcurs program to make
+         the subwindow's background color cover the subwindow.
+       + modify configure script so AC_MSG_ERROR is temporarily defined to a
+         warning in AC_PROG_CXX to make it recover from a missing C++ compiler
+         without requiring user to add --without-cxx option (from comment by
+         Akim Demaille <akim@epita.fr> to autoconf mailing list).
+       + modify headers.sh to avoid creating temporary files in the build
+         directory when installing headers (reported by Sergei Pokrovsky
+         <pok@nbsp.nsk.su>)
+
+20000610
+       + regenerated the html files under doc/html/ada/files and
+         doc/html/ada/funcs with a slightly-improved gnathtml.
+       + add kmous capability to linux terminfo entry to allow it to use
+         xterm-style events provided by gpm patch by Joerg Schoen.
+       + make the configure macro CF_SHARED_OPTS a little smarter by testing
+         if -fPIC is supported by gcc rather than -fpic.  The former option
+         allows larger symbol tables.
+       + update config.guess and config.sub (patches by
+         Kevin Buettner <kev@primenet.com> for elf64_ia64
+         Bernd Kuemmerlen <bkuemmer@mevis.de> and MacOS X).
+       + add warning for 'tic -cv' about use of '^?' in terminfo source, which
+         is an extension.
+
+20000527
+       + modify echo() behavior of getch() to match Solaris curses for
+         carriage return and backspace (reported by Neil Zanella).
+       + change _nc_flush() to a function.
+       + modify delscreen() to check if the output stream has been closed, and
+         if so, free the buffer allocated for setbuf (this provides an
+         ncurses-specific way to avoid a memory leak when repeatedly calling
+         newterm reported by Chipp C <at_1@zdnetonebox.com>).
+       + correct typo in curs_getch.3x manpage regarding noecho (reported by
+         David Malone <dwmalone@maths.tcd.ie>).
+       + add a "make libs" rule.
+       + make the Ada95 interface build with configure --enable-widec.
+       + if the configure --enable-widec option is given, append 'w' to names
+         of the generated libraries (e.g., libncursesw.so) to avoid conflict
+         with existing ncurses libraries.
+
+20000520
+       + modify view.c to make a rudimentary viewer of UTF-8 text if ncurses
+         is configured with the experimental wide-character support.
+       + add a simple UTF-8 output driver to the experimental wide-character
+         support.  If any of the environment variables LC_ALL, LC_CTYPE or
+         LANG contain the string "UTF-8", this driver will be used to
+         translate the output to UTF-8.  This works with XFree86 xterm.
+       + modify configure script to allow building shared libraries on BeOS
+         (from a patch by by Valeriy E Ushakov).
+       + modify lib_addch.c to allow repeated update to the lower-right
+         corner, rather than displaying only the first character written until
+         the cursor is moved.  Recent versions of SVr4 curses can update the
+         lower-right corner, and behave this way (reported by Neil Zanella).
+       + add a limit-check in _nc_do_color(), to avoid using invalid color
+         pair value (from bug report by Brendan O'Dea <bod@compusol.com.au>).
+
+20000513
+       + the tack program knows how to use smcup and rmcup but the "show caps
+         that can be tested" feature did not reflect this knowledge.  Correct
+         the display in the menu tack/test/edit/c (patch by Daniel Weaver). 
+       + xterm-16color does allow bold+colors, removed ncv#32 from that
+         terminfo entry.
+
+20000506
+       + correct assignment to SP->_has_sgr_39_49 in lib_dft_fgbg.c, which
+         broke check for screen's AX capability (reported by Valeriy E Ushakov
+         <uwe@ptc.spbu.ru>).
+       + change man2html rule in dist.mk to workaround bug in some man-programs
+         that ignores locale when rendering hyphenation.
+       + change web- and ftp-site to dickey.his.com
+
+20000429
+       + move _nc_curr_token from parse_entry.c to comp_scan.c, to work around
+         problem linking tack on MacOS X DP3.
+       + include <sys/time.h> in lib_napms.c to compile on MacOS X DP3
+         (reported by Gerben Wierda <wierda@holmes.nl>).
+       + modify lib_vidattr.c to check for ncv fixes when pair-0 is not
+         default colors.
+       + add -d option to ncurses.c, to turn on default-colors for testing.
+       + add a check to _nc_makenew() to ensure that newwin() and newpad()
+         calls do not silently fail by passing too-large limits.
+       + add symbol NCURSES_SIZE_T to use rather than explicit 'short' for
+         internal window and pad sizes.  Note that since this is visible in
+         the WINDOW struct, it would be an ABI change to make this an 'int'
+         (prompted by a question by Bastian Trompetter
+         <btrompetter@firemail.de>, who attempted to create a 96000-line pad).
+
+20000422
+       + add mgterm terminfo entry from NetBSD, minor adjustments to sun-ss5,
+         aixterm entries -TD
+       + modify tack/ansi.c to make it more tolerant of bad ANSI replies.  An
+         example of an illegal ANSI resonse can be found using Microsoft's
+         Telnet client.  A correct display can be found using a VT-4xx
+         terminal or XFree86 xterm with:
+               XTerm*VT100*decTerminalID:  450
+         (patch by Daniel Weaver).
+       + modify gdc.c to recognize 'q' for quit, 's' for single-step and ' '
+         for resume.  Add '-n' option to force gdc's standard input to
+         /dev/null, to both illustrate the use of newterm() for specifying
+         alternate inputs as well as for testing signal handling.
+       + minor fix for configure option --with-manpage-symlinks, for target
+         directories that contain a period ('.') (reported by Larry Virden).
+
+20000415
+       + minor additions to beterm entry (feedback from Rico Tudor) -TD
+       + corrections/updates for some IBM terminfo entries -TD
+       + modify _nc_screen_wrap() so that when exiting curses mode with
+         non-default colors, the last line on the screen will be cleared to
+         the screen's default colors (request by Alexander Lukyanov).
+       + modify ncurses.c 'r' example to set nonl(), allowing control/M to be
+         read for demonstrating the REQ_NEW_LINE operation (prompted by a
+         question by Tony L Keith" <tlkeith@keithconsulting.com>).
+       + modify ncurses.c 'r' example of field_info() to work on Solaris 2.7,
+         documented extension of ncurses which allows a zero pointer.
+       + modify fmt_complex() to avoid buffer overflow in case of excess
+         recursion, and to recognize "%e%?" as a synonym for else-if, which
+         means that it will not recur for that special case.
+       + add logic to support $TERMCAP variable in case the USE_GETCAP symbol
+         is defined (patch by Todd C Miller).
+       + modify one of the m4 files used to generate the Ada95 sources,
+         to avoid using the token "symbols" (patch by Juergen Pfeifer).
+
+20000408
+       + add terminfo entries bsdos-pc-m, bsdos-pc-mono (Jeffrey C Honig)
+       + correct spelling error in terminfo entry name:  bq300-rv was given as
+         bg300-rv in esr's version.
+       + modify redrawwin() macro so its parameter is fully parenthesized
+         (fixes Debian bug report #61088).
+       + correct formatting error in dump_entry() which set incorrect column
+         value when no newline trimming was needed at the end of an entry,
+         before appending "use=" clauses (cf: 960406).
+
+20000401
+       + add configure option --with-manpage-symlinks
+       + change unctrl() to render C1 characters (128-159) as ~@, ~A, etc.
+       + change makefiles so trace() function is provided only if TRACE is
+         defined, e.g., in the debug library.  Modify related calls to
+         _tracechar() to use unctrl() instead.
+
+20000325
+       + add screen's AX capability (for ECMA SGR 39 and 49) to applicable
+         terminfo entries, use presence of this as a check for a small
+         improvement in setting default colors.
+       + improve logic in _nc_do_color() implementing assume_default_colors()
+         by passing in previous color pair info to eliminate redundant call to
+         set_original_colors().  (Part of this is from a patch by Alexander
+         Lukyanov).
+       + modify warning in _nc_trans_string() about a possibly too-long string
+         to do this once only rather than for each character past the
+         threshold (600).  Change interface of _nc_trans_string() to allow
+         check for buffer overflow.
+       + correct use of memset in _nc_read_entry_source() to initialize ENTRY
+         struct each time before reading new data into it, rather than once
+         per loop (cf:  990301).  This affects multi-entry in-core operations
+         such as "infocmp -Fa".
+
+20000319
+       + remove a spurious pointer increment in _nc_infotocap() changes from
+         20000311.  Add check for '.' in format of number, since that also
+         is not permitted in termcap.
+       + correct typo in rxvt-basic terminfo from temporary change made while
+         integrating 20000318.
+
+20000318
+       + revert part of the vt220 change (request by Todd C Miller).
+       + add ansi-* terminfo entries from Eric's version.
+       + add -a option to tic and infocmp, which retains commented-out
+         capabilities during source translation/comparison, e.g., captoinfo
+         and infotocap.
+       + modify cardfile.c to display an empty card if no input data file is
+         found, fixes a core dump in that case (reported by Bruno Haible).
+       + correct bracketing in CF_MATH_LIB configure macro, which gave wrong
+         result for OS/2 EMX.
+       + supply required parameter for _nc_resolve_uses() call in
+         read_termcap.c, overlooked in 20000311 (reported by Todd C Miller).
+       > patches by Bruno Haible <haible@ilog.fr>:
+       + fix a compiler warning in fty_enum.c
+       + correct LIB_PREFIX expression for DEPS_CURSES in progs, tack
+         makefiles, which resulted in redundant linking (cf: 20000122).
+
+20000311
+       + make ifdef's for BROKEN_LINKER consistent (patch by Todd C Miller).
+       + improved tack/README (patch by Daniel Weaver).
+       + modify tput.c to ensure that unspecified parameters are passed to
+         tparm() as 0's.
+       + add a few checks in infocmp to guard against buffer overflow when
+         displaying string capabilities.
+       + add check for zero-uses in infocmp's file_comparison() function
+         before calling _nc_align_termtype().  Otherwise one parameter is
+         indexed past the end of the uses-array.
+       + add an option -q to infocmp to specify the less verbose output,
+         keeping the existing format as the default, though not retaining the
+         previous behavior that made the -F option compare each entry to
+         itself.
+       + adapted patch by Eric Raymond to make infocmp -F less verbose
+         (the submitted patch was unusable because it did not compile
+         properly):
+         + modify write_entry.c to ensure that absent or cancelled booleans
+           are written as FALSE, for consistency with infocmp which now
+           assumes this.  Note that for the small-core configuration, tic
+           may not produce the same result as before.
+         + change some private library interfaces used by infocmp, e.g.,
+           _nc_resolve_uses().
+         + add a check in _nc_infotocap() to ensure that cm-style capabilities
+           accept only %d codes when converting the format from terminfo to
+           termcap.
+         + modify ENTRY struct to separate the data in 'parent' into the name
+           and link values (the original idea to merge both into 'parent' was
+           not good).
+         + discard repair_acsc(tterm);
+       > patch by Juergen Pfeifer:
+       + drop support for gnat 3.10
+       + move generated documentation and html files under ./doc directory,
+         adding makefile rules for this to dist.mk
+
+20000304
+       + correct conflicting use of tparm() in 20000226 change to tic, which
+         made it check only one entry at a time.
+       + fix errors in ncurses-intro.html and hackguide.html shown by Dave
+         Raggett's tidy.
+       + make the example in ncurses-intro.html do something plausible, and
+         corrected misleading comment (reported by Neil Zanella).
+       + modify pnoutrefresh() to set newscr->_leaveok as wnoutrefresh() does,
+         to fix a case where the cursor position was not updated as in
+         Solaris  (patch by David Mosberger <davidm@hpl.hp.com>).
+       + add a limit-check for wresize() to ensure that a subwindow does not
+         address out of bounds.
+       + correct offsets used for subwindows in wresize() (patch by Michael
+         Andres <ma@suse.de>).
+       + regenerate html'ized manual pages with man2html 3.0.1 (patch by
+         Juergen Pfeifer).  This generated a file with a space in its name,
+         which I removed.
+       + fix a few spelling errors in tack.
+       + modify tack/Makefile.in to match linker options of progs/Makefile.in;
+         otherwise it does not build properly for older HPUX shared library
+         configurations.
+       + add several terminfo entries from esr's "11.0".
+
+20000226
+       + make 'tput flash' work properly for xterm by flushing output in
+         delay_output() when using napms(), and modifying xterm's terminfo to
+         specify no padding character.  Otherwise, xterm's reported baud rate
+         can mislead ncurses into producing too few padding characters
+         (Debian #58530).
+       + add a check to tic for consistency between sgr and the separate
+         capabilities such as smso, use this to check/correct several
+         terminfo entries (Debian #58530).
+       + add a check to tic if cvvis is the same as cnorm, adjusted several
+         terminfo entries to remove the conflict (Debian #58530).
+       + correct prototype shown in attr_set()/wattr_set() manpages (fixes
+         Debian #53962).
+       + minor clarification for curs_set() and leaveok() manpages.
+       + use mkstemp() for creating temporary file for tic's processing of
+         $TERMCAP contents (fixes Debian #56465).
+       + correct two errors from integrating Alexander's changes:  did not
+         handle the non-bce case properly in can_erase_with() (noted by
+         Alexander), and left fg/bg uninitialized in the pair-zero case of
+         _nc_do_color() (reported by Dr Werner Fink <werner@suse.de> and
+         Ismael Cordeiro <ismael@cordeiro.com>).
+
+20000219
+       + store default-color code consistently as C_MASK, even if given as
+         -1 for convenience (adapted from patches by Alexander Lukyanov).
+       > patches by Alexander Lukyanov:
+       + change can_clear_with() macro to accommodate logic for
+         assume_default_colors(), making most of the FILL_BCE logic
+         unnecessary.  Made can_clear_with() an inline function to make it
+         simpler to read.
+
+20000212
+       + corrected form of recent copyright dates.
+       + minor corrections to xterm-xf86-v333 terminfo entry -TD
+       > patches by Alexander Lukyanov:
+       + reworded dft_fgbg.3x to avoid assuming that the terminal's default
+         colors are white on black.
+       + fix initialization of tstLine so that it is filled with current blank
+         character in any case.  Previously it was possible to have it filled
+         with old blank.  The wrong over-optimization was introduced in 991002
+         patch.  (it is not very critical as the only bad effect is not using
+         clr_eos for clearing if blank has changed).
+
+20000205
+       + minor corrections/updates to several terminfo entries: rxvt-basic,
+         vt520, vt525, ibm5151, xterm-xf86-v40 -TD
+       + modify ifdef's for poll() to allow it to use <sys/poll.h>, thereby
+         allowing poll() to be used on Linux.
+       + add CF_FUNC_POLL macro to check if poll() is able to select from
+         standard input.  If not we will not use it, preferring select()
+         (adapted from patch by Michael Pakovic <mpakovic@fdn.com>).
+       + update CF_SHARED_OPTS macro for SCO Unixware 7.1 to allow building
+         shared libraries (reported/tested by Thanh <thanhma@mediaone.net>).
+       + override $LANGUAGE in build to avoid incorrect ordering of keynames.
+       + correct CF_MATH_LIB parameter, must be sin(x), not sqrt(x).
+
+20000122
+       + resync CF_CHECK_ERRNO and CF_LIB_PREFIX macros from tin and xterm.
+       + modify CF_MATH_LIB configure macro to parameterize the test function
+         used, for reuse in dialog and similar packages.
+       + correct tests for file-descriptors in OS/2 EMX mouse support.  A
+         negative value could be used by FD_SET, causing the select() call
+         to wait indefinitely.
+
+20000115
+       + additional fixes for non-bce terminals (handling of delete_character)
+         to work when assume_default_colors() is not specified.
+       + modify warning message from _nc_parse_entry() regarding extended
+         capability names to print only if tic/infocmp/toe have the -v flag
+         set, and not at all in ordinary user applications.  Otherwise, this
+         warning would be shown for screen's extended capabilities in programs
+         that use the termcap interface (reported by Todd C Miller).
+       + modify use of _nc_tracing from programs such as tic so their debug
+         level is not in the same range as values set by trace() function.
+       + small panel header cleanup (patch by Juergen Pfeifer).
+       + add 'railroad' demo for termcap interface.
+       + modify 'tic' to write its usage message to stderr (patch by Todd C
+         Miller).
+
+20000108
+       + add prototype for erase() to curses.h.in, needed to make test
+         programs build with c++/g++.
+       + add .c.i and .c.h suffix rules to generated makefiles, for debugging.
+       + correct install rule for tack.1; it assumed that file was in the
+         current directory (reported by Mike Castle <dalgoda@ix.netcom.com>).
+       + modify terminfo/termcap translation to suppress acsc before trying
+         sgr if the entry would be too large (patch by Todd C Miller).
+       + document a special case of incompatiblity between ncurses 4.2 and
+         5.0, add a section for this in INSTALL.
+       + add TRACE_DATABASE flag for trace().
+
+20000101
+       + update mach, add mach-color terminfo entries based on Debian diffs
+         for ncurses 5.0 -TD
+       + add entries for xterm-hp, xterm-vt220, xterm-vt52 and xterm-noapp
+         terminfo entries -TD
+       + change OTrs capabilities to rs2 in terminfo.src -TD
+       + add obsolete and extended capabilities to 'screen' terminfo -TD
+       + corrected conversion from terminfo rs2 to termcap rs (cf: 980704)
+       + make conversion to termcap ug (underline glitch) more consistently
+         applied.
+       + fix out-of-scope use of 'personal[]' buffer in 'toe' (this error
+         was in the original pre-1.9.7 version, when $HOME/.terminfo was
+         introduced).
+       + modify 'toe' to ignore terminfo directories to which it has no
+         permissions.
+       + modify read_termtype(), fixing 'toe', which could dump core when it
+         found an incomplete entry such as "dumb" because it did not
+         initialize its buffer for _nc_read_file_entry().
+       + use -fPIC rather than -fpic for shared libraries on Linux, not
+         needed for i386 but some ports (from Debian diffs for 5.0).
+       + use explicit VALID_NUMERIC() checks in a few places that had been
+         overlooked, and add a check to ensure that init_tabs is nonzero,
+         to avoid divide-by-zero (reported by Todd C Miller).
+       + minor fix for CF_ANSI_CC_CHECK configure macro, for HPUX 10.x (from
+         tin).
+
+19991218
+       + reorder tests during mouse initialization to allow for gpm to run in
+         xterm, or for xterm to be used under OS/2 EMX.  Also drop test for
+         $DISPLAY in favor of kmous=\E[M or $TERM containing "xterm" (report
+         by Christian Weisgerber <naddy@mips.rhein-neckar.de>).
+       + modify raw() and noraw() to clear/restore IEXTEN flag which affects
+         stty lnext on systems such as FreeBSD (report by Bruce Evans
+         <bde@zeta.org.au>, via Jason Evans <jasone@canonware.com>).
+       + fix a potential (but unlikely) buffer overflow in failed() function
+         of tset.c (reported by Todd C Miller).
+       + add manual-page for ncurses extensions, documented curses_version(),
+         use_extended_names().
+
+19991211
+       + treat as untranslatable to termcap those terminfo strings which
+         contain non-decimal formatting, e.g., hexadecimal or octal.
+       + correct commented-out capabilities that cannot be translated to
+         termcap, which did not check if a colon must be escaped.
+       + correct termcap translation for "%>" and "%+", which did not check
+         if a colon must be escaped, for instance.
+       + use save_string/save_char for _nc_captoinfo() to eliminate fixed
+         buffer (originally for _nc_infotocap() in 960301 -TD).
+       + correct expression used for terminfo equivalent of termcap %B,
+         adjust regent100 entry which uses this.
+       + some cleanup and commenting of ad hoc cases in _nc_infotocap().
+       + eliminate a fixed-buffer in tic, used for translating comments.
+       + add manpage for infotocap
+
+19991204
+       + add kvt and gnome terminfo entries -TD
+       + correct translation of "%%" by infotocap, which was emitted as "%".
+       + add "obsolete" termcap strings to terminfo.src
+       + modify infocmp to default to showing obsolete capabilities rather
+         than terminfo only.
+       + modify write_entry.c so that if extended names (i.e., configure
+         --enable-tcap-names) are active, then tic will also write "obsolete"
+         capabilities that are present in the terminfo source.
+       + modify tic so that when running as captoinfo or infotocap, it
+         initializes the output format as in -C and -I options, respectively.
+       + improve infocmp and tic -f option by splitting long strings that do
+         not have if-then-else construct, but do have parameters, e.g., the
+         initc for xterm-88color.
+       + refine MKtermsort.sh slightly by using bool for the *_from_termcap
+         arrays.
+
+19991127
+       + additional fixes for non-bce terminals (handling of clear_screen,
+         clr_eol, clr_eos, scrolling) to work when assume_default_colors() is
+         not specified.
+       + several small changes to xterm terminfo entries -TD.
+       + move logic for _nc_windows in lib_freeall.c inside check for nonnull
+         SP, since it is part of that struct.
+       + remove obsolete shlib-versions, which was unintentionally re-added
+         in 970927.
+       + modify infocmp -e, -E options to ensure that generated fallback.c
+         type for Booleans agrees with term.h (reported by Eric Norum
+         <eric@cls.usask.ca>).
+       + correct configure script's use of $LIB_PREFIX, which did not work
+         for installing the c++ directory if $libdir did not end with "/lib"
+         (reported by Huy Le <huyle@ugcs.caltech.edu>).
+       + modify infocmp so -L and -f options work together.
+       + modify the initialization of SP->_color_table[] in start_color() so
+         that color_content() will return usable values for COLORS greater
+         than 8.
+       + modify ncurses 'd' test in case COLORS is greater than 16, e.g., for
+         xterm-88color, to limit the displayed/computed colors to 16.
+       > patch by Juergen Pfeifer:
+       + simplify coding of the panel library according to suggestions by
+         Philippe Blain.
+       + improve macro coding for a few macros in curses.priv.h
+
+19991113
+       + modify treatment of color pair 0 so that if ncurses is configured
+         to support default colors, and they are not active, then ncurses
+         will set that explicitly, not relying on orig_colors or orig_pair.
+       + add new extension, assume_default_colors() to provide better control
+         over the use of default colors.
+       + modify test programs to use more-specific ifdef's for existence of
+         wresize(), resizeterm() and use_default_colors().
+       + modify configure script to add specific ifdef's for some functions
+         that are included when --enable-ext-funcs is in effect, so their
+         existence can be ifdef'd in the test programs.
+       + reorder some configure options, moving those extensions that have
+         evolved from experimental status into a new section.
+       + change configure --enable-tcap-names to enable this by default.
+
+19991106
+       + install tack's manpage (reported by Robert Weiner
+         <robert@progplus.com>)
+       + correct worm.c's handling of KEY_RESIZE (patch by Frank Heckenbach).
+       + modify curses.h.in, undef'ing some symbols to avoid conflict with C++
+         STL (reported by Matt Gerassimoff <mgeras@ticon.net>)
+
+19991030
+       + modify linux terminfo entry to indicate that dim does not mix with
+         color (reported by Klaus Weide <kweide@enteract.com>).
+       + correct several typos in terminfo entries related to missing '['
+         in CSI's -TD
+       + fix several compiler warnings in c++ binding (reported by Tim
+         Mooney for alphaev56-dec-osf4.0f
+       + rename parameter of _nc_free_entries() to accommodate lint.
+       + correct lint rule for tack, used incorrect list of source files.
+       + add case to config.guess, config.sub for Rhapsody.
+       + improve configure tests for libg++ and libstdc++ by omitting the
+         math library (which is missing on Rhapsody), and improved test for
+         the math library itself (adapted from path by Nelson H. F. Beebe).
+       + explicitly initialize to zero several data items which were
+         implicitly initialized, e.g., cur_term.  If not explicitly
+         initialized, their storage type is C (common), and causes problems
+         linking on Rhapsody 5.5 using gcc 2.7.2.1 (reported by Nelson H. F.
+         Beebe).
+       + modify Ada95 binding to not include the linker option for Ada
+         bindings in the Ada headers, but in the Makefiles instead (patch by
+         Juergen Pfeifer).
+
 19991023 5.0 release for upload to ftp.gnu.org
        + effective with release of 5.0, change NCURSES_VERSION_PATCH to
          4-digit year.
@@ -349,7 +892,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
        + 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).
+       + correct a typo in man/form_hook.3x (Todd Miller).
 
 990318 pre-release
        + parenthesize and undef 'index' symbol in c++ binding and demo, to
@@ -515,7 +1058,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
          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).
+       + 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
@@ -737,7 +1280,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
          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).
+         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>).
@@ -767,7 +1310,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
          tic, infocmp).
        + modify tic, infocmp to discard redundant i3, r3 strings when output
          to termcap format.
-       > patch by Alexander V Lukyanov:
+       > 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.
@@ -792,7 +1335,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
          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:
+       > 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
@@ -827,12 +1370,12 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
          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.
+       + 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.
+       + 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.
@@ -1147,7 +1690,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
        + 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.
+         reflect above enhancements.
 
 980307
        + use 'stat()' rather than 'access()' in toe.c to check for the
index 4fa430abb64382e245787911c92e9f44eb3dcfa0..15882d3b62dae1ac8108a20a11248987779ceb36 100644 (file)
@@ -1,4 +1,4 @@
--- $Id: README.emx,v 1.1 1998/11/21 20:13:05 tom Exp $
+-- $Id: README.emx,v 1.2 2000/05/06 17:41:56 tom Exp $
 -- Author: Thomas Dickey <dickey@clark.net>
 -------------------------------------------------------------------------------
 
@@ -16,16 +16,16 @@ the EMX development tools, of course.  Get these programs to start:
 
 Apply the autoconf patches from
 
-       http://www.clark.net/pub/dickey/autoconf
-       ftp://ftp.clark.net/pub/dickey/autoconf
+       http://dickey.his.com/autoconf
+       ftp://dickey.his.com/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
+       autoconf-2.12-970309.patch.gz
+       autoconf-2.12-970429.patch.gz
+       autoconf-2.12-971222-emx.patch.gz
+       autoconf-2.12-971222.patch.gz
+       autoconf-2.12-971230.patch.gz
 
 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,
index b4edb242bb98ec10c43ed693acab4c921dc48e35..490bbed7a557880b4445caef528f5532bacd17a3 100644 (file)
@@ -1,5 +1,5 @@
 dnl***************************************************************************
-dnl Copyright (c) 1998,1999 Free Software Foundation, Inc.                   *
+dnl Copyright (c) 1998-2000 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.179 1999/10/23 21:49:25 tom Exp $
+dnl $Id: aclocal.m4,v 1.214 2000/07/07 15:11:34 tom Exp $
 dnl Macros used in NCURSES auto-configuration script.
 dnl
 dnl ---------------------------------------------------------------------------
@@ -74,7 +74,7 @@ for cf_arg in "-DCC_HAS_PROTOS" \
        "" \
        -qlanglvl=ansi \
        -std1 \
-       "-Aa -D_HPUX_SOURCE +e" \
+       -Ae \
        "-Aa -D_HPUX_SOURCE" \
        -Xc
 do
@@ -303,7 +303,7 @@ AC_DEFUN([CF_CHECK_ERRNO],
 AC_MSG_CHECKING(if external $1 is declared)
 AC_CACHE_VAL(cf_cv_dcl_$1,[
     AC_TRY_COMPILE([
-#if HAVE_STDLIB_H
+#ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
 #include <stdio.h>
@@ -311,7 +311,7 @@ AC_CACHE_VAL(cf_cv_dcl_$1,[
 #include <errno.h> ],
     [long x = (long) $1],
     [eval 'cf_cv_dcl_'$1'=yes'],
-    [eval 'cf_cv_dcl_'$1'=no]')
+    [eval 'cf_cv_dcl_'$1'=no'])
 ])
 
 eval 'cf_result=$cf_cv_dcl_'$1
@@ -463,6 +463,33 @@ int main() {
        fi
 ])])dnl
 dnl ---------------------------------------------------------------------------
+dnl See if the poll function really works.  Some platforms have poll(), but
+dnl it does not work for terminals or files.
+AC_DEFUN([CF_FUNC_POLL],[
+AC_CACHE_CHECK(if poll really works,cf_cv_working_poll,[
+AC_TRY_RUN([
+#include <stdio.h>
+#ifdef HAVE_POLL_H
+#include <poll.h>
+#else
+#include <sys/poll.h>
+#endif
+int main() {
+       struct pollfd myfds;
+       int ret;
+
+       myfds.fd = 0;
+       myfds.events = POLLIN;
+
+       ret = poll(&myfds, 1, 100);
+       exit(ret != 0);
+}],
+       [cf_cv_working_poll=yes],
+       [cf_cv_working_poll=no],
+       [cf_cv_working_poll=unknown])])
+test "$cf_cv_working_poll" = "yes" && AC_DEFINE(HAVE_WORKING_POLL)
+])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.
@@ -619,10 +646,10 @@ changequote(<<, >>)dnl
 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].*)
+  3.1[1-9]*|3.[2-9]*|[4-9].*)
     cf_cv_prog_gnat_correct=yes
     ;;
-  *) echo Unsupported GNAT version $cf_cv_gnat_version. Required is 3.10 or better. Disabling Ada95 binding.
+  *) echo Unsupported GNAT version $cf_cv_gnat_version. Required is 3.11 or better. Disabling Ada95 binding.
      cf_cv_prog_gnat_correct=no
      ;;
 esac
@@ -655,14 +682,13 @@ 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"
+       LIBS="$LIBS -l$cf_gpp_libname"
        AC_TRY_LINK([
 #include <$cf_gpp_libname/builtin.h>
        ],
-       [//float foo=abs(1.0);
-        two_arg_error_handler_t foo2 = lib_error_handler],
+       [two_arg_error_handler_t foo2 = lib_error_handler],
        [cf_cxx_library=yes
-        CXXLIBS="$CXXLIBS -l$cf_gpp_libname -lm"
+        CXXLIBS="$CXXLIBS -l$cf_gpp_libname"
         if test "$cf_gpp_libname" = cpp ; then
            AC_DEFINE(HAVE_GPP_BUILTIN_H)
         else
@@ -671,10 +697,9 @@ if test $ac_cv_prog_gxx = yes; then
        [AC_TRY_LINK([
 #include <builtin.h>
        ],
-       [//float foo=abs(1.0);
-        two_arg_error_handler_t foo2 = lib_error_handler],
+       [two_arg_error_handler_t foo2 = lib_error_handler],
        [cf_cxx_library=yes
-        CXXLIBS="$CXXLIBS -l$cf_gpp_libname -lm"
+        CXXLIBS="$CXXLIBS -l$cf_gpp_libname"
         AC_DEFINE(HAVE_BUILTIN_H)],
        [cf_cxx_library=no])])
        LIBS="$cf_save"
@@ -729,10 +754,10 @@ dnl $1 = variable to set
 AC_DEFUN([CF_LIB_PREFIX],
 [
        case $cf_cv_system_name in
-       os2)    $1=''     ;;
-       *)      $1='lib'  ;;
+       os2)    LIB_PREFIX=''     ;;
+       *)      LIB_PREFIX='lib'  ;;
        esac
-       LIB_PREFIX=[$]$1
+ifelse($1,,,[$1=$LIB_PREFIX])
        AC_SUBST(LIB_PREFIX)
 ])dnl
 dnl ---------------------------------------------------------------------------
@@ -759,11 +784,19 @@ do
                for cf_item in $CF_LIST_MODELS
                do
                        CF_LIB_SUFFIX($cf_item,cf_suffix)
+                       if test $cf_item = shared ; then
+                       if test $cf_cv_do_symlinks = yes ; then
+                               case "$cf_cv_shlib_version" in #(vi
+                               rel) cf_suffix="$cf_suffix"'.$(REL_VERSION)' ;; #(vi
+                               abi) cf_suffix="$cf_suffix"'.$(ABI_VERSION)' ;;
+                               esac
+                       fi
+                       fi
                        cf_libs_to_make="$cf_libs_to_make ../lib/${cf_prefix}${cf_dir}${cf_suffix}"
                done
 
                if test $cf_dir = ncurses ; then
-                       case "$LIB_SUBSETS" in
+                       case "$LIB_SUBSETS" in #(vi
                        termlib+*) #(vi
                                ;;
                        *) #(vi
@@ -807,11 +840,13 @@ do
                        do
                        $AWK -f $srcdir/mk-1st.awk \
                                name=$cf_dir \
+                               traces=$LIB_TRACING \
                                MODEL=$CF_ITEM \
                                model=$cf_subdir \
                                prefix=$cf_prefix \
                                suffix=$cf_suffix \
                                subset=$cf_subset \
+                               ShlibVer=$cf_cv_shlib_version \
                                DoLinks=$cf_cv_do_symlinks \
                                rmSoLocs=$cf_cv_rm_so_locs \
                                ldconfig="$LDCONFIG" \
@@ -822,6 +857,7 @@ do
                        test $cf_dir = ncurses && WITH_OVERWRITE=no
                        $AWK -f $srcdir/mk-2nd.awk \
                                name=$cf_dir \
+                               traces=$LIB_TRACING \
                                MODEL=$CF_ITEM \
                                model=$cf_subdir \
                                subset=$cf_subset \
@@ -840,6 +876,7 @@ do
        if test -f $cf_dir/Makefile ; then
                case "$cf_dir" in
                Ada95) #(vi
+                       echo 'libs \' >> Makefile
                        echo 'install.libs \' >> Makefile
                        echo 'uninstall.libs ::' >> Makefile
                        echo '  cd '$cf_dir' && $(MAKE) $(CF_MFLAGS) [$]@' >> Makefile
@@ -859,6 +896,7 @@ if test "$cf_dir" != "c++" ; then
 echo 'lint \' >> Makefile
 fi
 cat >> Makefile <<CF_EOF
+libs \\
 lintlib \\
 install.libs \\
 uninstall.libs \\
@@ -869,6 +907,7 @@ CF_EOF
        elif test -f $srcdir/$cf_dir/headers; then
 cat >> Makefile <<CF_EOF
 
+libs \\
 install.libs \\
 uninstall.libs \\
 install.includes \\
@@ -921,19 +960,18 @@ SRC=\[$]3
 echo installing \$SRC in \$DST
 case \$DST in
 /*/include/*)
-       TMP=\${TMPDIR-/tmp}/\`basename \$SRC\`
-       if test ! -f ../headers.sed ; then
-               END=\`basename \$DST\`
-               for i in \`cat \$REF/../*/headers |fgrep -v "#"\`
-               do
-                       NAME=\`basename \$i\`
-                       echo "s/<\$NAME>/<\$END\/\$NAME>/" >> ../headers.sed
-               done
-       fi
-       rm -f \$TMP
-       sed -f ../headers.sed \$SRC > \$TMP
-       eval \$PRG \$TMP \$DST
-       rm -f \$TMP
+       TMPSRC=\${TMPDIR-/tmp}/\`basename \$SRC\`\$\$
+       TMPSED=\${TMPDIR-/tmp}/headers.sed\$\$
+       END=\`basename \$DST\`
+       for i in \`cat \$REF/../*/headers |fgrep -v "#"\`
+       do
+               NAME=\`basename \$i\`
+               echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
+       done
+       rm -f \$TMPSRC
+       sed -f \$TMPSED \$SRC > \$TMPSRC
+       eval \$PRG \$TMPSRC \$DST/\$SRC
+       rm -f \$TMPSRC \$TMPSED
        ;;
 *)
        eval \$PRG \$SRC \$DST
@@ -984,9 +1022,10 @@ done
 
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl Compute the library-suffix from the given model name
+dnl Compute the library file-suffix from the given model name
 dnl $1 = model name
 dnl $2 = variable to set
+dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
 AC_DEFUN([CF_LIB_SUFFIX],
 [
        AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
@@ -996,22 +1035,17 @@ AC_DEFUN([CF_LIB_SUFFIX],
        profile) $2='_p.a' ;;
        shared)
                case $cf_cv_system_name in
-               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
        esac
+       test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
 ])dnl
 dnl ---------------------------------------------------------------------------
 dnl Compute the string to append to -library from the given model name
+dnl $1 = model name
+dnl $2 = variable to set
+dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
 AC_DEFUN([CF_LIB_TYPE],
 [
        case $1 in
@@ -1020,6 +1054,7 @@ AC_DEFUN([CF_LIB_TYPE],
        profile) $2='_p' ;;
        shared)  $2=''   ;;
        esac
+       test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
 ])dnl
 dnl ---------------------------------------------------------------------------
 dnl Some systems have a non-ANSI linker that doesn't pull in modules that have
@@ -1267,6 +1302,21 @@ fi
 AC_MSG_RESULT($cf_manpage_renames)
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl Some people expect each tool to make all aliases for manpages in the
+dnl man-directory.  This accommodates the older, less-capable implementations
+dnl of 'man', and is optional.
+AC_DEFUN([CF_MANPAGE_SYMLINKS],
+[
+AC_MSG_CHECKING(for manpage symlinks)
+
+AC_ARG_WITH(manpage-symlinks,
+       [  --with-manpage-symlinks specify manpage-symlinks],
+       [cf_manpage_symlinks=$withval],
+       [cf_manpage_symlinks=yes])
+
+AC_MSG_RESULT($cf_manpage_symlinks)
+])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.
@@ -1275,6 +1325,7 @@ AC_DEFUN([CF_MAN_PAGES],
 CF_HELP_MESSAGE(Options to Specify How Manpages are Installed:)
 CF_MANPAGE_FORMAT
 CF_MANPAGE_RENAMES
+CF_MANPAGE_SYMLINKS
 
   if test "$prefix" = "NONE" ; then
      cf_prefix="$ac_default_prefix"
@@ -1303,6 +1354,7 @@ datadir="$datadir"
 MKDIRS="`cd $srcdir && pwd`/mkinstalldirs"
 INSTALL="$INSTALL"
 INSTALL_DATA="$INSTALL_DATA"
+
 TMP=\${TMPDIR-/tmp}/man\$\$
 trap "rm -f \$TMP" 0 1 2 5 15
 
@@ -1312,6 +1364,9 @@ shift
 mandir=\{{$}}1
 shift
 
+srcdir=\{{$}}1
+shift
+
 for i in \{{$}}* ; do
 case \$i in #(vi
 *.orig|*.rej) ;; #(vi
@@ -1322,8 +1377,14 @@ case \$i in #(vi
                \$MKDIRS $cf_subdir\$section
        fi
        fi
+       aliases=
        source=\`basename \$i\`
 CF_EOF
+if test "$cf_manpage_symlinks" = yes ; then
+cat >>man/edit_man.sh <<CF_EOF
+       aliases=\`sed -f \$srcdir/manlinks.sed \$source | sort -u\`
+CF_EOF
+fi
 if test "$cf_manpage_renames" = no ; then
 cat >>man/edit_man.sh <<CF_EOF
        target=$cf_subdir\${section}/\$source
@@ -1378,20 +1439,75 @@ CF_EOF
 esac
 cat >>man/edit_man.sh <<CF_EOF
        echo \$verb \$target
+       suffix=\`basename \$target | sed -e 's/^[^.]*//'\`
        if test \$verb = installing ; then
                \$INSTALL_DATA \$TMP \$target
+               test -n "\$aliases" && (
+                       cd $cf_subdir\${section} && (
+                               target=\`basename \$target\`
+                               for cf_alias in \$aliases
+                               do
+                                       if test -f \$cf_alias\${suffix} ; then
+                                               if ( cmp -s \$target \$cf_alias\${suffix} )
+                                               then
+                                                       :
+                                               else
+                                                       echo .. \$verb alias \$cf_alias\${suffix}
+                                                       rm -f \$cf_alias\${suffix}
+                                                       $LN_S \$target \$cf_alias\${suffix}
+                                               fi
+                                       else
+                                               echo .. \$verb alias \$cf_alias\${suffix}
+                                               rm -f \$cf_alias\${suffix}
+                                               $LN_S \$target \$cf_alias\${suffix}
+                                       fi
+                               done
+                       )
+               )
        else
                rm -f \$target
+               test -n "\$aliases" && (
+                       cd $cf_subdir\${section} && (
+                               for cf_alias in \$aliases
+                               do
+                                       echo .. \$verb alias \$cf_alias\${suffix}
+                                       rm -f \$cf_alias\${suffix}
+                               done
+                       )
+               )
        fi
        ;;
 esac
 done
+exit 0
 CF_EOF
 changequote([,])dnl
 chmod 755 man/edit_man.sh
 
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl Checks for libraries.  At least one UNIX system, Apple Macintosh
+dnl Rhapsody 5.5, does not have -lm.  We cannot use the simpler
+dnl AC_CHECK_LIB(m,sin), because that fails for C++.
+AC_DEFUN([CF_MATH_LIB],
+[
+AC_CACHE_CHECK(if -lm needed for math functions,
+       cf_cv_need_libm,[
+       AC_TRY_LINK([
+       #include <stdio.h>
+       #include <math.h>
+       ],
+       [double x = rand(); printf("result = %g\n", ]ifelse($2,,sin(x),$2)[)],
+       [cf_cv_need_libm=no],
+       [cf_cv_need_libm=yes])])
+if test "$cf_cv_need_libm" = yes
+then
+ifelse($1,,[
+       LIBS="$LIBS -lm"
+],[$1=-lm])
+fi
+])
+dnl ---------------------------------------------------------------------------
 dnl Compute the object-directory name from the given model name
 AC_DEFUN([CF_OBJ_SUBDIR],
 [
@@ -1411,6 +1527,8 @@ AC_DEFUN([CF_PATH_SYNTAX],[
 case ".[$]$1" in #(vi
 ./*) #(vi
   ;;
+.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
+  ;;
 .\[$]{*prefix}*) #(vi
   eval $1="[$]$1"
   case ".[$]$1" in #(vi
@@ -1545,11 +1663,28 @@ AC_DEFUN([CF_SHARED_OPTS],
 
        cf_cv_rm_so_locs=no
 
+       # Some less-capable ports of gcc support only -fpic
+       CC_SHARED_OPTS=
+       if test -n "$GCC"
+       then
+               AC_MSG_CHECKING(which $CC option to use)
+               cf_save_CFLAGS="$CFLAGS"
+               for CC_SHARED_OPTS in -fPIC -fpic ''
+               do
+                       CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
+                       AC_TRY_COMPILE([#include <stdio.h>],[int x = 1],[break],[])
+               done
+               AC_MSG_RESULT($CC_SHARED_OPTS)
+               CFLAGS="$cf_save_CFLAGS"
+       fi
+
        case $cf_cv_system_name in
+       beos*)
+               MK_SHARED_LIB='$(CC) -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0'
+               ;;
        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'
@@ -1564,7 +1699,6 @@ AC_DEFUN([CF_SHARED_OPTS],
        hpux*)
                # (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'
@@ -1577,9 +1711,7 @@ AC_DEFUN([CF_SHARED_OPTS],
                ;;
        irix*)
                # tested with IRIX 5.2 and 'cc'.
-               if test -n "$GCC"; then
-                       CC_SHARED_OPTS='-fPIC'
-               else
+               if test -z "$GCC"; then
                        CC_SHARED_OPTS='-KPIC'
                fi
                MK_SHARED_LIB='$(LD) -shared -rdata_shared -soname `basename $[@]` -o $[@]'
@@ -1587,37 +1719,36 @@ AC_DEFUN([CF_SHARED_OPTS],
                ;;
        linux*|gnu*)
                # tested with Linux 2.0.29 and gcc 2.7.2 (ELF)
-               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
                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
+               MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $[@] .$(REL_VERSION)`.$(ABI_VERSION),-stats,-lc -o $[@]'
                ;;
        openbsd2*)
-               CC_SHARED_OPTS='-fpic -DPIC'
+               CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
                MK_SHARED_LIB='$(LD) -Bshareable -soname,`basename $[@].$(ABI_VERSION)` -o $[@]'
                ;;
        openbsd*|freebsd*)
-               CC_SHARED_OPTS='-fpic -DPIC'
+               CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
                MK_SHARED_LIB='$(LD) -Bshareable -o $[@]'
                test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
                ;;
        netbsd*)
-               CC_SHARED_OPTS='-fpic -DPIC'
+               CC_SHARED_OPTS="$CC_SHARED_OPTS -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
+                       MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $[@] .$(REL_VERSION)`.$(ABI_VERSION) -o $[@]'
+                       if test $cf_cv_shlib_version = auto; then
+                       if test ! -f /usr/libexec/ld.elf_so; then
+                               cf_cv_shlib_version=rel
+                       fi
+                       fi
                else
                        MK_SHARED_LIB='$(LD) -Bshareable -o $[@]'
                fi
@@ -1626,7 +1757,6 @@ AC_DEFUN([CF_SHARED_OPTS],
                # 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) -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
@@ -1643,12 +1773,10 @@ AC_DEFUN([CF_SHARED_OPTS],
                ;;
        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
+               if test $ac_cv_prog_gcc != yes; then
                        CC_SHARED_OPTS='-belf -KPIC'
                fi
-               MK_SHARED_LIB='$(LD) -dy -G -h `basename [$]@.$(ABI_VERSION)` -o [$]@'
+               MK_SHARED_LIB='$(LD) -dy -G -h `basename $[@] .$(REL_VERSION)`.$(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
@@ -1659,9 +1787,7 @@ AC_DEFUN([CF_SHARED_OPTS],
                ;;
        sunos4*)
                # tested with SunOS 4.1.1 and gcc 2.7.0
-               if test $ac_cv_prog_gcc = yes; then
-                       CC_SHARED_OPTS='-fpic'
-               else
+               if test $ac_cv_prog_gcc != yes; then
                        CC_SHARED_OPTS='-KPIC'
                fi
                MK_SHARED_LIB='$(LD) -assert pure-text -o $[@]'
@@ -1669,22 +1795,22 @@ AC_DEFUN([CF_SHARED_OPTS],
                ;;
        solaris2*)
                # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
-               if test $ac_cv_prog_gcc = yes; then
-                       CC_SHARED_OPTS='-fpic'
-               else
+               if test $ac_cv_prog_gcc != yes; then
                        CC_SHARED_OPTS='-KPIC'
                fi
-               MK_SHARED_LIB='$(LD) -dy -G -h `basename $[@].$(ABI_VERSION)` -o $[@]'
+               MK_SHARED_LIB='$(LD) -dy -G -h `basename $[@] .$(REL_VERSION)`.$(ABI_VERSION) -o $[@]'
                if test $cf_cv_ld_rpath = yes ; then
                        cf_ld_rpath_opt="-R"
                        EXTRA_LDFLAGS="-R ../lib:\$(libdir) $EXTRA_LDFLAGS"
                fi
                test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
                ;;
-       unix_sv*)
-               # tested with UnixWare 1.1.2
-               CC_SHARED_OPTS='-KPIC'
-               MK_SHARED_LIB='$(LD) -d y -G -o $[@]'
+       sysv5uw7*|unix_sv*)
+               # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
+               if test $ac_cv_prog_gcc != yes; then
+                       CC_SHARED_OPTS='-KPIC'
+               fi
+               MK_SHARED_LIB='$(LD) -d y -G -o [$]@'
                ;;
        *)
                CC_SHARED_OPTS='unknown'
@@ -1697,15 +1823,7 @@ AC_DEFUN([CF_SHARED_OPTS],
        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
+                       test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
                        ;;
                *)
                        AC_MSG_WARN(ignored --with-shlib-version)
@@ -1833,7 +1951,7 @@ AC_DEFUN([CF_SRC_MODULES],
 AC_MSG_CHECKING(for src modules)
 
 # dependencies and linker-arguments for test-programs
-TEST_DEPS="${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS"
+TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS"
 TEST_ARGS="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARGS"
 
 # dependencies and linker-arguments for utility-programs
@@ -1868,7 +1986,7 @@ do
                        CF_UPPER(cf_have_include,$cf_dir)
                        AC_DEFINE_UNQUOTED(HAVE_${cf_have_include}_H)
                        AC_DEFINE_UNQUOTED(HAVE_LIB${cf_have_include})
-                       TEST_DEPS="${LIB_PREFIX}${cf_dir}${DFT_DEP_SUFFIX} $TEST_DEPS"
+                       TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${cf_dir}${DFT_DEP_SUFFIX} $TEST_DEPS"
                        TEST_ARGS="-l${cf_dir}${DFT_ARG_SUFFIX} $TEST_ARGS"
                fi
        fi
@@ -1890,7 +2008,7 @@ SRC_SUBDIRS="$SRC_SUBDIRS misc test"
 test $cf_with_cxx_binding != no && SRC_SUBDIRS="$SRC_SUBDIRS c++"
 
 ADA_SUBDIRS=
-if test "$cf_cv_prog_gnat_correct" = yes && test -d $srcdir/Ada95; then
+if test "$cf_cv_prog_gnat_correct" = yes && test -f $srcdir/Ada95/Makefile.in; then
    SRC_SUBDIRS="$SRC_SUBDIRS Ada95"
    ADA_SUBDIRS="gen src samples"
 fi
@@ -1924,12 +2042,11 @@ os2*) #(vi
 esac
 AC_CACHE_CHECK(for library $cf_stdcpp_libname,cf_cv_libstdcpp,[
        cf_save="$LIBS"
-       LIBS="$LIBS -l$cf_stdcpp_libname -lm"
+       LIBS="$LIBS -l$cf_stdcpp_libname"
 AC_TRY_LINK([
 #include <strstream.h>],[
 char buf[80];
 strstreambuf foo(buf, sizeof(buf))
-//destroy foo
 ],
        [cf_cv_libstdcpp=yes],
        [cf_cv_libstdcpp=no])
index b797f0d03c36d00f7d7451a83f7c697083300dea..936b2053d5881ba09959a7073b8892a3be8f5f47 100644 (file)
@@ -1,6 +1,6 @@
 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
 <!--
-  $Id: announce.html.in,v 1.34 1999/10/23 20:52:29 tom Exp $
+  $Id: announce.html.in,v 1.39 2000/07/04 21:59:36 tom Exp $
 -->
 <HTML>
 <HEAD>
@@ -33,153 +33,141 @@ the library and tools.<P>
 The ncurses distribution is available via anonymous FTP at
 the GNU distribution site
 <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>.
+<br>It is also available at
+<A HREF="ftp://dickey.his.com/ncurses">ftp://dickey.his.com/ncurses</A>.
 
 <H1>Release Notes</H1>
 
-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.
+This release is designed to be upward compatible from ncurses 5.0; very few
+applications will require recompilation, depending on the platform.
+These are the highlights from the change-log since ncurses 5.0 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).
+       <li>made the extended terminal capabilities
+         (<code>configure&nbsp;--enable-tcap-names</code>)
+         a standard feature (though the configure script can disable it,
+         it is built by default).
+
+       <li>removed the <code>trace()</code> function and related trace support
+         from the production library.  This is the only interface change that
+         may cause problems with existing applications linked to shared
+         libraries, since not all platforms use the minor version number.
+
+       <li>explicitly initialized to zero several data items which were
+         implicitly initialized, e.g., cur_term.  If not explicitly
+         initialized, their storage type is C (common), and causes problems
+         linking on some platforms.
+
+       <li>modified curses.h.in, undef'ing some symbols to avoid conflict with
+         C++ STL.
 </ul>
 New features:
 <ul>
-       <li>enable sigwinch handler by default.
+       <li>added a new extension, <code>assume_default_colors()</code> to
+         provide better control over the use of default colors.  This is
+         the principal visible difference between ncurses 5.1 and preceding
+         versions.  The new extension allows an application to specify what
+         colors pair 0 uses.
+        <p> 
+         <em>NOTE</em>:  Pair 0 defaults to white on black unless
+         you have invoked <code>use_default_colors()</code> or set it via
+         <code>assume_default_colors()</code>.  An application that calls
+         <code>start_colors()</code> without setting the background color
+         will consistently have a black background no matter what color your
+         terminal's background actually is.
+
+       <li>made several fixes to the terminfo-to-termcap conversion, and
+         have been using the generated termcaps without further hand-tuning. 
+         This builds on the extension <code>use_extended_names()</code> by
+         adding "obsolete" termcap strings to terminfo.src
+       <ul>
+         <li>modified <code>tic</code> so that if extended names (i.e.,
+           configure&nbsp;--enable-tcap-names) are active, then <code>tic&nbsp;-x</code>
+           will also write "obsolete" capabilities that are present in the
+           terminfo source.
+
+         <li>added screen's AX capability (for ECMA SGR 39 and 49) to applicable
+           terminfo entries, use presence of this as a check for a small
+           improvement in setting default colors.
+
+         <li>add -a option to tic and infocmp, which retains commented-out
+           capabilities during source translation/comparison, e.g., captoinfo
+           and infotocap.
+       </ul>
+
+       <li>implemented limited support for UTF-8, useful with XFree86 xterm:
+       <ul>
+         <li>if the <code>configure&nbsp;--enable-widec</code> option is
+           given, append 'w' to names of the generated libraries (e.g.,
+           libncursesw.so) to avoid conflict with existing ncurses libraries.
+         <li>add a simple UTF-8 output driver to the experimental
+           wide-character support.  If any of the environment variables
+           LC_ALL, LC_CTYPE or LANG contain the string "UTF-8", this driver
+           will be used to translate the output to UTF-8.
+         <li>modified view.c to make a rudimentary viewer of UTF-8 text.
+       </ul>
+
+       <li>modify <code>raw()</code> and <code>noraw()</code> to clear/restore
+         IEXTEN flag which affects <code>stty lnext</code> on systems such as FreeBSD
+
+       <li>reordered tests during mouse initialization to allow for gpm to run
+         in xterm, or for xterm to be used under OS/2 EMX.  Also dropped test
+         for <code>$DISPLAY</code> in favor of the terminfo capability
+         <code>kmous=\E[M</code> or
+         if <code>$TERM</code> environment variable contains "xterm".
+
+       <li>added configure option <code>--with-manpage-symlinks</code>, which
+         provides for fully indexing manpage entries by making symbolic links
+         for the aliases.
+
+       <li>changed <code>unctrl()</code> to render C1 characters (128-159) as
+         <code>~@</code>, <code>~A</code>, etc.
+
+       <li>add experimental configure option --enable-colorfgbg to check for
+         $COLORTERM variable as set by rxvt/aterm/Eterm.
+
+       <li>made the <code>infocmp -F</code> option less verbose.
+
+       <li>dropped support for gnat 3.10 (gnat 3.12 is current).
 
-       <li>turn on hashmap scrolling code by default
-
-       <li>improved support for termcap applications
+</ul>
+Major bug fixes:
 <ul>
-         <li>modify tput to accept termcap names as an alternative to terminfo
-           names.
+       <li>modified infocmp -e, -E options to ensure that generated fallback.c
+         type for Booleans agrees with term.h
 
-         <li>provide support for termcap PC variable by copying it from terminfo
-           data and using it as the padding character in tputs.
+       <li>documented a special case of incompatiblity between ncurses 4.2 and
+         5.0, added a section for this in INSTALL.
 
-         <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>corrected tests for file-descriptors in OS/2 EMX mouse support.  A
+         negative value could be used by FD_SET, causing the select() call to
+         wait indefinitely.
 
-         <li>change name-comparisons in lib_termcap to compare no more than 2
-           characters.
+       <li>made 'tput flash' work properly for xterm by flushing output in
+         delay_output() when using napms(), and modifying xterm's terminfo to
+         specify no padding character.  Otherwise, xterm's reported baud rate
+         could mislead ncurses into producing too few padding 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>modified lib_addch.c to allow repeated update to the lower-right
+         corner, rather than displaying only the first character written until
+         the cursor is moved.  Recent versions of SVr4 curses can update the
+         lower-right corner, and behave this way.
 
-       <li>modify terminfo parsing to accept octal and hexadecimal constants
+       <li>modified echo() behavior of getch() to match Solaris curses for
+         carriage return and backspace (reported by Neil Zanella).
 
-       <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>corrected offsets used for subwindows in <code>wresize()</code>
 
-       <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>modified configure script so AC_MSG_ERROR is temporarily defined to
+         a warning in AC_PROG_CXX to make it recover from a missing C++
+         compiler without requiring user to add --without-cxx option
 
-       <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>corrected logic in lib_twait.c as used by lib_mouse.c for GPM mouse
+         support when poll() is used rather than select().
 
-       <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.
+       <li>made several fixes for buffer overflows, unchecked recursion,
+         improvements in performance, etc.  See the NEWS file for details.
 </ul>
 
 <H1>Features of Ncurses</H1>
@@ -294,39 +282,62 @@ 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>.
+<br>
+<A HREF="http://www.vexus.ca/CDK.html">http://www.vexus.ca/CDK.html</a>
+<br>
+<A HREF="http://dickey.his.com/cdk/cdk.html">http://dickey.his.com/cdk</A>.
 <DT> ded
 <DD> directory-editor
-<A HREF="ftp://ftp.clark.net/pub/dickey/ded">ftp://ftp.clark.net/pub/dickey/ded</A>.
+<br>
+<A HREF="http://dickey.his.com/ded/ded.html">http://dickey.his.com/ded</A>.
 <DT> dialog
 <DD> the underlying application used in Slackware's setup, and the basis
 for similar applications on GNU/Linux.
+<br>
+<A HREF="http://dickey.his.com/dialog/dialog.html">http://dickey.his.com/dialog</A>.
 <DT> lynx
 <DD> the character-screen WWW browser
+<br>
+<A HREF="http://lynx.isc.org/release/">http://lynx.isc.org/release</A>.
 <DT> Midnight Commander 4.1
 <DD> file manager
+<br>
+<A HREF="www.gnome.org/mc/">www.gnome.org/mc/</A>.
 <DT> mutt
 <DD> mail utility
+<br>
+<A HREF="http://www.mutt.org">http://www.mutt.org</A>.
 <DT> ncftp
 <DD> file-transfer utility
+<br>
+<A HREF="http://www.ncftp.com">http://www.ncftp.com</A>.
 <DT> nvi
 <DD> New vi versions 1.50 are able to use ncurses versions 1.9.7 and later.
+<br>
+<A HREF="http://www.bostic.com/vi/">http://www.bostic.com/vi/</A>.
 <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>.
+<br>
+<A HREF="http://www.tin.org">http://www.tin.org</A>.
 <DT> taper
 <DD> tape archive utility
+<br>
+<A HREF="http://members.iinet.net.au/~yusuf/taper/">http://members.iinet.net.au/~yusuf/taper/</A>.
 <DT> vh-1.6
 <DD> Volks-Hypertext browser for the Jargon File
+<br>
+<A HREF="http://www.bg.debian.org/Packages/unstable/text/vh.html">http://www.bg.debian.org/Packages/unstable/text/vh.html</A>.
 </DL>
 as well as some that use ncurses for the terminfo support alone:
 <DL>
 <DT> minicom
 <DD> terminal emulator
+<br>
+<A HREF="http://www.pp.clinet.fi/~walker/minicom.html">http://www.pp.clinet.fi/~walker/minicom.html</A>.
 <DT> vile
 <DD> vi-like-emacs
-<A HREF="ftp://ftp.clark.net/pub/dickey/vile">ftp://ftp.clark.net/pub/dickey/vile</A>.
+<br>
+<A HREF="http://dickey.his.com/vile/vile.html">http://dickey.his.com/vile</A>.
 </DL>
 <P>
 
@@ -339,10 +350,10 @@ The original developers of ncurses are <A
 HREF="mailto:zmbenhal@netcom.com">Zeyd Ben-Halim</A> and
 <A HREF="http://www.ccil.org/~esr/home.html">Eric S. Raymond</A>.
 Ongoing work is being done by
-<A HREF="mailto:dickey@clark.net">Thomas Dickey</A>
+<A HREF="mailto:dickey@herndon4.his.com">Thomas Dickey</A>
 and
 <A HREF="mailto:juergen.pfeifer@gmx.net">J&uuml;rgen Pfeifer</A>.
-<A HREF="mailto:dickey@clark.net">Thomas Dickey</A>
+<A HREF="mailto:dickey@herndon4.his.com">Thomas Dickey</A>
 acts as the maintainer for the Free Software Foundation, which holds the
 copyright on ncurses.
 Contact the current maintainers at
@@ -359,7 +370,7 @@ This list is open to anyone interested in helping with the development and
 testing of this package.<P>
 
 Beta versions of ncurses and patches to the current release are made available at
-<A HREF="ftp://ftp.clark.net/pub/dickey/ncurses">ftp://ftp.clark.net/pub/dickey/ncurses</A>.
+<A HREF="ftp://dickey.his.com/ncurses">ftp://dickey.his.com/ncurses</A>.
 
 <H2>Future Plans</H2>
 <UL>
index 886678df2fce04145e8bbbd80b4ca208c8a845b4..e8079893736f4ce81c3a68c51df86db10bb9d8f6 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.51 1999/10/23 20:13:02 tom Exp $
+# $Id: Makefile.in,v 1.52 2000/05/28 01:44:34 tom Exp $
 ##############################################################################
 # Copyright (c) 1998,1999 Free Software Foundation, Inc.                     #
 #                                                                            #
@@ -76,7 +76,7 @@ ABI_VERSION   = @cf_cv_abi_version@
 
 LINK           = @LINK_PROGS@ $(CXX) @CXXLDFLAGS@
 
-LIBROOT        = ncurses++
+LIBROOT        = ncurses++@LIB_SUFFIX@
 LIBNAME        = @LIB_PREFIX@$(LIBROOT).a
 
 LDFLAGS                = @EXTRA_LDFLAGS@ -L../lib -L$(libdir) \
@@ -94,7 +94,10 @@ LDFLAGS_DEFAULT      = $(LDFLAGS_@DFT_UPR_MODEL@)
 AUTO_SRC       = \
                etip.h
 
-all:           $(AUTO_SRC) ../lib/$(LIBNAME) demo$x
+all \
+libs ::                $(AUTO_SRC) ../lib/$(LIBNAME)
+
+all ::         demo$x
 
 sources :      $(AUTO_SRC)
 
index ae88b44e0a4c5ac7bd1f7d0a3027926f73f199f4..eaaadc7eebdd8b4d02be6e0f67c9b5daf4384067 100644 (file)
@@ -1,6 +1,6 @@
 // * this is for making 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            *
@@ -34,7 +34,7 @@
 #include "cursesapp.h"
 #include "internal.h"
 
-MODULE_ID("$Id: cursesapp.cc,v 1.4 1999/05/16 17:31:11 juergen Exp $")
+MODULE_ID("$Id: cursesapp.cc,v 1.6 1999/10/30 23:59:37 tom Exp $")
 
 void
 NCursesApplication::init(bool bColors) {
@@ -85,7 +85,7 @@ int NCursesApplication::rinit(NCursesWindow& w) {
 
 void NCursesApplication::push(Soft_Label_Key_Set& S) {
   SLK_Link* L = new SLK_Link;
-  assert(L);
+  assert(L != 0);
   L->prev = slk_stack;
   L->SLKs = &S;
   slk_stack = L;
@@ -121,7 +121,7 @@ int NCursesApplication::operator()(void) {
   Soft_Label_Key_Set::Label_Layout fmt = useSLKs();
   if (fmt!=Soft_Label_Key_Set::None) {    
     S = new Soft_Label_Key_Set(fmt);
-    assert(S);
+    assert(S != 0);
     init_labels(*S);
   }
 
index 12b9cd4fcce2387db5dcce370044822bf10e6ef7..a993322b8657aeac1c556f45b6bc36736bc10bdd 100644 (file)
@@ -35,7 +35,7 @@
 #include "cursesapp.h"
 #include "internal.h"
 
-MODULE_ID("$Id: cursesf.cc,v 1.9 1999/05/16 17:29:36 juergen Exp $")
+MODULE_ID("$Id: cursesf.cc,v 1.10 1999/10/30 23:49:28 tom Exp $")
   
 NCursesFormField::~NCursesFormField () {
   if (field)
@@ -49,7 +49,7 @@ FIELD**
 NCursesForm::mapFields(NCursesFormField* nfields[]) {
   int fieldCount = 0,lcv;
   
-  assert(nfields);
+  assert(nfields != 0);
 
   for (lcv=0; nfields[lcv]->field; ++lcv)
     ++fieldCount;
@@ -350,18 +350,18 @@ NCursesForm::virtualize(int c) {
 //
 bool UserDefinedFieldType::fcheck(FIELD *f, const void *u) {
   NCursesFormField* F = (NCursesFormField*)u;
-  assert(F);
+  assert(F != 0);
   UserDefinedFieldType* udf = (UserDefinedFieldType*)(F->fieldtype());
-  assert(udf);
+  assert(udf != 0);
   return udf->field_check(*F);
 }
 
 bool UserDefinedFieldType::ccheck(int c, const void *u) {
   NCursesFormField* F = (NCursesFormField*)u;
-  assert(F);
+  assert(F != 0);
   UserDefinedFieldType* udf = 
     (UserDefinedFieldType*)(F->fieldtype());
-  assert(udf);
+  assert(udf != 0);
   return udf->char_check(c);
 }
 
@@ -379,19 +379,19 @@ FIELDTYPE* UserDefinedFieldType_With_Choice::generic_fieldtype_with_choice =
 
 bool UserDefinedFieldType_With_Choice::next_choice(FIELD *f, const void *u) {
   NCursesFormField* F = (NCursesFormField*)u;
-  assert(F);
+  assert(F != 0);
   UserDefinedFieldType_With_Choice* udf = 
     (UserDefinedFieldType_With_Choice*)(F->fieldtype());
-  assert(udf);
+  assert(udf != 0);
   return udf->next(*F);
 }
 
 bool UserDefinedFieldType_With_Choice::prev_choice(FIELD *f, const void *u) {
   NCursesFormField* F = (NCursesFormField*)u;
-  assert(F);
+  assert(F != 0);
   UserDefinedFieldType_With_Choice* udf = 
     (UserDefinedFieldType_With_Choice*)(F->fieldtype());
-  assert(udf);
+  assert(udf != 0);
   return udf->previous(*F);
 }
 
index 1119f5cbc70a3fa698a0af5c39b9e66c4a00afac..89f0cbe9dd34d585152063f287a147400529a836 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            *
@@ -31,7 +31,7 @@
  *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997                 *
  ****************************************************************************/
 
-// $Id: cursesf.h,v 1.10 1999/05/16 17:31:42 juergen Exp $
+// $Id: cursesf.h,v 1.11 1999/10/30 23:59:37 tom Exp $
 
 #ifndef _CURSESF_H
 #define _CURSESF_H
@@ -310,7 +310,7 @@ private:
   // Get the backward pointer to the C++ object from a FORM
   static inline NCursesForm* getHook(const FORM *f) {
     UserHook* hook = (UserHook*)::form_userptr(f);
-    assert(hook && hook->m_owner==f);
+    assert(hook != 0 && hook->m_owner==f);
     return (NCursesForm*)(hook->m_back);
   }
 
@@ -329,13 +329,13 @@ protected:
   // internal routines 
   inline void set_user(void *user) {
     UserHook* uptr = (UserHook*)::form_userptr (form);
-    assert (uptr && uptr->m_back==this && uptr->m_owner==form);
+    assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==form);
     uptr->m_user = user;
   }
 
   inline void *get_user() {
     UserHook* uptr = (UserHook*)::form_userptr (form);
-    assert (uptr && uptr->m_back==this && uptr->m_owner==form);
+    assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==form);
     return uptr->m_user;
   }  
   
index 599b5f1788858293edf44c8fcf7a04e57d5639d4..3b4dbd58bef17425d5a83f68070898dc91156467 100644 (file)
@@ -1,6 +1,6 @@
 // * this is for making 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            *
@@ -35,7 +35,7 @@
 #include "cursesapp.h"
 #include "internal.h"
 
-MODULE_ID("$Id: cursesm.cc,v 1.11 1999/07/31 09:45:23 juergen Exp $")
+MODULE_ID("$Id: cursesm.cc,v 1.12 1999/10/30 23:59:37 tom Exp $")
   
 NCursesMenuItem::~NCursesMenuItem() {
   if (item)
@@ -304,7 +304,7 @@ NCursesMenu::operator()(void) {
       if (drvCmnd == CMD_ACTION) {
        if (options() & O_ONEVALUE) {
          NCursesMenuItem* itm = current_item();
-         assert(itm);
+         assert(itm != 0);
          if (itm->options() & O_SELECTABLE)
            {
              b_action = itm->action();
index 5037ae23fb7547598888e3ad5c07fe8595bc1209..26e0b4ce2b02e677335bb388ee2826f2bf5766aa 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            *
@@ -31,7 +31,7 @@
  *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997                 *
  ****************************************************************************/
 
-// $Id: cursesm.h,v 1.12 1999/05/16 17:30:27 juergen Exp $
+// $Id: cursesm.h,v 1.13 1999/10/30 23:59:37 tom Exp $
 
 #ifndef _CURSESM_H
 #define _CURSESM_H
@@ -137,10 +137,10 @@ typedef bool ITEMCALLBACK(NCursesMenuItem&);
 // function pointer for items.
 class NCursesMenuCallbackItem : public NCursesMenuItem {
 private:
-  const ITEMCALLBACK* p_fct;
+  ITEMCALLBACK* p_fct;
 
 public:
-  NCursesMenuCallbackItem(const ITEMCALLBACK* fct = NULL,
+  NCursesMenuCallbackItem(ITEMCALLBACK* fct       = NULL,
                          const char* p_name      = NULL,
                          const char* p_descript  = NULL )
     : NCursesMenuItem (p_name, p_descript),
@@ -179,7 +179,7 @@ private:
   // Get the backward pointer to the C++ object from a MENU
   static inline NCursesMenu* getHook(const MENU *m) {
     UserHook* hook = (UserHook*)::menu_userptr(m);
-    assert(hook && hook->m_owner==m);
+    assert(hook != 0 && hook->m_owner==m);
     return (NCursesMenu*)(hook->m_back);
   }
 
@@ -198,13 +198,13 @@ protected:
   // internal routines 
   inline void set_user(void *user) {
     UserHook* uptr = (UserHook*)::menu_userptr (menu);
-    assert (uptr && uptr->m_back==this && uptr->m_owner==menu);
+    assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==menu);
     uptr->m_user = user;
   }
 
   inline void *get_user() {
     UserHook* uptr = (UserHook*)::menu_userptr (menu);
-    assert (uptr && uptr->m_back==this && uptr->m_owner==menu);
+    assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==menu);
     return uptr->m_user;
   }  
   
index e0c17aea7eb406e1fad8e36188da0eb2cb15c6e3..3bcf3d260f365e4120efac4a65d0d03a9e558b5b 100644 (file)
@@ -1,6 +1,6 @@
 // * this is for making 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            *
@@ -34,7 +34,7 @@
 #include "cursesp.h"
 #include "internal.h"
 
-MODULE_ID("$Id: cursesp.cc,v 1.14 1999/05/16 17:30:51 juergen Exp $")
+MODULE_ID("$Id: cursesp.cc,v 1.15 1999/10/30 23:59:37 tom Exp $")
 
 NCursesPanel* NCursesPanel::dummy = (NCursesPanel*)0;
 
@@ -52,7 +52,7 @@ void NCursesPanel::init() {
 
 NCursesPanel::~NCursesPanel() {
   UserHook* hook = (UserHook*)::panel_userptr(p);
-  assert(hook && hook->m_back==this && hook->m_owner==p);
+  assert(hook != 0 && hook->m_back==this && hook->m_owner==p);
   delete hook;
   ::del_panel(p);
   ::update_panels();
index 51cb4cdbf8471d8a5d47b6c19168e7378e4efc65..6293dd102e872a5cccc7920a145318c6c4faba99 100644 (file)
@@ -1,8 +1,40 @@
 // * This makes emacs happy -*-Mode: C++;-*-
+/****************************************************************************
+ * 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.                                                           *
+ ****************************************************************************/
+
+/****************************************************************************
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997                 *
+ ****************************************************************************/
+
 #ifndef _CURSESP_H
 #define _CURSESP_H
 
-// $Id: cursesp.h,v 1.11 1999/07/31 09:46:05 juergen Exp $
+// $Id: cursesp.h,v 1.12 1999/10/31 00:00:02 tom Exp $
 
 #include <cursesw.h>
 
@@ -29,14 +61,14 @@ private:
 protected:
   void set_user(void *user) {
     UserHook* uptr = (UserHook*)::panel_userptr (p);
-    assert (uptr && uptr->m_back==this && uptr->m_owner==p);
+    assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==p);
     uptr->m_user = user;
   }
   // Set the user pointer of the panel.
   
   void *get_user() {
     UserHook* uptr = (UserHook*)::panel_userptr (p);
-    assert (uptr && uptr->m_back==this && uptr->m_owner==p);
+    assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==p);
     return uptr->m_user;
   }
   
index 4072c3c3f6930b6bf139b7a11c4b5e12575eef9c..baae046ef20460d9b40947f503574f0ca796d5e1 100644 (file)
@@ -25,7 +25,7 @@
 #include "cursesw.h"
 #include "internal.h"
 
-MODULE_ID("$Id: cursesw.cc,v 1.15 1999/09/11 23:26:29 tom Exp $")
+MODULE_ID("$Id: cursesw.cc,v 1.16 1999/11/13 23:42:17 tom Exp $")
 
 #define COLORS_NEED_INITIALIZATION  -1
 #define COLORS_NOT_INITIALIZED       0
@@ -424,9 +424,11 @@ NCursesWindow::setcolor(short pair)
   return OK;
 }
 
+#ifdef HAVE_HAS_KEY
 extern "C" int _nc_has_mouse(void);
 
 bool NCursesWindow::has_mouse() const {
   return ((::has_key(KEY_MOUSE) || ::_nc_has_mouse())
          ? TRUE : FALSE);
 }
+#endif
index e108074adf4e5706b9c135c3ac46c8dafcfa5943..efea83323b11bf7b1f27f0bbe593c6ade421a0dd 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
-# $Id: edit_cfg.sh,v 1.7 1999/09/12 02:00:14 tom Exp $
+# $Id: edit_cfg.sh,v 1.8 2000/07/01 16:07:37 tom Exp $
 ##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc.                          #
+# Copyright (c) 1998,2000 Free Software Foundation, Inc.                     #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -36,6 +36,7 @@
 #      $1 = ncurses_cfg.h
 #      $2 = etip.h
 #
+echo "substituting autoconf'd values from $1 into $2"
 for name in \
        CPP_HAS_PARAM_INIT \
        ETIP_NEEDS_MATH_EXCEPTION \
@@ -49,16 +50,18 @@ do
        mv $2 $2.bak
        if ( grep "[    ]$name[         ]1" $1 2>&1 >/dev/null)
        then
-               sed -e 's/define '$name'.*$/  define '$name' 1/' $2.bak >$2
+               value=1
+               sed -e 's/define '$name'.*$/define '$name' 1/' $2.bak >$2
        else
-               sed -e 's/define '$name'.*$/  define '$name' 0/' $2.bak >$2
+               value=0
+               sed -e 's/define '$name'.*$/define '$name' 0/' $2.bak >$2
        fi
        if (cmp -s $2 $2.bak)
        then
-               echo '** same: '$name
+               echo '... '$name $value
                mv $2.bak $2
        else
-               echo '** edit: '$name
+               echo '... '$name $value
                rm -f $2.bak
        fi
 done
index 729d6cfef51806cd218aa0386c1b5077ad3b9736..499496436cd502d1fbd4861bd479191222eb825e 100755 (executable)
@@ -1,7 +1,10 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
-#
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+#   Free Software Foundation, Inc.
+
+version='2000-06-13'
+
 # 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
 # the Free Software Foundation; either version 2 of the License, or
@@ -22,7 +25,7 @@
 # the same distribution terms that you use for the rest of that program.
 
 # Written by Per Bothner <bothner@cygnus.com>.
-# The master version of this file is at the FSF in /home/gd/gnu/lib.
+# Please send patches to <config-patches@gnu.org>.
 #
 # This script attempts to guess a canonical system name similar to
 # config.sub.  If it succeeds, it prints the system name on stdout, and
 # (but try to keep the structure clean).
 #
 
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of this system.
+
+Operation modes:
+  -h, --help               print this help, then exit
+  -V, --version            print version number, then exit"
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case "$1" in
+    --version | --vers* | -V )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       exec >&2
+       echo "$me: invalid option $1"
+       echo "$help"
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+# Use $HOST_CC if defined. $CC may point to a cross-compiler
+if test x"$CC_FOR_BUILD" = x; then
+  if test x"$HOST_CC" != x; then
+    CC_FOR_BUILD="$HOST_CC"
+  else
+    if test x"$CC" != x; then
+      CC_FOR_BUILD="$CC"
+    else
+      CC_FOR_BUILD=cc
+    fi
+  fi
+fi
+
+
 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
 # (ghazi@noc.rutgers.edu 8/24/94.)
 if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
@@ -46,11 +103,49 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
 UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
-trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
+dummy=dummy-$$
+trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15
 
 # Note: order is significant - the case branches are not exclusive.
 
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+       # Netbsd (nbsd) targets should (where applicable) match one or
+       # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+       # switched to ELF, *-*-netbsd* would select the old
+       # object file format.  This provides both forward
+       # compatibility and a consistent mechanism for selecting the
+       # object file format.
+       # Determine the machine/vendor (is the vendor relevant).
+       case "${UNAME_MACHINE}" in
+           amiga) machine=m68k-cbm ;;
+           arm32) machine=arm-unknown ;;
+           atari*) machine=m68k-atari ;;
+           sun3*) machine=m68k-sun ;;
+           mac68k) machine=m68k-apple ;;
+           macppc) machine=powerpc-apple ;;
+           hp3[0-9][05]) machine=m68k-hp ;;
+           ibmrt|romp-ibm) machine=romp-ibm ;;
+           *) machine=${UNAME_MACHINE}-unknown ;;
+       esac
+       # The Operating System including object format.
+       if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+               | grep __ELF__ >/dev/null
+       then
+           # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+           # Return netbsd for either.  FIX?
+           os=netbsd
+       else
+           os=netbsdelf
+       fi
+       # The OS release
+       release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+       # contains redundant information, the shorter form:
+       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+       echo "${machine}-${os}${release}"
+       exit 0 ;;
     alpha:OSF1:*:*)
        if test $UNAME_RELEASE = "V4.0"; then
                UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
@@ -59,46 +154,62 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        # 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.
-       cat <<EOF >dummy.s
+       cat <<EOF >$dummy.s
+       .data
+\$Lformat:
+       .byte 37,100,45,37,120,10,0     # "%d-%x\n"
+
+       .text
        .globl main
+       .align 4
        .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
+       .frame \$30,16,\$26,0
+       ldgp \$29,0(\$27)
+       .prologue 1
+       .long 0x47e03d80 # implver \$0
+       lda \$2,-1
+       .long 0x47e20c21 # amask \$2,\$1
+       lda \$16,\$Lformat
+       mov \$0,\$17
+       not \$1,\$18
+       jsr \$26,printf
+       ldgp \$29,0(\$26)
+       mov 0,\$16
+       jsr \$26,exit
        .end main
 EOF
-       ${CC-cc} dummy.s -o dummy 2>/dev/null
+       $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
        if test "$?" = 0 ; then
-               ./dummy
-               case "$?" in
-                       7)
+               case `./$dummy` in
+                       0-0)
                                UNAME_MACHINE="alpha"
                                ;;
-                       15)
+                       1-0)
                                UNAME_MACHINE="alphaev5"
                                ;;
-                       14)
+                       1-1)
                                UNAME_MACHINE="alphaev56"
                                ;;
-                       10)
+                       1-101)
                                UNAME_MACHINE="alphapca56"
                                ;;
-                       16)
+                       2-303)
                                UNAME_MACHINE="alphaev6"
                                ;;
+                       2-307)
+                               UNAME_MACHINE="alphaev67"
+                               ;;
                esac
        fi
-       rm -f dummy.s dummy
-       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
+       rm -f $dummy.s $dummy
+       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       exit 0 ;;
+    Alpha\ *:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # Should we change UNAME_MACHINE based on the output of uname instead
+       # of the specific Alpha model?
+       echo alpha-pc-interix
        exit 0 ;;
     21064:Windows_NT:50:3)
        echo alpha-dec-winnt3.5
@@ -106,9 +217,6 @@ EOF
     Amiga*:UNIX_System_V:4.0:*)
        echo m68k-cbm-sysv4
        exit 0;;
-    amiga:NetBSD:*:*)
-      echo m68k-cbm-netbsd${UNAME_RELEASE}
-      exit 0 ;;
     amiga:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
@@ -133,16 +241,16 @@ EOF
     wgrisc:OpenBSD:*:*)
        echo mipsel-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
+    *:OS/390:*:*)
+       echo i370-ibm-openedition
+       exit 0 ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
        echo arm-acorn-riscix${UNAME_RELEASE}
        exit 0;;
-    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*:*:*)
+    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
@@ -150,7 +258,7 @@ EOF
                echo pyramid-pyramid-bsd
        fi
        exit 0 ;;
-    NILE:*:*:dcosx)
+    NILE*:*:*:dcosx)
        echo pyramid-pyramid-svr4
        exit 0 ;;
     sun4H:SunOS:5.*:*)
@@ -195,21 +303,38 @@ EOF
     aushp:SunOS:*:*)
        echo sparc-auspex-sunos${UNAME_RELEASE}
        exit 0 ;;
-    atari*:NetBSD:*:*)
-       echo m68k-atari-netbsd${UNAME_RELEASE}
-       exit 0 ;;
     atari*:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
-    sun3*:NetBSD:*:*)
-       echo m68k-sun-netbsd${UNAME_RELEASE}
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+       exit 0 ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
        exit 0 ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit 0 ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit 0 ;;
     sun3*:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
-    mac68k:NetBSD:*:*)
-       echo m68k-apple-netbsd${UNAME_RELEASE}
-       exit 0 ;;
     mac68k:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
@@ -222,9 +347,6 @@ EOF
     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 ;;
@@ -238,8 +360,13 @@ EOF
        echo clipper-intergraph-clix${UNAME_RELEASE}
        exit 0 ;;
     mips:*:*:UMIPS | mips:*:*:RISCos)
-       sed 's/^        //' << EOF >dummy.c
-       int main (argc, argv) int argc; char **argv; {
+       sed 's/^        //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
        #if defined (host_mips) && defined (MIPSEB)
        #if defined (SYSTYPE_SYSV)
          printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
@@ -254,10 +381,10 @@ EOF
          exit (-1);
        }
 EOF
-       ${CC-cc} dummy.c -o dummy \
-         && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-         && rm dummy.c dummy && exit 0
-       rm -f dummy.c dummy
+       $CC_FOR_BUILD $dummy.c -o $dummy \
+         && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+         && rm $dummy.c $dummy && exit 0
+       rm -f $dummy.c $dummy
        echo mips-mips-riscos${UNAME_RELEASE}
        exit 0 ;;
     Night_Hawk:Power_UNIX:*:*)
@@ -275,15 +402,18 @@ EOF
     AViiON:dgux:*:*)
         # DG/UX returns AViiON for all architectures
         UNAME_PROCESSOR=`/usr/bin/uname -p`
-        if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
-       if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
-            -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
+       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+       then
+           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+              [ ${TARGET_BINARY_INTERFACE}x = x ]
+           then
                echo m88k-dg-dgux${UNAME_RELEASE}
-       else
+           else
                echo m88k-dg-dguxbcs${UNAME_RELEASE}
+           fi
+       else
+           echo i586-dg-dgux${UNAME_RELEASE}
        fi
-        else echo i586-dg-dgux${UNAME_RELEASE}
-        fi
        exit 0 ;;
     M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
        echo m88k-dolphin-sysv3
@@ -307,13 +437,9 @@ 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
+               sed 's/^                //' << EOF >$dummy.c
                #include <sys/systemcfg.h>
 
                main()
@@ -324,8 +450,8 @@ EOF
                        exit(0);
                        }
 EOF
-               ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
-               rm -f dummy.c dummy
+               $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
+               rm -f $dummy.c $dummy
                echo rs6000-ibm-aix3.2.5
        elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
                echo rs6000-ibm-aix3.2.4
@@ -353,7 +479,7 @@ EOF
     ibmrt:4.4BSD:*|romp-ibm:BSD:*)
        echo romp-ibm-bsd4.4
        exit 0 ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC NetBSD and
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
        echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
        exit 0 ;;                           # report: romp-ibm BSD 4.3
     *:BOSX:*:*)
@@ -372,8 +498,10 @@ EOF
        case "${UNAME_MACHINE}" in
            9000/31? )            HP_ARCH=m68000 ;;
            9000/[34]?? )         HP_ARCH=m68k ;;
-           9000/6?? | 9000/7?? | 9000/80[024] | 9000/8?[13679] | 9000/892 )
-              sed 's/^              //' << EOF >dummy.c
+           9000/[678][0-9][0-9])
+              sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
               #include <stdlib.h>
               #include <unistd.h>
 
@@ -404,14 +532,14 @@ EOF
                   exit (0);
               }
 EOF
-       (${CC-cc} dummy.c -o dummy 2>/dev/null ) && HP_ARCH=`./dummy`
-       rm -f dummy.c dummy
+       (CCOPTS= $CC_FOR_BUILD $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}
        exit 0 ;;
     3050*:HI-UX:*:*)
-       sed 's/^        //' << EOF >dummy.c
+       sed 's/^        //' << EOF >$dummy.c
        #include <unistd.h>
        int
        main ()
@@ -436,8 +564,8 @@ EOF
          exit (0);
        }
 EOF
-       ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
-       rm -f dummy.c dummy
+       $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
+       rm -f $dummy.c $dummy
        echo unknown-hitachi-hiuxwe2
        exit 0 ;;
     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
@@ -446,6 +574,9 @@ EOF
     9000/8??:4.3bsd:*:*)
        echo hppa1.0-hp-bsd
        exit 0 ;;
+    *9??*:MPE/iX:*:*)
+       echo hppa1.0-hp-mpeix
+       exit 0 ;;
     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
        echo hppa1.1-hp-osf
        exit 0 ;;
@@ -462,6 +593,9 @@ EOF
     parisc*:Lites*:*:*)
        echo hppa1.1-hp-lites
        exit 0 ;;
+    hppa*:OpenBSD:*:*)
+       echo hppa-unknown-openbsd
+       exit 0 ;;
     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
        echo c1-convex-bsd
         exit 0 ;;
@@ -492,37 +626,40 @@ EOF
              -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
        exit 0 ;;
     CRAY*TS:*:*:*)
-       echo t90-cray-unicos${UNAME_RELEASE}
+       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*T3E:*:*:*)
+       echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*SV1:*:*:*)
+       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
        exit 0 ;;
     CRAY-2:*:*:*)
        echo cray2-cray-unicos
         exit 0 ;;
     F300:UNIX_System_V:*:*)
-        FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
         FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
         echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
         exit 0 ;;
     F301:UNIX_System_V:*:*)
        echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
        exit 0 ;;
-    hp3[0-9][05]:NetBSD:*:*)
-       echo m68k-hp-netbsd${UNAME_RELEASE}
-       exit 0 ;;
     hp300:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
+    i?86:BSD/386:*:* | i?86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+       echo ${UNAME_MACHINE}-pc-bsdi${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}
+    *:BSD/OS:*:*)
+       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
        exit 0 ;;
     *:FreeBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
        exit 0 ;;
-    *:NetBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-       exit 0 ;;
     *:OpenBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
        exit 0 ;;
@@ -532,6 +669,15 @@ EOF
     i*:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit 0 ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+       # UNAME_MACHINE based on the output of uname instead of i386?
+       echo i386-pc-interix
+       exit 0 ;;
+    i*:UWIN*:*)
+       echo ${UNAME_MACHINE}-pc-uwin
+       exit 0 ;;
     p*:CYGWIN*:*)
        echo powerpcle-unknown-cygwin
        exit 0 ;;
@@ -541,16 +687,15 @@ EOF
     *:GNU:*:*)
        echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
        exit 0 ;;
+    i*86:Minix:*:*)
+       echo ${UNAME_MACHINE}-pc-minix
+       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`
+       # first see if it will tell us. cd to the root directory to prevent
+       # problems with other programs or directories called `ld' in the path.
+       ld_help_string=`cd /; ld --help 2>&1`
        ld_supported_emulations=`echo $ld_help_string \
                         | sed -ne '/supported emulations:/!d
                                    s/[         ][      ]*/ /g
@@ -558,68 +703,146 @@ EOF
                                    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 ;;
+         *ia64)
+               echo "${UNAME_MACHINE}-unknown-linux"
+               exit 0
+               ;;
+         i?86linux)
+               echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+               exit 0
+               ;;
+         elf_i?86)
+               echo "${UNAME_MACHINE}-pc-linux"
+               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
+               ;;
+         elf32arm*)
+               echo "${UNAME_MACHINE}-unknown-linux-gnuoldld"
+               exit 0
+               ;;
+         armelf_linux*)
+               echo "${UNAME_MACHINE}-unknown-linux-gnu"
+               exit 0
+               ;;
+         m68klinux)
+               echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
+               exit 0
+               ;;
+         elf32ppc | elf32ppclinux)
+               # Determine Lib Version
+               cat >$dummy.c <<EOF
+#include <features.h>
+#if defined(__GLIBC__)
+extern char __libc_version[];
+extern char __libc_release[];
+#endif
+main(argc, argv)
+     int argc;
+     char *argv[];
+{
+#if defined(__GLIBC__)
+  printf("%s %s\n", __libc_version, __libc_release);
+#else
+  printf("unkown\n");
+#endif
+  return 0;
+}
+EOF
+               LIBC=""
+               $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
+               if test "$?" = 0 ; then
+                       ./$dummy | grep 1\.99 > /dev/null
+                       if test "$?" = 0 ; then
+                               LIBC="libc1"
+                       fi
+               fi
+               rm -f $dummy.c $dummy
+               echo powerpc-unknown-linux-gnu${LIBC}
+               exit 0
+               ;;
+         shelf_linux)
+               echo "${UNAME_MACHINE}-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
+               cat <<EOF >$dummy.s
+                       .data
+               \$Lformat:
+                       .byte 37,100,45,37,120,10,0     # "%d-%x\n"
+
+                       .text
+                       .globl main
+                       .align 4
+                       .ent main
+               main:
+                       .frame \$30,16,\$26,0
+                       ldgp \$29,0(\$27)
+                       .prologue 1
+                       .long 0x47e03d80 # implver \$0
+                       lda \$2,-1
+                       .long 0x47e20c21 # amask \$2,\$1
+                       lda \$16,\$Lformat
+                       mov \$0,\$17
+                       not \$1,\$18
+                       jsr \$26,printf
+                       ldgp \$29,0(\$26)
+                       mov 0,\$16
+                       jsr \$26,exit
+                       .end main
 EOF
                LIBC=""
-               ${CC-cc} dummy.s -o dummy 2>/dev/null
+               $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
                if test "$?" = 0 ; then
-                       ./dummy
-                       case "$?" in
-                       7)
+                       case `./$dummy` in
+                       0-0)
                                UNAME_MACHINE="alpha"
                                ;;
-                       15)
+                       1-0)
                                UNAME_MACHINE="alphaev5"
                                ;;
-                       14)
+                       1-1)
                                UNAME_MACHINE="alphaev56"
                                ;;
-                       10)
+                       1-101)
                                UNAME_MACHINE="alphapca56"
                                ;;
-                       16)
+                       2-303)
                                UNAME_MACHINE="alphaev6"
                                ;;
+                       2-307)
+                               UNAME_MACHINE="alphaev67"
+                               ;;
                        esac
 
-                       objdump --private-headers dummy | \
+                       objdump --private-headers $dummy | \
                          grep ld.so.1 > /dev/null
                        if test "$?" = 0 ; then
                                LIBC="libc1"
                        fi
                fi
-               rm -f dummy.s dummy
+               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[];
-{
+         cat >$dummy.c <<EOF
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
 #ifdef __MIPSEB__
   printf ("%s-unknown-linux-gnu\n", argv[1]);
 #endif
@@ -629,8 +852,10 @@ main(argc, argv)
   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
+         $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
+         rm -f $dummy.c $dummy
+       elif test "${UNAME_MACHINE}" = "s390"; then
+         echo s390-ibm-linux && exit 0
        else
          # Either a pre-BFD a.out linker (linux-gnuoldld)
          # or one that does not give us useful --help.
@@ -649,15 +874,17 @@ EOF
            ;;
          esac
          # Determine whether the default compiler is a.out or elf
-         cat >dummy.c <<EOF
+         cat >$dummy.c <<EOF
 #include <features.h>
-main(argc, argv)
-     int argc;
-     char *argv[];
-{
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
 #ifdef __ELF__
 # ifdef __GLIBC__
-#  if (__GLIBC__ >= 2)
+#  if __GLIBC__ >= 2
     printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
 #  else
     printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
@@ -671,8 +898,8 @@ main(argc, argv)
   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
+         $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
+         rm -f $dummy.c $dummy
        fi ;;
 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.  earlier versions
 # are messed up and put the nodename in both sysname and nodename.
@@ -687,25 +914,21 @@ EOF
         # 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}
+    i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
+       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
        else
-               echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}
+               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
        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-sysv4.2uw${UNAME_VERSION}
+    i?86:*:5:7*)
+        # Fixed at (any) Pentium or better
+        UNAME_MACHINE=i586
+        if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then
+           echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION}
        else
-               echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
+           echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
        fi
        exit 0 ;;
     i?86:*:3.2:*)
@@ -717,19 +940,20 @@ EOF
                (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
                (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
                        && UNAME_MACHINE=i586
+               (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
+                       && UNAME_MACHINE=i686
                echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
        else
                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}
+    i?86:*DOS:*:*)
+       echo ${UNAME_MACHINE}-pc-msdosdjgpp
        exit 0 ;;
     pc:*:*:*)
+       # Left here for compatibility:
         # 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
@@ -770,7 +994,7 @@ EOF
     mc68030:UNIX_System_V:4.*:*)
        echo m68k-atari-sysv4
        exit 0 ;;
-    i?86:LynxOS:2.*:*)
+    i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*)
        echo i386-unknown-lynxos${UNAME_RELEASE}
        exit 0 ;;
     TSUNAMI:LynxOS:2.*:*)
@@ -782,6 +1006,9 @@ EOF
     SM[BE]S:UNIX_SV:*:*)
        echo mips-dde-sysv${UNAME_RELEASE}
        exit 0 ;;
+    RM*:ReliantUNIX-*:*:*)
+       echo mips-sni-sysv4
+       exit 0 ;;
     RM*:SINIX-*:*:*)
        echo mips-sni-sysv4
        exit 0 ;;
@@ -812,7 +1039,7 @@ EOF
     news*:NEWS-OS:*:6*)
        echo mips-sony-newsos6
        exit 0 ;;
-    R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*)
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
        if [ -d /usr/nec ]; then
                echo mips-nec-sysv${UNAME_RELEASE}
        else
@@ -828,12 +1055,45 @@ EOF
     BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
        echo i586-pc-beos
        exit 0 ;;
+    SX-4:SUPER-UX:*:*)
+       echo sx4-nec-superux${UNAME_RELEASE}
+       exit 0 ;;
+    SX-5:SUPER-UX:*:*)
+       echo sx5-nec-superux${UNAME_RELEASE}
+       exit 0 ;;
+    Power*:Rhapsody:*:*)
+       echo powerpc-apple-rhapsody${UNAME_RELEASE}
+       exit 0 ;;
+    *:Rhapsody:*:*)
+       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+       exit 0 ;;
+    *:Darwin:*:*)
+       echo `uname -p`-apple-darwin${UNAME_RELEASE}
+       exit 0 ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+       if test "${UNAME_MACHINE}" = "x86pc"; then
+               UNAME_MACHINE=pc
+       fi
+       echo `uname -p`-${UNAME_MACHINE}-nto-qnx
+       exit 0 ;;
+    *:QNX:*:4*)
+       echo i386-pc-qnx
+       exit 0 ;;
+    NSR-W:NONSTOP_KERNEL:*:*)
+       echo nsr-tandem-nsk${UNAME_RELEASE}
+       exit 0 ;;
+    BS2000:POSIX*:*:*)
+       echo bs2000-siemens-sysv
+       exit 0 ;;
+    DS/*:UNIX_System_V:*:*)
+       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+       exit 0 ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
 
-cat >dummy.c <<EOF
+cat >$dummy.c <<EOF
 #ifdef _SEQUENT_
 # include <sys/types.h>
 # include <sys/utsname.h>
@@ -871,7 +1131,10 @@ main ()
 #endif
   int version;
   version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
   exit (0);
 #endif
 
@@ -931,8 +1194,8 @@ main ()
 }
 EOF
 
-${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
-rm -f dummy.c dummy
+$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0
+rm -f $dummy.c $dummy
 
 # Apollos put the system type in the environment.
 
@@ -964,6 +1227,47 @@ then
     esac
 fi
 
-#echo '(Unable to guess system type)' 1>&2
+cat >&2 <<EOF
+$0: unable to guess system type
+
+The $version version of this script cannot recognize your system type.
+Please download the most up to date version of the config scripts:
+
+    ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess version = $version
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
 
 exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "version='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
index 9c47333ac99109af1dbc27619d697eb007add652..8fa14be27e16d4a8d8df2f1c4c0abc2ee1a71a47 100755 (executable)
@@ -1,6 +1,10 @@
 #! /bin/sh
 # Configuration validation subroutine script, version 1.1.
-#   Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+#   Free Software Foundation, Inc.
+
+version='2000-06-13'
+
 # 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.
@@ -25,6 +29,8 @@
 # configuration script generated by Autoconf, you may include it under
 # the same distribution terms that you use for the rest of that program.
 
+# Please send patches to <config-patches@gnu.org>.
+#
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
 # If it is invalid, we print an error message on stderr and exit with code 1.
 #      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
 # It is wrong to echo any other type of specification.
 
-if [ x$1 = x ]
-then
-       echo Configuration name missing. 1>&2
-       echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
-       echo "or     $0 ALIAS" 1>&2
-       echo where ALIAS is a recognized configuration type. 1>&2
-       exit 1
-fi
+me=`echo "$0" | sed -e 's,.*/,,'`
 
-# First pass through any local machine types.
-case $1 in
-       *local*)
-               echo $1
-               exit 0
-               ;;
-       *)
-       ;;
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help               print this help, then exit
+  -V, --version            print version number, then exit"
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case "$1" in
+    --version | --vers* | -V )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       exec >&2
+       echo "$me: invalid option $1"
+       echo "$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit 0;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
 esac
 
 # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
 # Here we must recognize all the valid KERNEL-OS combinations.
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  linux-gnu*)
+  nto-qnx* | linux-gnu*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
     ;;
@@ -94,15 +131,25 @@ case $os in
        -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
        -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
        -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple)
+       -apple | -axis)
                os=
                basic_machine=$1
                ;;
+       -sim | -cisco | -oki | -wec | -winbond)
+               os=
+               basic_machine=$1
+               ;;
+       -scout)
+               ;;
+       -wrs)
+               os=-vxworks
+               basic_machine=$1
+               ;;
        -hiux*)
                os=-hiuxwe2
                ;;
        -sco5)
-               os=sco3.2v5
+               os=-sco3.2v5
                basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
                ;;
        -sco4)
@@ -121,6 +168,9 @@ case $os in
                os=-sco3.2v2
                basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
                ;;
+       -udk*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
        -isc)
                os=-isc2.2
                basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@@ -143,27 +193,41 @@ case $os in
        -psos*)
                os=-psos
                ;;
+       -mint | -mint[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
 esac
 
 # Decode aliases for certain CPU-COMPANY combinations.
 case $basic_machine in
        # Recognize the basic CPU types without company name.
        # Some are omitted here because they have special meanings below.
-       tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
+       tahoe | i860 | ia64 | 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)
+               | x86 | ppcbe | mipsbe | mipsle | shbe | shle | armbe | armle \
+               | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
+               | hppa64 \
+               | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
+               | alphaev6[78] \
+               | we32k | ns16k | clipper | i370 | sh | sh[34] \
+               | powerpc | powerpcle \
+               | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \
+               | mips64orion | mips64orionel | mipstx39 | mipstx39el \
+               | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
+               | mips64vr5000 | miprs64vr5000el | mcore \
+               | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \
+               | thumb | d10v | fr30 | avr)
                basic_machine=$basic_machine-unknown
                ;;
+       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl)
+               ;;
+
        # 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[34567]86)
+       i[234567]86)
          basic_machine=$basic_machine-pc
          ;;
        # Object if more than one company name word.
@@ -172,28 +236,49 @@ case $basic_machine in
                exit 1
                ;;
        # Recognize the basic CPU types with company name.
-       vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
+       # FIXME: clean up the formatting here.
+       vax-* | tahoe-* | i[234567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
              | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
              | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
-             | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
+             | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
              | xmp-* | ymp-* \
+             | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* | armbe-* | armle-* \
              | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
-             | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
-             | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
+             | hppa2.0n-* | hppa64-* \
+             | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \
+             | alphaev6[78]-* \
+             | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
+             | clipper-* | orion-* \
              | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
-             | sparc64-* | mips64-* | mipsel-* \
-             | mips64el-* | mips64orion-* | mips64orionel-*  \
-             | mipstx39-* | mipstx39el-* \
-             | f301-*)
+             | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \
+             | mips64el-* | mips64orion-* | mips64orionel-* \
+             | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
+             | mipstx39-* | mipstx39el-* | mcore-* \
+             | f301-* | armv*-* | s390-* | sv1-* | t3e-* \
+             | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
+             | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* \
+             | bs2000-*)
                ;;
        # Recognize the various machine names and aliases which stand
        # for a CPU type and a company and sometimes even an OS.
+       386bsd)
+               basic_machine=i386-unknown
+               os=-bsd
+               ;;
        3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
                basic_machine=m68000-att
                ;;
        3b*)
                basic_machine=we32k-att
                ;;
+       a29khif)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       adobe68k)
+               basic_machine=m68010-adobe
+               os=-scout
+               ;;
        alliant | fx80)
                basic_machine=fx80-alliant
                ;;
@@ -223,6 +308,10 @@ case $basic_machine in
                basic_machine=m68k-apollo
                os=-sysv
                ;;
+       apollo68bsd)
+               basic_machine=m68k-apollo
+               os=-bsd
+               ;;
        aux)
                basic_machine=m68k-apple
                os=-aux
@@ -266,6 +355,9 @@ case $basic_machine in
        crds | unos)
                basic_machine=m68k-crds
                ;;
+       cris | cris-* | etrax*)
+               basic_machine=cris-axis
+               ;;
        da30 | da30-*)
                basic_machine=m68k-da30
                ;;
@@ -299,6 +391,10 @@ case $basic_machine in
        encore | umax | mmax)
                basic_machine=ns32k-encore
                ;;
+       es1800 | OSE68k | ose68k | ose | OSE)
+               basic_machine=m68k-ericsson
+               os=-ose
+               ;;
        fx2800)
                basic_machine=i860-alliant
                ;;
@@ -317,6 +413,14 @@ case $basic_machine in
                basic_machine=h8300-hitachi
                os=-hms
                ;;
+       h8300xray)
+               basic_machine=h8300-hitachi
+               os=-xray
+               ;;
+       h8500hms)
+               basic_machine=h8500-hitachi
+               os=-hms
+               ;;
        harris)
                basic_machine=m88k-harris
                os=-sysv3
@@ -332,13 +436,30 @@ case $basic_machine in
                basic_machine=m68k-hp
                os=-hpux
                ;;
+       hp3k9[0-9][0-9] | hp9[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
        hp9k2[0-9][0-9] | hp9k31[0-9])
                basic_machine=m68000-hp
                ;;
        hp9k3[2-9][0-9])
                basic_machine=m68k-hp
                ;;
-       hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
+       hp9k6[0-9][0-9] | hp6[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k7[0-79][0-9] | hp7[0-79][0-9])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k78[0-9] | hp78[0-9])
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][13679] | hp8[0-9][13679])
                basic_machine=hppa1.1-hp
                ;;
        hp9k8[0-9][0-9] | hp8[0-9][0-9])
@@ -347,16 +468,16 @@ case $basic_machine in
        hppa-next)
                os=-nextstep3
                ;;
+       hppaosf)
+               basic_machine=hppa1.1-hp
+               os=-osf
+               ;;
+       hppro)
+               basic_machine=hppa1.1-hp
+               os=-proelf
+               ;;
        i370-ibm* | ibm*)
                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[34567]86v32)
@@ -375,6 +496,22 @@ case $basic_machine in
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-solaris2
                ;;
+       i386mach)
+               basic_machine=i386-mach
+               os=-mach
+               ;;
+       i386-vsta | vsta)
+               basic_machine=i386-unknown
+               os=-vsta
+               ;;
+       i386-go32 | go32)
+               basic_machine=i386-unknown
+               os=-go32
+               ;;
+       i386-mingw32 | mingw32)
+               basic_machine=i386-unknown
+               os=-mingw32
+               ;;
        iris | iris4d)
                basic_machine=mips-sgi
                case $os in
@@ -403,6 +540,10 @@ case $basic_machine in
        miniframe)
                basic_machine=m68000-convergent
                ;;
+       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
        mipsel*-linux*)
                basic_machine=mipsel-unknown
                os=-linux-gnu
@@ -417,10 +558,34 @@ case $basic_machine in
        mips3*)
                basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
                ;;
+       mmix*)
+               basic_machine=mmix-knuth
+               os=-mmixware
+               ;;
+       monitor)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       msdos)
+               basic_machine=i386-unknown
+               os=-msdos
+               ;;
+       mvs)
+               basic_machine=i370-ibm
+               os=-mvs
+               ;;
        ncr3000)
                basic_machine=i486-ncr
                os=-sysv4
                ;;
+       netbsd386)
+               basic_machine=i386-unknown
+               os=-netbsd
+               ;;
+       netwinder)
+               basic_machine=armv4l-rebel
+               os=-linux
+               ;;
        news | news700 | news800 | news900)
                basic_machine=m68k-sony
                os=-newsos
@@ -433,6 +598,10 @@ case $basic_machine in
                basic_machine=mips-sony
                os=-newsos
                ;;
+       necv70)
+               basic_machine=v70-nec
+               os=-sysv
+               ;;
        next | m*-next )
                basic_machine=m68k-next
                case $os in
@@ -458,9 +627,28 @@ case $basic_machine in
                basic_machine=i960-intel
                os=-nindy
                ;;
+       mon960)
+               basic_machine=i960-intel
+               os=-mon960
+               ;;
        np1)
                basic_machine=np1-gould
                ;;
+       nsr-tandem)
+               basic_machine=nsr-tandem
+               ;;
+       op50n-* | op60c-*)
+               basic_machine=hppa1.1-oki
+               os=-proelf
+               ;;
+       OSE68000 | ose68000)
+               basic_machine=m68000-ericsson
+               os=-ose
+               ;;
+       os68k)
+               basic_machine=m68k-none
+               os=-os68k
+               ;;
        pa-hitachi)
                basic_machine=hppa1.1-hitachi
                os=-hiuxwe2
@@ -478,19 +666,19 @@ case $basic_machine in
         pc532 | pc532-*)
                basic_machine=ns32k-pc532
                ;;
-       pentium | p5 | k5 | nexen)
+       pentium | p5 | k5 | k6 | nexen)
                basic_machine=i586-pc
                ;;
-       pentiumpro | p6 | k6 | 6x86)
+       pentiumpro | p6 | 6x86 | athlon)
                basic_machine=i686-pc
                ;;
        pentiumii | pentium2)
                basic_machine=i786-pc
                ;;
-       pentium-* | p5-* | k5-* | nexen-*)
+       pentium-* | p5-* | k5-* | k6-* | nexen-*)
                basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
-       pentiumpro-* | p6-* | k6-* | 6x86-*)
+       pentiumpro-* | p6-* | 6x86-* | athlon-*)
                basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
        pentiumii-* | pentium2-*)
@@ -514,12 +702,20 @@ case $basic_machine in
        ps2)
                basic_machine=i386-ibm
                ;;
+       rom68k)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
        rm[46]00)
                basic_machine=mips-siemens
                ;;
        rtpc | rtpc-*)
                basic_machine=romp-ibm
                ;;
+       sa29200)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
        sequent)
                basic_machine=i386-sequent
                ;;
@@ -527,6 +723,10 @@ case $basic_machine in
                basic_machine=sh-hitachi
                os=-hms
                ;;
+       sparclite-wrs)
+               basic_machine=sparclite-wrs
+               os=-vxworks
+               ;;
        sps7)
                basic_machine=m68k-bull
                os=-sysv2
@@ -534,6 +734,13 @@ case $basic_machine in
        spur)
                basic_machine=spur-unknown
                ;;
+       st2000)
+               basic_machine=m68k-tandem
+               ;;
+       stratus)
+               basic_machine=i860-stratus
+               os=-sysv4
+               ;;
        sun2)
                basic_machine=m68000-sun
                ;;
@@ -574,10 +781,18 @@ case $basic_machine in
        sun386 | sun386i | roadrunner)
                basic_machine=i386-sun
                ;;
+       sv1)
+               basic_machine=sv1-cray
+               os=-unicos
+               ;;
        symmetry)
                basic_machine=i386-sequent
                os=-dynix
                ;;
+       t3e)
+               basic_machine=t3e-cray
+               os=-unicos
+               ;;
        tx39)
                basic_machine=mipstx39-unknown
                ;;
@@ -595,6 +810,10 @@ case $basic_machine in
                basic_machine=a29k-nyu
                os=-sym1
                ;;
+       v810 | necv810)
+               basic_machine=v810-nec
+               os=-none
+               ;;
        vaxv)
                basic_machine=vax-dec
                os=-sysv
@@ -618,6 +837,14 @@ case $basic_machine in
                basic_machine=a29k-wrs
                os=-vxworks
                ;;
+       w65*)
+               basic_machine=w65-wdc
+               os=-none
+               ;;
+       w89k-*)
+               basic_machine=hppa1.1-winbond
+               os=-proelf
+               ;;
        xmp)
                basic_machine=xmp-cray
                os=-unicos
@@ -625,6 +852,10 @@ case $basic_machine in
         xps | xps100)
                basic_machine=xps100-honeywell
                ;;
+       z8k-*-coff)
+               basic_machine=z8k-unknown
+               os=-sim
+               ;;
        none)
                basic_machine=none-none
                os=-none
@@ -632,6 +863,15 @@ 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.
+       w89k)
+               basic_machine=hppa1.1-winbond
+               ;;
+       op50n)
+               basic_machine=hppa1.1-oki
+               ;;
+       op60c)
+               basic_machine=hppa1.1-oki
+               ;;
        mips)
                if [ x$os = x-linux-gnu ]; then
                        basic_machine=mips-unknown
@@ -654,7 +894,10 @@ case $basic_machine in
        we32k)
                basic_machine=we32k-att
                ;;
-       sparc)
+       sh3 | sh4)
+               base_machine=sh-unknown
+               ;;
+       sparc | sparcv9)
                basic_machine=sparc-sun
                ;;
         cydra)
@@ -666,6 +909,16 @@ case $basic_machine in
        orion105)
                basic_machine=clipper-highlevel
                ;;
+       mac | mpw | mac-mpw)
+               basic_machine=m68k-apple
+               ;;
+       pmac | pmac-mpw)
+               basic_machine=powerpc-apple
+               ;;
+       c4x*)
+               basic_machine=c4x-none
+               os=-coff
+               ;;
        *)
                echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
                exit 1
@@ -716,16 +969,37 @@ case $os in
              | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
              | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
              | -aos* \
-             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* | -os390* \
+             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
              | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
              | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
-             | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
+             | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
              | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
              | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -mingw32* | -linux-gnu* | -uxpv* | -beos*)
+             | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
+             | -openstep* | -oskit*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
+       -qnx*)
+               case $basic_machine in
+                   x86-* | i[34567]86-*)
+                       ;;
+                   *)
+                       os=-nto$os
+                       ;;
+               esac
+               ;;
+       -nto*)
+               os=-nto-qnx
+               ;;
+       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+             | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+               ;;
+       -mac*)
+               os=`echo $os | sed -e 's|mac|macos|'`
+               ;;
        -linux*)
                os=`echo $os | sed -e 's|linux|linux-gnu|'`
                ;;
@@ -735,6 +1009,12 @@ case $os in
        -sunos6*)
                os=`echo $os | sed -e 's|sunos6|solaris3|'`
                ;;
+       -opened*)
+               os=-openedition
+               ;;
+       -wince*)
+               os=-wince
+               ;;
        -osfrose*)
                os=-osfrose
                ;;
@@ -750,12 +1030,18 @@ case $os in
        -acis*)
                os=-aos
                ;;
+       -386bsd)
+               os=-bsd
+               ;;
        -ctix* | -uts*)
                os=-sysv
                ;;
        -ns2 )
                os=-nextstep2
                ;;
+       -nsk)
+               os=-nsk
+               ;;
        # Preserve the version number of sinix5.
        -sinix5.*)
                os=`echo $os | sed -e 's|sinix|sysv|'`
@@ -781,9 +1067,18 @@ case $os in
        # This must come after -sysvr4.
        -sysv*)
                ;;
+       -ose*)
+               os=-ose
+               ;;
+       -es1800*)
+               os=-ose
+               ;;
        -xenix)
                os=-xenix
                ;;
+        -*mint | -*MiNT)
+               os=-mint
+               ;;
        -none)
                ;;
        *)
@@ -809,6 +1104,9 @@ case $basic_machine in
        *-acorn)
                os=-riscix1.2
                ;;
+       arm*-rebel)
+               os=-linux
+               ;;
        arm*-semi)
                os=-aout
                ;;
@@ -830,6 +1128,15 @@ case $basic_machine in
                # default.
                # os=-sunos4
                ;;
+       m68*-cisco)
+               os=-aout
+               ;;
+       mips*-cisco)
+               os=-elf
+               ;;
+       mips*-*)
+               os=-elf
+               ;;
        *-tti)  # must be before sparc entry or we get the wrong os.
                os=-sysv3
                ;;
@@ -839,12 +1146,18 @@ case $basic_machine in
        *-be)
                os=-beos
                ;;
-       s390-ibm)
-               os=-os390  #  /* S/390 -- gil -- 1451 */
-               ;;
        *-ibm)
                os=-aix
                ;;
+       *-wec)
+               os=-proelf
+               ;;
+       *-winbond)
+               os=-proelf
+               ;;
+       *-oki)
+               os=-proelf
+               ;;
        *-hp)
                os=-hpux
                ;;
@@ -908,6 +1221,18 @@ case $basic_machine in
        f301-fujitsu)
                os=-uxpv
                ;;
+       *-rom68k)
+               os=-coff
+               ;;
+       *-*bug)
+               os=-coff
+               ;;
+       *-apple)
+               os=-macos
+               ;;
+       *-atari*)
+               os=-mint
+               ;;
        *)
                os=-none
                ;;
@@ -929,9 +1254,15 @@ case $basic_machine in
                        -aix*)
                                vendor=ibm
                                ;;
+                       -beos*)
+                               vendor=be
+                               ;;
                        -hpux*)
                                vendor=hp
                                ;;
+                       -mpeix*)
+                               vendor=hp
+                               ;;
                        -hiux*)
                                vendor=hitachi
                                ;;
@@ -947,7 +1278,7 @@ case $basic_machine in
                        -genix*)
                                vendor=ns
                                ;;
-                       -mvs*)
+                       -mvs* | -opened*)
                                vendor=ibm
                                ;;
                        -ptx*)
@@ -959,9 +1290,26 @@ case $basic_machine in
                        -aux*)
                                vendor=apple
                                ;;
+                       -hms*)
+                               vendor=hitachi
+                               ;;
+                       -mpw* | -macos*)
+                               vendor=apple
+                               ;;
+                       -*mint | -*MiNT)
+                               vendor=atari
+                               ;;
                esac
                basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
                ;;
 esac
 
 echo $basic_machine$os
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "version='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
index db90758feac27b28594b69d6d65719bd0e5110d8..51180b9b4cefecd847a5d5dab6961c7d5517bdd6 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,7 @@
 #! /bin/sh
 
-# From configure.in Revision: 1.179 
+# From configure.in Revision: 1.195 
+
 
 
 # Guess values for system-dependent variables and create Makefiles.
@@ -197,11 +198,12 @@ 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
+  --with-manpage-symlinks specify manpage-symlinks
 Options to Specify the Libraries Built/Used:
   --with-shared           generate shared-libraries
-  --with-normal           generate normal-libraries (default)
 EOF
 cat <<EOF
+  --with-normal           generate normal-libraries (default)
   --with-debug            generate debug-libraries (default)
   --with-profile          generate profile-libraries
   --with-termlib          generate separate terminfo library
@@ -213,7 +215,6 @@ cat <<EOF
 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
@@ -223,27 +224,30 @@ cat <<EOF
   --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
+  --enable-broken_linker  compile with broken-linker support code
   --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
+Extensions:
+  --disable-ext-funcs     disable function-extensions
 EOF
 cat <<EOF
-  --enable-broken_linker  compile with broken-linker support code
+  --enable-const          compile with extra/non-standard const
+  --enable-hashmap        compile with hashmap scrolling-optimization code
+  --enable-no-padding     compile with \$NCURSES_NO_PADDING code
+  --enable-sigwinch       compile with SIGWINCH handler
+  --enable-tcap-names     compile with user-definable terminal capabilities
+Experimental Code:
+  --with-develop          enable all experimental options for testing
+  --enable-colorfgbg      compile with experimental \$COLORFGBG code
   --enable-hard-tabs      compile with experimental hard-tabs code
-  --enable-hashmap        compile with experimental hashmap 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
+  --disable-scroll-hints  compile without scroll-hints code
   --enable-widec          compile with experimental wide-char code
+EOF
+cat <<EOF
   --enable-xmc-glitch     compile with experimental xmc code
 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
@@ -251,8 +255,10 @@ cat <<EOF
   --disable-macros        test: use functions rather than macros
 Ada95 Binding Options:
   --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)
+  --with-ada-include=DIR  Ada includes are in DIR (default: PREFIX/lib/ada/adainclude)
+  --with-ada-objects=DIR  Ada objects are in DIR (default: PREFIX/lib/ada/adalib)
+EOF
+cat <<EOF
 EOF
     exit 0 ;;
 
@@ -636,7 +642,7 @@ 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:640: checking host system type" >&5
+echo "configure:646: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -727,7 +733,7 @@ cf_user_CFLAGS="$CFLAGS"
 ###    Default install-location
 
 echo $ac_n "checking for prefix""... $ac_c" 1>&6
-echo "configure:731: checking for prefix" >&5
+echo "configure:737: checking for prefix" >&5
 if test "x$prefix" = "xNONE" ; then
        case "$cf_cv_system_name" in
                # non-vendor systems don't have a conflict
@@ -742,7 +748,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:746: checking for default include-directory" >&5
+echo "configure:752: checking for default include-directory" >&5
 test -n "$verbose" && echo 1>&6
 for cf_symbol in \
        $includedir \
@@ -772,7 +778,7 @@ 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:776: checking for $ac_word" >&5
+echo "configure:782: 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
@@ -802,7 +808,7 @@ 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:806: checking for $ac_word" >&5
+echo "configure:812: 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
@@ -853,7 +859,7 @@ fi
       # 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
+echo "configure:863: 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
@@ -885,7 +891,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:889: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:895: 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.
@@ -896,12 +902,12 @@ cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 900 "configure"
+#line 906 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:911: \"$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
@@ -927,12 +933,12 @@ 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:931: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:937: 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:936: checking whether we are using GNU C" >&5
+echo "configure:942: 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
@@ -941,7 +947,7 @@ else
   yes;
 #endif
 EOF
-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
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:951: \"$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
@@ -960,7 +966,7 @@ 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
+echo "configure:970: 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
@@ -993,7 +999,7 @@ fi
 
 if test -n "$GCC" ; then
 echo $ac_n "checking version of gcc""... $ac_c" 1>&6
-echo "configure:997: checking version of gcc" >&5
+echo "configure:1003: checking version of gcc" >&5
 eval "$CC --version"
 fi
 if test $host != $build; then
@@ -1002,7 +1008,7 @@ 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
+echo "configure:1012: 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
@@ -1033,7 +1039,7 @@ done
 
 fi
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1037: checking how to run the C preprocessor" >&5
+echo "configure:1043: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1048,13 +1054,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1052 "configure"
+#line 1058 "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:1058: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1064: \"$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
   :
@@ -1065,13 +1071,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1069 "configure"
+#line 1075 "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; }
+{ (eval echo configure:1081: \"$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
   :
@@ -1082,13 +1088,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 1086 "configure"
+#line 1092 "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:1092: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1098: \"$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
   :
@@ -1114,13 +1120,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:1118: checking whether ${CC-cc} needs -traditional" >&5
+echo "configure:1124: 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 1124 "configure"
+#line 1130 "configure"
 #include "confdefs.h"
 #include <sgtty.h>
 Autoconf TIOCGETP
@@ -1138,7 +1144,7 @@ rm -f conftest*
 
   if test $ac_cv_prog_gcc_traditional = no; then
     cat > conftest.$ac_ext <<EOF
-#line 1142 "configure"
+#line 1148 "configure"
 #include "confdefs.h"
 #include <termio.h>
 Autoconf TCGETA
@@ -1160,7 +1166,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:1164: checking for POSIXized ISC" >&5
+echo "configure:1170: 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
@@ -1182,7 +1188,7 @@ fi
 
 
 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
+echo "configure:1192: 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
@@ -1200,13 +1206,13 @@ for cf_arg in "-DCC_HAS_PROTOS" \
        "" \
        -qlanglvl=ansi \
        -std1 \
-       "-Aa -D_HPUX_SOURCE +e" \
+       -Ae \
        "-Aa -D_HPUX_SOURCE" \
        -Xc
 do
        CFLAGS="$cf_save_CFLAGS $cf_arg"
        cat > conftest.$ac_ext <<EOF
-#line 1210 "configure"
+#line 1216 "configure"
 #include "confdefs.h"
 
 #ifndef CC_HAS_PROTOS
@@ -1222,7 +1228,7 @@ int main() {
        struct s2 {int (*f) (double a);};
 ; return 0; }
 EOF
-if { (eval echo configure:1226: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1232: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_ansi_cc="$cf_arg"; break
 else
@@ -1283,7 +1289,7 @@ freebsd*) #(vi
   # 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:1287: checking for $ac_word" >&5
+echo "configure:1293: 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
@@ -1320,7 +1326,7 @@ esac
 
 
 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
+echo "configure:1330: 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
@@ -1335,12 +1341,12 @@ if test "X$cf_with_cxx" = Xno ; then
        CXX=""
        GXX=""
 else
-       for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl
+               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:1344: checking for $ac_word" >&5
+echo "configure:1350: 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
@@ -1372,7 +1378,7 @@ test -n "$CXX" || CXX="gcc"
 
 
 echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1376: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:1382: 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.
@@ -1383,12 +1389,12 @@ cross_compiling=$ac_cv_prog_cxx_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 1387 "configure"
+#line 1393 "configure"
 #include "confdefs.h"
 
 int main(){return(0);}
 EOF
-if { (eval echo configure:1392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1398: \"$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
@@ -1411,15 +1417,15 @@ cross_compiling=$ac_cv_prog_cc_cross
 
 echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6
 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; }
+  echo "$ac_t""You don't have any C++ compiler, too bad" 1>&6;                 cf_with_cxx=no; CXX=""; GXX="";
 fi
 echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1418: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1424: 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:1423: checking whether we are using GNU C++" >&5
+echo "configure:1429: 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
@@ -1428,7 +1434,7 @@ else
   yes;
 #endif
 EOF
-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
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1438: \"$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
@@ -1447,7 +1453,7 @@ 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
+echo "configure:1457: 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
@@ -1478,11 +1484,11 @@ else
   fi
 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
+echo "configure:1492: 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
@@ -1495,7 +1501,7 @@ 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
+echo "configure:1505: 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
@@ -1508,7 +1514,7 @@ 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:1512: checking if you want to build programs such as tic" >&5
+echo "configure:1518: 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
@@ -1531,7 +1537,7 @@ 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:1535: checking for $ac_word" >&5
+echo "configure:1541: 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
@@ -1561,7 +1567,7 @@ test -n "$AWK" && break
 done
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:1565: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:1571: 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
@@ -1599,7 +1605,7 @@ fi
 # 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:1603: checking for a BSD compatible install" >&5
+echo "configure:1609: 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
@@ -1662,7 +1668,7 @@ case $INSTALL in
 esac
 
 echo $ac_n "checking for long file names""... $ac_c" 1>&6
-echo "configure:1666: checking for long file names" >&5
+echo "configure:1672: 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
@@ -1706,7 +1712,7 @@ EOF
 fi
 
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1710: checking whether ln -s works" >&5
+echo "configure:1716: 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
@@ -1729,7 +1735,7 @@ 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:1733: checking for $ac_word" >&5
+echo "configure:1739: 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
@@ -1761,7 +1767,7 @@ 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:1765: checking for $ac_word" >&5
+echo "configure:1771: 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
@@ -1795,7 +1801,7 @@ 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:1799: checking for $ac_word" >&5
+echo "configure:1805: 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
@@ -1831,7 +1837,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:1835: checking for loader (symbol LD)" >&5
+echo "configure:1841: checking for loader (symbol LD)" >&5
 test -z "$LD" && LD=ld
 echo "$ac_t""$LD" 1>&6
 
@@ -1845,7 +1851,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:1849: checking for archiver (symbol AR)" >&5
+echo "configure:1855: checking for archiver (symbol AR)" >&5
 test -z "$AR" && AR=ar
 echo "$ac_t""$AR" 1>&6
 
@@ -1859,7 +1865,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:1863: checking for archiver options (symbol AR_OPTS)" >&5
+echo "configure:1869: checking for archiver options (symbol AR_OPTS)" >&5
 test -z "$AR_OPTS" && AR_OPTS=rv
 echo "$ac_t""$AR_OPTS" 1>&6
 
@@ -1871,7 +1877,7 @@ AR_OPTS=${cf_cv_subst_AR_OPTS}
 
 
 echo $ac_n "checking for makeflags variable""... $ac_c" 1>&6
-echo "configure:1875: checking for makeflags variable" >&5
+echo "configure:1881: checking for makeflags variable" >&5
 if eval "test \"`echo '$''{'cf_cv_makeflags'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1907,7 +1913,7 @@ echo "$ac_t""$cf_cv_makeflags" 1>&6
 
 
 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
+echo "configure:1917: 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
@@ -1927,7 +1933,7 @@ 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
+echo "configure:1937: checking format of man-pages" >&5
 
 
 # Check whether --with-manpage-format or --without-manpage-format was given.
@@ -1979,7 +1985,7 @@ 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
+echo "configure:1989: checking for manpage renaming" >&5
 
 
 # Check whether --with-manpage-renames or --without-manpage-renames was given.
@@ -2021,6 +2027,22 @@ fi
 echo "$ac_t""$cf_manpage_renames" 1>&6
 
 
+echo $ac_n "checking for manpage symlinks""... $ac_c" 1>&6
+echo "configure:2032: checking for manpage symlinks" >&5
+
+
+# Check whether --with-manpage-symlinks or --without-manpage-symlinks was given.
+if test "${with_manpage_symlinks+set}" = set; then
+  withval="$with_manpage_symlinks"
+  cf_manpage_symlinks=$withval
+else
+  cf_manpage_symlinks=yes
+fi
+
+
+echo "$ac_t""$cf_manpage_symlinks" 1>&6
+
+
   if test "$prefix" = "NONE" ; then
      cf_prefix="$ac_default_prefix"
   else
@@ -2047,6 +2069,7 @@ datadir="$datadir"
 MKDIRS="`cd $srcdir && pwd`/mkinstalldirs"
 INSTALL="$INSTALL"
 INSTALL_DATA="$INSTALL_DATA"
+
 TMP=\${TMPDIR-/tmp}/man\$\$
 trap "rm -f \$TMP" 0 1 2 5 15
 
@@ -2056,6 +2079,9 @@ shift
 mandir=\$1
 shift
 
+srcdir=\$1
+shift
+
 for i in \$* ; do
 case \$i in #(vi
 *.orig|*.rej) ;; #(vi
@@ -2066,8 +2092,14 @@ case \$i in #(vi
                \$MKDIRS $cf_subdir\$section
        fi
        fi
+       aliases=
        source=\`basename \$i\`
 CF_EOF
+if test "$cf_manpage_symlinks" = yes ; then
+cat >>man/edit_man.sh <<CF_EOF
+       aliases=\`sed -f \$srcdir/manlinks.sed \$source | sort -u\`
+CF_EOF
+fi
 if test "$cf_manpage_renames" = no ; then
 cat >>man/edit_man.sh <<CF_EOF
        target=$cf_subdir\${section}/\$source
@@ -2122,14 +2154,47 @@ CF_EOF
 esac
 cat >>man/edit_man.sh <<CF_EOF
        echo \$verb \$target
+       suffix=\`basename \$target | sed -e 's/^[^.]*//'\`
        if test \$verb = installing ; then
                \$INSTALL_DATA \$TMP \$target
+               test -n "\$aliases" && (
+                       cd $cf_subdir\${section} && (
+                               target=\`basename \$target\`
+                               for cf_alias in \$aliases
+                               do
+                                       if test -f \$cf_alias\${suffix} ; then
+                                               if ( cmp -s \$target \$cf_alias\${suffix} )
+                                               then
+                                                       :
+                                               else
+                                                       echo .. \$verb alias \$cf_alias\${suffix}
+                                                       rm -f \$cf_alias\${suffix}
+                                                       $LN_S \$target \$cf_alias\${suffix}
+                                               fi
+                                       else
+                                               echo .. \$verb alias \$cf_alias\${suffix}
+                                               rm -f \$cf_alias\${suffix}
+                                               $LN_S \$target \$cf_alias\${suffix}
+                                       fi
+                               done
+                       )
+               )
        else
                rm -f \$target
+               test -n "\$aliases" && (
+                       cd $cf_subdir\${section} && (
+                               for cf_alias in \$aliases
+                               do
+                                       echo .. \$verb alias \$cf_alias\${suffix}
+                                       rm -f \$cf_alias\${suffix}
+                               done
+                       )
+               )
        fi
        ;;
 esac
 done
+exit 0
 CF_EOF
 chmod 755 man/edit_man.sh
 
@@ -2144,7 +2209,7 @@ chmod 755 man/edit_man.sh
 cf_list_models=""
 
 echo $ac_n "checking if you want to build shared libraries""... $ac_c" 1>&6
-echo "configure:2148: checking if you want to build shared libraries" >&5
+echo "configure:2213: 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
@@ -2158,7 +2223,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:2162: checking if you want to build static libraries" >&5
+echo "configure:2227: 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
@@ -2172,7 +2237,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:2176: checking if you want to build debug libraries" >&5
+echo "configure:2241: 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
@@ -2186,7 +2251,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:2190: checking if you want to build profiling libraries" >&5
+echo "configure:2255: 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
@@ -2199,8 +2264,49 @@ fi
 echo "$ac_t""$with_profile" 1>&6
 test "$with_profile" = "yes" && cf_list_models="$cf_list_models profile"
 
+###############################################################################
+
+echo $ac_n "checking for specified models""... $ac_c" 1>&6
+echo "configure:2271: checking for specified models" >&5
+test -z "$cf_list_models" && cf_list_models=normal
+echo "$ac_t""$cf_list_models" 1>&6
+
+### Use the first model as the default, and save its suffix for use in building
+### up test-applications.
+echo $ac_n "checking for default model""... $ac_c" 1>&6
+echo "configure:2278: checking for default model" >&5
+DFT_LWR_MODEL=`echo $cf_list_models | $AWK '{print $1}'`
+echo "$ac_t""$DFT_LWR_MODEL" 1>&6
+
+
+DFT_UPR_MODEL=`echo $DFT_LWR_MODEL | tr '[a-z]' '[A-Z]'`
+
+
+TINFO_NAME=tinfo
+
+
+LIB_NAME=ncurses
+
+
+LIB_DIR=../lib
+
+       case $cf_cv_system_name in
+       os2)    LIB_PREFIX=''     ;;
+       *)      LIB_PREFIX='lib'  ;;
+       esac
+cf_prefix=$LIB_PREFIX
+       
+
+LIB_PREFIX=$cf_prefix
+
+
+LIB_SUFFIX=
+
+
+###############################################################################
+
 echo $ac_n "checking if you want to build a separate terminfo library""... $ac_c" 1>&6
-echo "configure:2204: checking if you want to build a separate terminfo library" >&5
+echo "configure:2310: 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
@@ -2214,7 +2320,7 @@ 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:2218: checking if you want to link with dbmalloc for testing" >&5
+echo "configure:2324: 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
@@ -2227,7 +2333,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:2231: checking for debug_malloc in -ldbmalloc" >&5
+echo "configure:2337: 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
@@ -2235,7 +2341,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldbmalloc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2239 "configure"
+#line 2345 "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
@@ -2246,7 +2352,7 @@ int main() {
 debug_malloc()
 ; return 0; }
 EOF
-if { (eval echo configure:2250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2356: \"$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
@@ -2276,7 +2382,7 @@ fi
 fi
 
 echo $ac_n "checking if you want to link with dmalloc for testing""... $ac_c" 1>&6
-echo "configure:2280: checking if you want to link with dmalloc for testing" >&5
+echo "configure:2386: 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
@@ -2289,7 +2395,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:2293: checking for dmalloc_debug in -ldmalloc" >&5
+echo "configure:2399: 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
@@ -2297,7 +2403,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldmalloc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2301 "configure"
+#line 2407 "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
@@ -2308,7 +2414,7 @@ int main() {
 dmalloc_debug()
 ; return 0; }
 EOF
-if { (eval echo configure:2312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2418: \"$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
@@ -2339,7 +2445,7 @@ fi
 
 SHLIB_LIST=""
 echo $ac_n "checking if you want to link with the gpm mouse library""... $ac_c" 1>&6
-echo "configure:2343: checking if you want to link with the gpm mouse library" >&5
+echo "configure:2449: 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
@@ -2352,7 +2458,7 @@ 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:2356: checking for Gpm_Open in -lgpm" >&5
+echo "configure:2462: 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
@@ -2360,7 +2466,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgpm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2364 "configure"
+#line 2470 "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
@@ -2371,7 +2477,7 @@ int main() {
 Gpm_Open()
 ; return 0; }
 EOF
-if { (eval echo configure:2375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2481: \"$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
@@ -2397,17 +2503,17 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2401: checking for $ac_hdr" >&5
+echo "configure:2507: 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 2406 "configure"
+#line 2512 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2411: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2517: \"$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*
@@ -2441,77 +2547,6 @@ 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:2453: checking for specified models" >&5
-test -z "$cf_list_models" && cf_list_models=normal
-echo "$ac_t""$cf_list_models" 1>&6
-
-### Use the first model as the default, and save its suffix for use in building
-### up test-applications.
-DFT_LWR_MODEL=`echo $cf_list_models | $AWK '{print $1}'`
-
-DFT_UPR_MODEL=`echo $DFT_LWR_MODEL | tr '[a-z]' '[A-Z]'`
-
-       
-       case $DFT_LWR_MODEL in
-       normal)  DFT_DEP_SUFFIX='.a'   ;;
-       debug)   DFT_DEP_SUFFIX='_g.a' ;;
-       profile) DFT_DEP_SUFFIX='_p.a' ;;
-       shared)
-               case $cf_cv_system_name in
-               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
-       esac
-
-       case $DFT_LWR_MODEL in
-       normal)  DFT_ARG_SUFFIX=''   ;;
-       debug)   DFT_ARG_SUFFIX='_g' ;;
-       profile) DFT_ARG_SUFFIX='_p' ;;
-       shared)  DFT_ARG_SUFFIX=''   ;;
-       esac
-
-       case $DFT_LWR_MODEL in
-       normal)  DFT_OBJ_SUBDIR='objects' ;;
-       debug)   DFT_OBJ_SUBDIR='obj_g' ;;
-       profile) DFT_OBJ_SUBDIR='obj_p' ;;
-       shared)  DFT_OBJ_SUBDIR='obj_s' ;;
-       esac
-
-TINFO_NAME=tinfo
-
-
-LIB_NAME=ncurses
-
-
-LIB_DIR=../lib
-
-       case $cf_cv_system_name in
-       os2)    cf_prefix=''     ;;
-       *)      cf_prefix='lib'  ;;
-       esac
-       LIB_PREFIX=$cf_prefix
-       
-
-LIB_PREFIX=$LIB_DIR/$cf_prefix
-
-
 
 if test X"$CC_G_OPT" = X"" ; then
        CC_G_OPT='-g'
@@ -2525,15 +2560,18 @@ if test X"$CXX_G_OPT" = X"" ; then
 fi
 
 
+echo $ac_n "checking for default loader flags""... $ac_c" 1>&6
+echo "configure:2565: checking for default loader flags" >&5
 case $DFT_LWR_MODEL in
 normal)  LD_MODEL=''   ;;
 debug)   LD_MODEL=$CC_G_OPT ;;
 profile) LD_MODEL='-pg';;
 shared)  LD_MODEL=''   ;;
 esac
+echo "$ac_t""$LD_MODEL" 1>&6
 
 echo $ac_n "checking if rpath option should be used""... $ac_c" 1>&6
-echo "configure:2537: checking if rpath option should be used" >&5
+echo "configure:2575: checking if rpath option should be used" >&5
 
 # Check whether --enable-rpath or --disable-rpath was given.
 if test "${enable_rpath+set}" = set; then
@@ -2555,7 +2593,7 @@ echo "$ac_t""$cf_cv_ld_rpath" 1>&6
        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
+echo "configure:2597: 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
@@ -2581,11 +2619,44 @@ fi
 
        cf_cv_rm_so_locs=no
 
+       # Some less-capable ports of gcc support only -fpic
+       CC_SHARED_OPTS=
+       if test -n "$GCC"
+       then
+               echo $ac_n "checking which $CC option to use""... $ac_c" 1>&6
+echo "configure:2628: checking which $CC option to use" >&5
+               cf_save_CFLAGS="$CFLAGS"
+               for CC_SHARED_OPTS in -fPIC -fpic ''
+               do
+                       CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
+                       cat > conftest.$ac_ext <<EOF
+#line 2634 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int main() {
+int x = 1
+; return 0; }
+EOF
+if { (eval echo configure:2641: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  break
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+               done
+               echo "$ac_t""$CC_SHARED_OPTS" 1>&6
+               CFLAGS="$cf_save_CFLAGS"
+       fi
+
        case $cf_cv_system_name in
+       beos*)
+               MK_SHARED_LIB='$(CC) -o $@ -Xlinker -soname=`basename $@` -nostart -e 0'
+               ;;
        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'
@@ -2600,7 +2671,6 @@ fi
        hpux*)
                # (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'
@@ -2613,9 +2683,7 @@ fi
                ;;
        irix*)
                # tested with IRIX 5.2 and 'cc'.
-               if test -n "$GCC"; then
-                       CC_SHARED_OPTS='-fPIC'
-               else
+               if test -z "$GCC"; then
                        CC_SHARED_OPTS='-KPIC'
                fi
                MK_SHARED_LIB='$(LD) -shared -rdata_shared -soname `basename $@` -o $@'
@@ -2623,37 +2691,36 @@ fi
                ;;
        linux*|gnu*)
                # tested with Linux 2.0.29 and gcc 2.7.2 (ELF)
-               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
                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
+               MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $@ .$(REL_VERSION)`.$(ABI_VERSION),-stats,-lc -o $@'
                ;;
        openbsd2*)
-               CC_SHARED_OPTS='-fpic -DPIC'
+               CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
                MK_SHARED_LIB='$(LD) -Bshareable -soname,`basename $@.$(ABI_VERSION)` -o $@'
                ;;
        openbsd*|freebsd*)
-               CC_SHARED_OPTS='-fpic -DPIC'
+               CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
                MK_SHARED_LIB='$(LD) -Bshareable -o $@'
                test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
                ;;
        netbsd*)
-               CC_SHARED_OPTS='-fpic -DPIC'
+               CC_SHARED_OPTS="$CC_SHARED_OPTS -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
+                       MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $@ .$(REL_VERSION)`.$(ABI_VERSION) -o $@'
+                       if test $cf_cv_shlib_version = auto; then
+                       if test ! -f /usr/libexec/ld.elf_so; then
+                               cf_cv_shlib_version=rel
+                       fi
+                       fi
                else
                        MK_SHARED_LIB='$(LD) -Bshareable -o $@'
                fi
@@ -2662,7 +2729,6 @@ fi
                # 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) -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
@@ -2679,12 +2745,10 @@ fi
                ;;
        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
+               if test $ac_cv_prog_gcc != yes; then
                        CC_SHARED_OPTS='-belf -KPIC'
                fi
-               MK_SHARED_LIB='$(LD) -dy -G -h `basename $@.$(ABI_VERSION)` -o $@'
+               MK_SHARED_LIB='$(LD) -dy -G -h `basename $@ .$(REL_VERSION)`.$(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
@@ -2695,9 +2759,7 @@ fi
                ;;
        sunos4*)
                # tested with SunOS 4.1.1 and gcc 2.7.0
-               if test $ac_cv_prog_gcc = yes; then
-                       CC_SHARED_OPTS='-fpic'
-               else
+               if test $ac_cv_prog_gcc != yes; then
                        CC_SHARED_OPTS='-KPIC'
                fi
                MK_SHARED_LIB='$(LD) -assert pure-text -o $@'
@@ -2705,21 +2767,21 @@ fi
                ;;
        solaris2*)
                # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
-               if test $ac_cv_prog_gcc = yes; then
-                       CC_SHARED_OPTS='-fpic'
-               else
+               if test $ac_cv_prog_gcc != yes; then
                        CC_SHARED_OPTS='-KPIC'
                fi
-               MK_SHARED_LIB='$(LD) -dy -G -h `basename $@.$(ABI_VERSION)` -o $@'
+               MK_SHARED_LIB='$(LD) -dy -G -h `basename $@ .$(REL_VERSION)`.$(ABI_VERSION) -o $@'
                if test $cf_cv_ld_rpath = yes ; then
                        cf_ld_rpath_opt="-R"
                        EXTRA_LDFLAGS="-R ../lib:\$(libdir) $EXTRA_LDFLAGS"
                fi
                test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
                ;;
-       unix_sv*)
-               # tested with UnixWare 1.1.2
-               CC_SHARED_OPTS='-KPIC'
+       sysv5uw7*|unix_sv*)
+               # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
+               if test $ac_cv_prog_gcc != yes; then
+                       CC_SHARED_OPTS='-KPIC'
+               fi
                MK_SHARED_LIB='$(LD) -d y -G -o $@'
                ;;
        *)
@@ -2733,15 +2795,7 @@ fi
        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
+                       test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
                        ;;
                *)
                        echo "configure: warning: ignored --with-shlib-version" 1>&2
@@ -2752,18 +2806,18 @@ fi
 
        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:2756: checking if we need a space after rpath option" >&5
+echo "configure:2810: 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 2760 "configure"
+#line 2814 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_rpath_space=no
 else
@@ -2802,27 +2856,20 @@ 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:2806: checking if you wish to install ncurses overwriting curses" >&5
+echo "configure:2860: 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
   enableval="$enable_overwrite"
   with_overwrite=$enableval
-        test "$with_overwrite" = no && \
-        test "x$includedir" = 'x${prefix}/include' && \
-               includedir='$(prefix)/include/ncurses'
-       
 else
   with_overwrite=yes
 fi
 
 echo "$ac_t""$with_overwrite" 1>&6
-echo $ac_n "checking where we will install curses.h""... $ac_c" 1>&6
-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:2826: checking if external terminfo-database is used" >&5
+echo "configure:2873: checking if external terminfo-database is used" >&5
 
 # Check whether --enable-database or --disable-database was given.
 if test "${enable_database+set}" = set; then
@@ -2838,25 +2885,8 @@ test $with_database != no && cat >> confdefs.h <<\EOF
 EOF
 
 
-echo $ac_n "checking if you want to build with function extensions""... $ac_c" 1>&6
-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
-  enableval="$enable_ext_funcs"
-  with_ext_funcs=$enableval
-else
-  with_ext_funcs=yes
-fi
-
-echo "$ac_t""$with_ext_funcs" 1>&6
-test "$with_ext_funcs" = yes && cat >> confdefs.h <<\EOF
-#define NCURSES_EXT_FUNCS 1
-EOF
-
-
 echo $ac_n "checking for list of fallback descriptions""... $ac_c" 1>&6
-echo "configure:2860: checking for list of fallback descriptions" >&5
+echo "configure:2890: checking for list of fallback descriptions" >&5
 
 # Check whether --with-fallbacks or --without-fallbacks was given.
 if test "${with_fallbacks+set}" = set; then
@@ -2871,7 +2901,7 @@ 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
+echo "configure:2905: checking for list of terminfo directories" >&5
 
 
 # Check whether --with-terminfo-dirs or --without-terminfo-dirs was given.
@@ -2890,6 +2920,8 @@ do
 case ".$cf_src_path" in #(vi
 ./*) #(vi
   ;;
+.a-zA-Z:\\/*) #(vi OS/2 EMX
+  ;;
 .\${*prefix}*) #(vi
   eval cf_src_path="$cf_src_path"
   case ".$cf_src_path" in #(vi
@@ -2928,7 +2960,7 @@ fi
 ###    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:2932: checking if big-core option selected" >&5
+echo "configure:2964: 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
@@ -2939,14 +2971,14 @@ else
   with_big_core=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 2943 "configure"
+#line 2975 "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
+if { (eval echo configure:2982: \"$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
@@ -2968,7 +3000,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:2972: checking if you want termcap-fallback support" >&5
+echo "configure:3004: checking if you want termcap-fallback support" >&5
 
 # Check whether --enable-termcap or --disable-termcap was given.
 if test "${enable_termcap+set}" = set; then
@@ -2989,7 +3021,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:2993: checking if fast termcap-loader is needed" >&5
+echo "configure:3025: checking if fast termcap-loader is needed" >&5
 
 # Check whether --enable-getcap or --disable-getcap was given.
 if test "${enable_getcap+set}" = set; then
@@ -3006,7 +3038,7 @@ EOF
 
 
 echo $ac_n "checking if translated termcaps will be cached in ~/.terminfo""... $ac_c" 1>&6
-echo "configure:3010: checking if translated termcaps will be cached in ~/.terminfo" >&5
+echo "configure:3042: 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
@@ -3032,12 +3064,12 @@ for ac_func in \
        unlink 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3036: checking for $ac_func" >&5
+echo "configure:3068: 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"
+#line 3073 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3060,7 +3092,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3064: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3096: \"$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
@@ -3091,12 +3123,12 @@ if test "$ac_cv_prog_cc_cross" = yes ; then
                symlink 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3095: checking for $ac_func" >&5
+echo "configure:3127: 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 3100 "configure"
+#line 3132 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3119,7 +3151,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3155: \"$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
@@ -3145,7 +3177,7 @@ 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
+echo "configure:3181: 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
@@ -3157,7 +3189,7 @@ else
                        eval 'ac_cv_func_'$cf_func'=error'
 else
   cat > conftest.$ac_ext <<EOF
-#line 3161 "configure"
+#line 3193 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -3186,7 +3218,7 @@ int main()
 }
                        
 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
+if { (eval echo configure:3222: \"$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"
@@ -3222,7 +3254,7 @@ 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:3226: checking if tic should use symbolic links" >&5
+echo "configure:3258: checking if tic should use symbolic links" >&5
     if test "$ac_cv_func_symlink" = yes ; then
        with_symlinks=yes
     else
@@ -3231,7 +3263,7 @@ echo "configure:3226: 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:3235: checking if tic should use hard links" >&5
+echo "configure:3267: checking if tic should use hard links" >&5
     if test "$ac_cv_func_link" = yes ; then
        with_links=yes
     else
@@ -3240,7 +3272,7 @@ echo "configure:3235: 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:3244: checking if tic should use symbolic links" >&5
+echo "configure:3276: checking if tic should use symbolic links" >&5
     
 # Check whether --enable-symlinks or --disable-symlinks was given.
 if test "${enable_symlinks+set}" = set; then
@@ -3262,9 +3294,27 @@ test "$with_symlinks" = yes && cat >> confdefs.h <<\EOF
 EOF
 
 
+###   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:3300: 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-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:3268: checking if tputs should process BSD-style prefix padding" >&5
+echo "configure:3318: 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
@@ -3280,9 +3330,66 @@ test "$with_bsdpad" = yes && cat >> confdefs.h <<\EOF
 EOF
 
 
+### Enable compiling-in rcs id's
+echo $ac_n "checking if RCS identifiers should be compiled-in""... $ac_c" 1>&6
+echo "configure:3336: 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=$withval
+else
+  with_rcs_ids=no
+fi
+
+echo "$ac_t""$with_rcs_ids" 1>&6
+test "$with_rcs_ids" = yes && cat >> confdefs.h <<\EOF
+#define USE_RCS_IDS 1
+EOF
+
+
+###############################################################################
+
+
+### Note that some functions (such as const) are normally disabled anyway.
+echo $ac_n "checking if you want to build with function extensions""... $ac_c" 1>&6
+echo "configure:3357: 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
+  enableval="$enable_ext_funcs"
+  with_ext_funcs=$enableval
+else
+  with_ext_funcs=yes
+fi
+
+echo "$ac_t""$with_ext_funcs" 1>&6
+if test "$with_ext_funcs" = yes ; then
+       cat >> confdefs.h <<\EOF
+#define HAVE_HAS_KEY 1
+EOF
+
+       cat >> confdefs.h <<\EOF
+#define HAVE_RESIZETERM 1
+EOF
+
+       cat >> confdefs.h <<\EOF
+#define HAVE_USE_DEFAULT_COLORS 1
+EOF
+
+       cat >> confdefs.h <<\EOF
+#define HAVE_WRESIZE 1
+EOF
+
+       cat >> confdefs.h <<\EOF
+#define NCURSES_EXT_FUNCS 1
+EOF
+
+fi
+
 ###   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:3286: checking for extended use of const keyword" >&5
+echo "configure:3393: checking for extended use of const keyword" >&5
 
 # Check whether --enable-const or --disable-const was given.
 if test "${enable_const+set}" = set; then
@@ -3303,28 +3410,80 @@ EOF
 fi
 
 
-### Enable compiling-in rcs id's
-echo $ac_n "checking if RCS identifiers should be compiled-in""... $ac_c" 1>&6
-echo "configure:3309: checking if RCS identifiers should be compiled-in" >&5
+###   use option --enable-hashmap to turn on use of hashmap scrolling logic
+echo $ac_n "checking if you want hashmap scrolling-optimization code""... $ac_c" 1>&6
+echo "configure:3416: checking if you want hashmap scrolling-optimization code" >&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=$withval
+# 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=yes
+fi
+
+echo "$ac_t""$with_hashmap" 1>&6
+test "$with_hashmap" = yes && cat >> confdefs.h <<\EOF
+#define USE_HASHMAP 1
+EOF
+
+
+echo $ac_n "checking if you want \$NCURSES_NO_PADDING code""... $ac_c" 1>&6
+echo "configure:3433: checking if you want \$NCURSES_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=$with_ext_funcs
+fi
+
+echo "$ac_t""$with_no_padding" 1>&6
+test "$with_no_padding" = yes && cat >> confdefs.h <<\EOF
+#define NCURSES_NO_PADDING 1
+EOF
+
+
+###   use option --enable-sigwinch to turn on use of SIGWINCH logic
+echo $ac_n "checking if you want SIGWINCH handler""... $ac_c" 1>&6
+echo "configure:3451: checking if you want 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_ext_funcs
+fi
+
+echo "$ac_t""$with_sigwinch" 1>&6
+test "$with_sigwinch" = yes && cat >> confdefs.h <<\EOF
+#define USE_SIGWINCH 1
+EOF
+
+
+###   use option --enable-tcap-names to allow user to define new capabilities
+echo $ac_n "checking if you want user-definable terminal capabilities like termcap""... $ac_c" 1>&6
+echo "configure:3469: checking if you want user-definable terminal capabilities 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_rcs_ids=no
+  with_tcap_names=$with_ext_funcs
 fi
 
-echo "$ac_t""$with_rcs_ids" 1>&6
-test "$with_rcs_ids" = yes && cat >> confdefs.h <<\EOF
-#define USE_RCS_IDS 1
-EOF
+echo "$ac_t""$with_tcap_names" 1>&6
+NCURSES_XNAMES=0
+test "$with_tcap_names" = yes && NCURSES_XNAMES=1
 
 
 ###############################################################################
 
 echo $ac_n "checking if you want all experimental code""... $ac_c" 1>&6
-echo "configure:3328: checking if you want all experimental code" >&5
+echo "configure:3487: checking if you want all experimental code" >&5
 
 # Check whether --with-develop or --without-develop was given.
 if test "${with_develop+set}" = set; then
@@ -3336,27 +3495,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
+###   use option --enable-colorfgbg to turn on use of $COLORFGBG environment
+echo $ac_n "checking if you want experimental colorfgbg code""... $ac_c" 1>&6
+echo "configure:3501: checking if you want experimental colorfgbg 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
+# Check whether --enable-hard-tabs or --disable-hard-tabs was given.
+if test "${enable_hard_tabs+set}" = set; then
+  enableval="$enable_hard_tabs"
+  with_colorfgbg=$enableval
 else
-  with_broken_linker=$BROKEN_LINKER
+  with_colorfgbg=$with_develop
 fi
 
-echo "$ac_t""$with_broken_linker" 1>&6
-test "$with_broken_linker" = yes && cat >> confdefs.h <<\EOF
-#define BROKEN_LINKER 1
+echo "$ac_t""$with_colorfgbg" 1>&6
+test "$with_colorfgbg" = yes && cat >> confdefs.h <<\EOF
+#define USE_COLORFGBG 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:3360: checking if you want experimental hard-tabs code" >&5
+echo "configure:3519: 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
@@ -3372,43 +3531,8 @@ test "$with_hardtabs" = yes && cat >> confdefs.h <<\EOF
 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: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=yes
-fi
-
-echo "$ac_t""$with_hashmap" 1>&6
-test "$with_hashmap" = yes && cat >> confdefs.h <<\EOF
-#define USE_HASHMAP 1
-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:3412: checking if you want experimental safe-sprintf code" >&5
+echo "configure:3536: 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
@@ -3425,17 +3549,17 @@ EOF
 
 
 ###   use option --disable-scroll-hints to turn off use of scroll-hints scrolling logic
+# when hashmap is used scroll hints are useless
+if test "$with_hashmap" = no ; then
 echo $ac_n "checking if you want to experiment without scrolling-hints code""... $ac_c" 1>&6
-echo "configure:3430: checking if you want to experiment without scrolling-hints code" >&5
+echo "configure:3556: 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;
-        # when hashmap is used scroll hints are useless
-        test $with_hashmap = yes && with_scroll_hints=no
+  with_scroll_hints=yes
 fi
 
 echo "$ac_t""$with_scroll_hints" 1>&6
@@ -3443,45 +3567,11 @@ test "$with_scroll_hints" = yes && cat >> confdefs.h <<\EOF
 #define USE_SCROLL_HINTS 1
 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: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=yes
 fi
 
-echo "$ac_t""$with_sigwinch" 1>&6
-test "$with_sigwinch" = yes && cat >> confdefs.h <<\EOF
-#define USE_SIGWINCH 1
-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:3485: checking if you want experimental wide-character code" >&5
+echo "configure:3575: 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
@@ -3492,14 +3582,17 @@ else
 fi
 
 echo "$ac_t""$with_widec" 1>&6
-test "$with_widec" = yes && cat >> confdefs.h <<\EOF
+if test "$with_widec" = yes ; then
+       LIB_SUFFIX="w${LIB_SUFFIX}"
+       cat >> confdefs.h <<\EOF
 #define USE_WIDEC_SUPPORT 1
 EOF
 
+fi
 
 ###   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:3503: checking if you want experimental xmc code" >&5
+echo "configure:3596: 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
@@ -3549,11 +3642,11 @@ if test -n "$with_warnings"; then
 if test -n "$GCC"
 then
                cat > conftest.$ac_ext <<EOF
-#line 3553 "configure"
+#line 3646 "configure"
 int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
 EOF
                echo "checking for $CC warning options" 1>&6
-echo "configure:3557: checking for $CC warning options" >&5
+echo "configure:3650: checking for $CC warning options" >&5
        cf_save_CFLAGS="$CFLAGS"
        EXTRA_CFLAGS="-W -Wall"
        cf_warn_CONST=""
@@ -3571,7 +3664,7 @@ echo "configure:3557: checking for $CC warning options" >&5
                Wstrict-prototypes $cf_warn_CONST
        do
                CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-               if { (eval echo configure:3575: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:3668: \"$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"
@@ -3603,9 +3696,9 @@ EOF
 if test -n "$GCC"
 then
        echo "checking for $CC __attribute__ directives" 1>&6
-echo "configure:3607: checking for $CC __attribute__ directives" >&5
+echo "configure:3700: checking for $CC __attribute__ directives" >&5
        cat > conftest.$ac_ext <<EOF
-#line 3609 "configure"
+#line 3702 "configure"
 #include "confdefs.h"
 #include "conftest.h"
 #include "conftest.i"
@@ -3643,7 +3736,7 @@ EOF
 EOF
                        ;;
                esac
-               if { (eval echo configure:3647: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:3740: \"$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
@@ -3723,12 +3816,12 @@ fi
 
 ###    Checks for libraries.
 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6
-echo "configure:3727: checking for gettimeofday" >&5
+echo "configure:3820: 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 3732 "configure"
+#line 3825 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gettimeofday(); below.  */
@@ -3751,7 +3844,7 @@ gettimeofday();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3848: \"$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
@@ -3774,7 +3867,7 @@ else
 
 
 echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6
-echo "configure:3778: checking for gettimeofday in -lbsd" >&5
+echo "configure:3871: 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
@@ -3782,7 +3875,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lbsd  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3786 "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
@@ -3793,7 +3886,7 @@ int main() {
 gettimeofday()
 ; return 0; }
 EOF
-if { (eval echo configure:3797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; 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
 
 fi
 
-MATH_LIB=""
-echo $ac_n "checking for sin""... $ac_c" 1>&6
-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 3830 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char sin(); 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 sin();
-
-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_sin) || defined (__stub___sin)
-choke me
-#else
-sin();
-#endif
-
-; return 0; }
-EOF
-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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_sin=no"
-fi
-rm -f conftest*
-fi
 
-if eval "test \"`echo '$ac_cv_func_'sin`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-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 "checking if -lm needed for math functions""... $ac_c" 1>&6
+echo "configure:3918: checking if -lm needed for math functions" >&5
+if eval "test \"`echo '$''{'cf_cv_need_libm'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  ac_save_LIBS="$LIBS"
-LIBS="-lm  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3879 "configure"
+  
+       cat > conftest.$ac_ext <<EOF
+#line 3924 "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 sin();
 
+       #include <stdio.h>
+       #include <math.h>
+       
 int main() {
-sin()
+double x = rand(); printf("result = %g\n", sin(x))
 ; return 0; }
 EOF
-if { (eval echo configure:3890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3934: \"$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"
+  cf_cv_need_libm=no
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
+  cf_cv_need_libm=yes
 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
-  MATH_LIB="-lm"
-else
-  echo "$ac_t""no" 1>&6
 fi
 
+echo "$ac_t""$cf_cv_need_libm" 1>&6
+if test "$cf_cv_need_libm" = yes
+then
+MATH_LIB=-lm
 fi
 
 
 
 ###    Checks for header files.
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3916: checking for ANSI C header files" >&5
+echo "configure:3956: 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 3921 "configure"
+#line 3961 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3925,7 +3965,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3929: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3969: \"$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*
@@ -3942,7 +3982,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 3946 "configure"
+#line 3986 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -3960,7 +4000,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 3964 "configure"
+#line 4004 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -3981,7 +4021,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 3985 "configure"
+#line 4025 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3992,7 +4032,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:3996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4036: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -4020,12 +4060,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:4024: checking for $ac_hdr that defines DIR" >&5
+echo "configure:4064: 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 4029 "configure"
+#line 4069 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -4033,7 +4073,7 @@ int main() {
 DIR *dirp = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:4037: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4077: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_header_dirent_$ac_safe=yes"
 else
@@ -4058,7 +4098,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:4062: checking for opendir in -ldir" >&5
+echo "configure:4102: 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
@@ -4066,7 +4106,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldir  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4070 "configure"
+#line 4110 "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
@@ -4077,7 +4117,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:4081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4121: \"$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
@@ -4099,7 +4139,7 @@ fi
 
 else
 echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:4103: checking for opendir in -lx" >&5
+echo "configure:4143: 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
@@ -4107,7 +4147,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lx  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4111 "configure"
+#line 4151 "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
@@ -4118,7 +4158,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:4122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4162: \"$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
@@ -4142,13 +4182,13 @@ fi
 
 
 echo $ac_n "checking for regular-expression headers""... $ac_c" 1>&6
-echo "configure:4146: checking for regular-expression headers" >&5
+echo "configure:4186: 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 4152 "configure"
+#line 4192 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <regex.h>
@@ -4161,7 +4201,7 @@ int main() {
        
 ; return 0; }
 EOF
-if { (eval echo configure:4165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; 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="regex.h"
 else
@@ -4170,7 +4210,7 @@ else
   rm -rf conftest*
   
        cat > conftest.$ac_ext <<EOF
-#line 4174 "configure"
+#line 4214 "configure"
 #include "confdefs.h"
 #include <regexp.h>
 int main() {
@@ -4180,7 +4220,7 @@ int main() {
        
 ; return 0; }
 EOF
-if { (eval echo configure:4184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_cv_regex="regexp.h"
 else
@@ -4191,7 +4231,7 @@ else
                cf_save_LIBS="$LIBS"
                LIBS="-lgen $LIBS"
                cat > conftest.$ac_ext <<EOF
-#line 4195 "configure"
+#line 4235 "configure"
 #include "confdefs.h"
 #include <regexpr.h>
 int main() {
@@ -4201,7 +4241,7 @@ int main() {
                
 ; return 0; }
 EOF
-if { (eval echo configure:4205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4245: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_cv_regex="regexpr.h"
 else
@@ -4241,34 +4281,33 @@ getopt.h \
 libc.h \
 limits.h \
 locale.h \
+poll.h \
 sys/bsdtypes.h \
 sys/ioctl.h \
 sys/param.h \
-poll.h \
+sys/poll.h \
 sys/select.h \
-sys/stropts.h \
 sys/time.h \
 sys/times.h \
 termio.h \
 termios.h \
 ttyent.h \
 unistd.h \
-values.h \
 
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4262: checking for $ac_hdr" >&5
+echo "configure:4301: 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 4267 "configure"
+#line 4306 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4272: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4311: \"$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*
@@ -4299,7 +4338,7 @@ done
 # 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:4303: checking for main in -lcposix" >&5
+echo "configure:4342: 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
@@ -4307,14 +4346,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcposix  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4311 "configure"
+#line 4350 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:4318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4357: \"$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
@@ -4342,7 +4381,7 @@ else
 fi
 
        echo $ac_n "checking for bzero in -linet""... $ac_c" 1>&6
-echo "configure:4346: checking for bzero in -linet" >&5
+echo "configure:4385: 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
@@ -4350,7 +4389,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-linet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4354 "configure"
+#line 4393 "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
@@ -4361,7 +4400,7 @@ int main() {
 bzero()
 ; return 0; }
 EOF
-if { (eval echo configure:4365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4404: \"$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
@@ -4384,17 +4423,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4388: checking for $ac_hdr" >&5
+echo "configure:4427: 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 4393 "configure"
+#line 4432 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4398: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4437: \"$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*
@@ -4424,13 +4463,13 @@ fi
 
 
 echo $ac_n "checking if sys/time.h works with sys/select.h""... $ac_c" 1>&6
-echo "configure:4428: checking if sys/time.h works with sys/select.h" >&5
+echo "configure:4467: 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 4434 "configure"
+#line 4473 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -4445,7 +4484,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4449: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4488: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_sys_time_select=yes
 else
@@ -4474,12 +4513,12 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:4478: checking for working const" >&5
+echo "configure:4517: 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 4483 "configure"
+#line 4522 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -4528,7 +4567,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:4532: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -4549,21 +4588,21 @@ EOF
 fi
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:4553: checking for inline" >&5
+echo "configure:4592: 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 4560 "configure"
+#line 4599 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:4567: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4606: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -4595,20 +4634,20 @@ EOF
 
 
 echo $ac_n "checking if unsigned literals are legal""... $ac_c" 1>&6
-echo "configure:4599: checking if unsigned literals are legal" >&5
+echo "configure:4638: 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 4605 "configure"
+#line 4644 "configure"
 #include "confdefs.h"
 
 int main() {
 long x = 1L + 1UL + 1U + 1
 ; return 0; }
 EOF
-if { (eval echo configure:4612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4651: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_unsigned_literals=yes
 else
@@ -4626,7 +4665,7 @@ echo "$ac_t""$cf_cv_unsigned_literals" 1>&6
 
 
 echo $ac_n "checking for type of chtype""... $ac_c" 1>&6
-echo "configure:4630: checking for type of chtype" >&5
+echo "configure:4669: 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
@@ -4635,7 +4674,7 @@ else
   cf_cv_typeof_chtype=long
 else
   cat > conftest.$ac_ext <<EOF
-#line 4639 "configure"
+#line 4678 "configure"
 #include "confdefs.h"
 
 #if USE_WIDEC_SUPPORT
@@ -4681,7 +4720,7 @@ int main()
 }
                
 EOF
-if { (eval echo configure:4685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4724: \"$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
@@ -4714,7 +4753,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:4718: checking for number of bits in chtype" >&5
+echo "configure:4757: 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
@@ -4723,7 +4762,7 @@ else
   cf_cv_shift_limit=32
 else
   cat > conftest.$ac_ext <<EOF
-#line 4727 "configure"
+#line 4766 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -4746,7 +4785,7 @@ int main()
 }
                
 EOF
-if { (eval echo configure:4750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4789: \"$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
@@ -4766,7 +4805,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:4770: checking for width of character-index" >&5
+echo "configure:4809: 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
@@ -4793,16 +4832,16 @@ echo "$ac_t""$cf_cv_widec_shift" 1>&6
 
 
 echo $ac_n "checking if external errno is declared""... $ac_c" 1>&6
-echo "configure:4797: checking if external errno is declared" >&5
+echo "configure:4836: 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 4803 "configure"
+#line 4842 "configure"
 #include "confdefs.h"
 
-#if HAVE_STDLIB_H
+#ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
 #include <stdio.h>
@@ -4812,7 +4851,7 @@ int main() {
 long x = (long) errno
 ; return 0; }
 EOF
-if { (eval echo configure:4816: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4855: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval 'cf_cv_dcl_'errno'=yes'
 else
@@ -4843,13 +4882,13 @@ 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
+echo "configure:4886: 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"
+#line 4892 "configure"
 #include "confdefs.h"
 
 #undef errno
@@ -4859,7 +4898,7 @@ int main() {
 errno = 2
 ; return 0; }
 EOF
-if { (eval echo configure:4863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4902: \"$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
@@ -4891,23 +4930,23 @@ fi
 
 
 echo $ac_n "checking if data-only library module links""... $ac_c" 1>&6
-echo "configure:4895: checking if data-only library module links" >&5
+echo "configure:4934: 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 4902 "configure"
+#line 4941 "configure"
 int    testdata[3] = { 123, 456, 789 };
 EOF
-               if { (eval echo configure:4905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } ; then
+               if { (eval echo configure:4944: \"$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 4911 "configure"
+#line 4950 "configure"
 int    testfunc()
 {
 #if defined(NeXT)
@@ -4920,7 +4959,7 @@ int       testfunc()
 #endif
 }
 EOF
-               if { (eval echo configure:4924: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:4963: \"$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
@@ -4932,7 +4971,7 @@ EOF
   cf_cv_link_dataonly=unknown
 else
   cat > conftest.$ac_ext <<EOF
-#line 4936 "configure"
+#line 4975 "configure"
 #include "confdefs.h"
 
        int main()
@@ -4942,7 +4981,7 @@ else
        }
        
 EOF
-if { (eval echo configure:4946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4985: \"$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
@@ -4966,17 +5005,17 @@ EOF
 
 
 echo $ac_n "checking for speed_t""... $ac_c" 1>&6
-echo "configure:4970: checking for speed_t" >&5
+echo "configure:5009: checking for speed_t" >&5
 OSPEED_INCLUDES=
 cat > conftest.$ac_ext <<EOF
-#line 4973 "configure"
+#line 5012 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int main() {
 speed_t some_variable = 0
 ; return 0; }
 EOF
-if { (eval echo configure:4980: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5019: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   OSPEED_TYPE=speed_t
 else
@@ -4987,14 +5026,14 @@ else
 fi
 rm -f conftest*
 cat > conftest.$ac_ext <<EOF
-#line 4991 "configure"
+#line 5030 "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
+if { (eval echo configure:5037: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   OSPEED_TYPE=speed_t
         OSPEED_INCLUDES="#include <termios.h>"
@@ -5017,9 +5056,11 @@ fi
 
 
 ###    Checks for library functions.
-for ac_func in getcwd \
+for ac_func in \
+getcwd \
 getttynam \
 memccpy \
+mkstemp \
 nanosleep \
 poll \
 remove \
@@ -5040,12 +5081,12 @@ vsscanf \
 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5044: checking for $ac_func" >&5
+echo "configure:5085: 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 5049 "configure"
+#line 5090 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5068,7 +5109,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5113: \"$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
@@ -5092,18 +5133,16 @@ else
 fi
 done
 
-
-
 if test "$with_getcap" = "yes" ; then
        
 echo $ac_n "checking for terminal-capability database functions""... $ac_c" 1>&6
-echo "configure:5101: checking for terminal-capability database functions" >&5
+echo "configure:5140: 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 5107 "configure"
+#line 5146 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -5118,7 +5157,7 @@ int main() {
        
 ; return 0; }
 EOF
-if { (eval echo configure:5122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_cv_cgetent=yes
 else
@@ -5141,20 +5180,20 @@ fi
 
 
 echo $ac_n "checking for isascii""... $ac_c" 1>&6
-echo "configure:5145: checking for isascii" >&5
+echo "configure:5184: 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 5151 "configure"
+#line 5190 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 int main() {
 int x = isascii(' ')
 ; return 0; }
 EOF
-if { (eval echo configure:5158: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_cv_have_isascii=yes
 else
@@ -5175,9 +5214,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:5179: checking whether sigaction needs _POSIX_SOURCE" >&5
+echo "configure:5218: checking whether sigaction needs _POSIX_SOURCE" >&5
 cat > conftest.$ac_ext <<EOF
-#line 5181 "configure"
+#line 5220 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -5186,7 +5225,7 @@ int main() {
 struct sigaction act
 ; return 0; }
 EOF
-if { (eval echo configure:5190: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5229: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   sigact_bad=no
 else
@@ -5195,7 +5234,7 @@ else
   rm -rf conftest*
   
 cat > conftest.$ac_ext <<EOF
-#line 5199 "configure"
+#line 5238 "configure"
 #include "confdefs.h"
 
 #define _POSIX_SOURCE
@@ -5205,7 +5244,7 @@ int main() {
 struct sigaction act
 ; return 0; }
 EOF
-if { (eval echo configure:5209: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5248: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   sigact_bad=yes
         cat >> confdefs.h <<\EOF
@@ -5233,16 +5272,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:5237: checking whether termios.h needs _POSIX_SOURCE" >&5
+echo "configure:5276: checking whether termios.h needs _POSIX_SOURCE" >&5
        cat > conftest.$ac_ext <<EOF
-#line 5239 "configure"
+#line 5278 "configure"
 #include "confdefs.h"
 #include <termios.h>
 int main() {
 struct termios foo; int x = foo.c_iflag
 ; return 0; }
 EOF
-if { (eval echo configure:5246: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5285: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   termios_bad=no
 else
@@ -5251,7 +5290,7 @@ else
   rm -rf conftest*
   
                cat > conftest.$ac_ext <<EOF
-#line 5255 "configure"
+#line 5294 "configure"
 #include "confdefs.h"
 
 #define _POSIX_SOURCE
@@ -5260,7 +5299,7 @@ int main() {
 struct termios foo; int x = foo.c_iflag
 ; return 0; }
 EOF
-if { (eval echo configure:5264: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5303: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   termios_bad=unknown
 else
@@ -5285,7 +5324,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:5289: checking whether setvbuf arguments are reversed" >&5
+echo "configure:5328: 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
@@ -5293,7 +5332,7 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 5297 "configure"
+#line 5336 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 /* If setvbuf has the reversed format, exit 0. */
@@ -5307,7 +5346,7 @@ main () {
   exit(0);                     /* Non-reversed systems segv here.  */
 }
 EOF
-if { (eval echo configure:5311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5350: \"$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
@@ -5332,12 +5371,12 @@ fi
 
 fi
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:5336: checking return type of signal handlers" >&5
+echo "configure:5375: 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 5341 "configure"
+#line 5380 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -5354,7 +5393,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:5358: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5397: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -5374,13 +5413,13 @@ EOF
 
 
 echo $ac_n "checking for type sigaction_t""... $ac_c" 1>&6
-echo "configure:5378: checking for type sigaction_t" >&5
+echo "configure:5417: 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 5384 "configure"
+#line 5423 "configure"
 #include "confdefs.h"
 
 #include <signal.h>
@@ -5388,7 +5427,7 @@ int main() {
 sigaction_t x
 ; return 0; }
 EOF
-if { (eval echo configure:5392: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5431: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_type_sigaction=yes
 else
@@ -5408,7 +5447,7 @@ EOF
 
 
 echo $ac_n "checking declaration of size-change""... $ac_c" 1>&6
-echo "configure:5412: checking declaration of size-change" >&5
+echo "configure:5451: 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
@@ -5422,7 +5461,7 @@ do
     CFLAGS="$cf_save_CFLAGS"
     test -n "$cf_opts" && CFLAGS="$CFLAGS -D$cf_opts"
     cat > conftest.$ac_ext <<EOF
-#line 5426 "configure"
+#line 5465 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if HAVE_TERMIOS_H
@@ -5461,7 +5500,7 @@ int main() {
        
 ; return 0; }
 EOF
-if { (eval echo configure:5465: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5504: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_sizechange=yes
 else
@@ -5493,12 +5532,12 @@ EOF
 
 
 echo $ac_n "checking for memmove""... $ac_c" 1>&6
-echo "configure:5497: checking for memmove" >&5
+echo "configure:5536: 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"
+#line 5541 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char memmove(); below.  */
@@ -5521,7 +5560,7 @@ memmove();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5564: \"$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
@@ -5540,12 +5579,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for bcopy""... $ac_c" 1>&6
-echo "configure:5544: checking for bcopy" >&5
+echo "configure:5583: 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"
+#line 5588 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char bcopy(); below.  */
@@ -5568,7 +5607,7 @@ bcopy();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5572: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5611: \"$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
@@ -5584,7 +5623,7 @@ 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
+echo "configure:5627: 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
@@ -5593,7 +5632,7 @@ else
   cf_cv_good_bcopy=unknown
 else
   cat > conftest.$ac_ext <<EOF
-#line 5597 "configure"
+#line 5636 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -5606,7 +5645,7 @@ int main() {
 }
                
 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
+if { (eval echo configure:5649: \"$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
@@ -5643,6 +5682,57 @@ EOF
 fi
 
 
+echo $ac_n "checking if poll really works""... $ac_c" 1>&6
+echo "configure:5687: checking if poll really works" >&5
+if eval "test \"`echo '$''{'cf_cv_working_poll'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+if test "$cross_compiling" = yes; then
+  cf_cv_working_poll=unknown
+else
+  cat > conftest.$ac_ext <<EOF
+#line 5696 "configure"
+#include "confdefs.h"
+
+#include <stdio.h>
+#ifdef HAVE_POLL_H
+#include <poll.h>
+#else
+#include <sys/poll.h>
+#endif
+int main() {
+       struct pollfd myfds;
+       int ret;
+
+       myfds.fd = 0;
+       myfds.events = POLLIN;
+
+       ret = poll(&myfds, 1, 100);
+       exit(ret != 0);
+}
+EOF
+if { (eval echo configure:5716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  cf_cv_working_poll=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  cf_cv_working_poll=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+echo "$ac_t""$cf_cv_working_poll" 1>&6
+test "$cf_cv_working_poll" = "yes" && cat >> confdefs.h <<\EOF
+#define HAVE_WORKING_POLL 1
+EOF
+
+
+
 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$//'`
@@ -5650,13 +5740,13 @@ fi
 
 
 echo $ac_n "checking for builtin $CC bool type""... $ac_c" 1>&6
-echo "configure:5654: checking for builtin $CC bool type" >&5
+echo "configure:5744: 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
   
        cat > conftest.$ac_ext <<EOF
-#line 5660 "configure"
+#line 5750 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -5666,7 +5756,7 @@ int main() {
 bool x = false
 ; return 0; }
 EOF
-if { (eval echo configure:5670: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5760: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_cc_bool_type=1
 else
@@ -5703,15 +5793,15 @@ os2*) #(vi
        ;;
 esac
 echo $ac_n "checking for library $cf_stdcpp_libname""... $ac_c" 1>&6
-echo "configure:5707: checking for library $cf_stdcpp_libname" >&5
+echo "configure:5797: 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"
+       LIBS="$LIBS -l$cf_stdcpp_libname"
 cat > conftest.$ac_ext <<EOF
-#line 5715 "configure"
+#line 5805 "configure"
 #include "confdefs.h"
 
 #include <strstream.h>
@@ -5719,11 +5809,10 @@ 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
+if { (eval echo configure:5816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_cv_libstdcpp=yes
 else
@@ -5758,24 +5847,23 @@ os2*) #(vi
 esac
 if test $ac_cv_prog_gxx = yes; then
        echo $ac_n "checking for lib$cf_gpp_libname""... $ac_c" 1>&6
-echo "configure:5762: checking for lib$cf_gpp_libname" >&5
+echo "configure:5851: checking for lib$cf_gpp_libname" >&5
        cf_save="$LIBS"
-       LIBS="$LIBS -l$cf_gpp_libname -lm"
+       LIBS="$LIBS -l$cf_gpp_libname"
        cat > conftest.$ac_ext <<EOF
-#line 5766 "configure"
+#line 5855 "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
+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
+if { (eval echo configure:5864: \"$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"
+        CXXLIBS="$CXXLIBS -l$cf_gpp_libname"
         if test "$cf_gpp_libname" = cpp ; then
            cat >> confdefs.h <<\EOF
 #define HAVE_GPP_BUILTIN_H 1
@@ -5792,20 +5880,19 @@ else
   cat conftest.$ac_ext >&5
   rm -rf conftest*
   cat > conftest.$ac_ext <<EOF
-#line 5796 "configure"
+#line 5884 "configure"
 #include "confdefs.h"
 
 #include <builtin.h>
        
 int main() {
-//float foo=abs(1.0);
-        two_arg_error_handler_t foo2 = lib_error_handler
+two_arg_error_handler_t foo2 = lib_error_handler
 ; return 0; }
 EOF
-if { (eval echo configure:5806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5893: \"$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"
+        CXXLIBS="$CXXLIBS -l$cf_gpp_libname"
         cat >> confdefs.h <<\EOF
 #define HAVE_BUILTIN_H 1
 EOF
@@ -5829,7 +5916,7 @@ fi
            ;;
        esac
        echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:5833: checking how to run the C++ preprocessor" >&5
+echo "configure:5920: 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
@@ -5842,12 +5929,12 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
 cross_compiling=$ac_cv_prog_cxx_cross
   CXXCPP="${CXX-g++} -E"
   cat > conftest.$ac_ext <<EOF
-#line 5846 "configure"
+#line 5933 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5851: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5938: \"$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
   :
@@ -5875,17 +5962,17 @@ 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:5879: checking for $ac_hdr" >&5
+echo "configure:5966: 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 5884 "configure"
+#line 5971 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5889: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5976: \"$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*
@@ -5913,13 +6000,13 @@ done
 
        
 echo $ac_n "checking for builtin $CXX bool type""... $ac_c" 1>&6
-echo "configure:5917: checking for builtin $CXX bool type" >&5
+echo "configure:6004: 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 5923 "configure"
+#line 6010 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -5929,7 +6016,7 @@ int main() {
 bool x = false
 ; return 0; }
 EOF
-if { (eval echo configure:5933: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6020: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_builtin_bool=1
 else
@@ -5949,7 +6036,7 @@ fi
 
        
 echo $ac_n "checking for size of $CXX bool""... $ac_c" 1>&6
-echo "configure:5953: checking for size of $CXX bool" >&5
+echo "configure:6040: 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
@@ -5959,7 +6046,7 @@ else
   cf_cv_type_of_bool=unknown
 else
   cat > conftest.$ac_ext <<EOF
-#line 5963 "configure"
+#line 6050 "configure"
 #include "confdefs.h"
 #ifdef __cplusplus
 extern "C" void exit(int);
@@ -5991,7 +6078,7 @@ main()
 }
                
 EOF
-if { (eval echo configure:5995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6082: \"$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
@@ -6015,7 +6102,7 @@ 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
+echo "configure:6106: checking for special defines needed for etip.h" >&5
 cf_save_CXXFLAGS="$CXXFLAGS"
 cf_result="none"
 for cf_math in "" MATH_H
@@ -6026,7 +6113,7 @@ do
        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"
+#line 6117 "configure"
 #include "confdefs.h"
 
 #include <etip.h.in>
@@ -6035,7 +6122,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:6039: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6126: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
        test -n "$cf_math" && cat >> confdefs.h <<EOF
@@ -6062,7 +6149,7 @@ CXXFLAGS="$cf_save_CXXFLAGS"
        
 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
+echo "configure:6153: 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
@@ -6078,7 +6165,7 @@ cross_compiling=$ac_cv_prog_cxx_cross
   cf_cv_cpp_param_init=unknown
 else
   cat > conftest.$ac_ext <<EOF
-#line 6082 "configure"
+#line 6169 "configure"
 #include "confdefs.h"
 #ifdef __cplusplus
 extern "C" void exit(int);
@@ -6099,7 +6186,7 @@ TEST::TEST(int x = 1)     // some compilers do not like second initializer
 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
+if { (eval echo configure:6190: \"$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
@@ -6141,7 +6228,7 @@ else
        # 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
+echo "configure:6232: 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  ;;
@@ -6157,7 +6244,7 @@ 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:6161: checking for $ac_word" >&5
+echo "configure:6248: 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
@@ -6191,10 +6278,10 @@ else
 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].*)
+  3.1[1-9]*|3.[2-9]*|[4-9].*)
     cf_cv_prog_gnat_correct=yes
     ;;
-  *) echo Unsupported GNAT version $cf_cv_gnat_version. Required is 3.10 or better. Disabling Ada95 binding.
+  *) echo Unsupported GNAT version $cf_cv_gnat_version. Required is 3.11 or better. Disabling Ada95 binding.
      cf_cv_prog_gnat_correct=no
      ;;
 esac
@@ -6211,7 +6298,7 @@ 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:6215: checking for $ac_word" >&5
+echo "configure:6302: 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
@@ -6244,7 +6331,7 @@ fi
    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
+echo "configure:6335: checking if GNAT works" >&5
       
 rm -f conftest*
 cat >>conftest.ads <<CF_EOF
@@ -6302,12 +6389,14 @@ if test "${with_ada_include+set}" = set; then
   withval="$with_ada_include"
   :
 else
-  withval="${ADA_INCLUDE-$prefix/lib/gnu-Ada/adainclude}"
+  withval="${ADA_INCLUDE-$prefix/lib/ada/adainclude}"
 fi
 
 case ".$withval" in #(vi
 ./*) #(vi
   ;;
+.a-zA-Z:\\/*) #(vi OS/2 EMX
+  ;;
 .\${*prefix}*) #(vi
   eval withval="$withval"
   case ".$withval" in #(vi
@@ -6334,12 +6423,14 @@ if test "${with_ada_objects+set}" = set; then
   withval="$with_ada_objects"
   :
 else
-  withval="${ADA_OBJECTS-$prefix/lib/gnu-Ada/adalib}"
+  withval="${ADA_OBJECTS-$prefix/lib/ada/adalib}"
 fi
 
 case ".$withval" in #(vi
 ./*) #(vi
   ;;
+.a-zA-Z:\\/*) #(vi OS/2 EMX
+  ;;
 .\${*prefix}*) #(vi
   eval withval="$withval"
   case ".$withval" in #(vi
@@ -6360,10 +6451,11 @@ 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
+# This has been fixed!
+#   if test $with_shared = no
+#   then
+#      AC_MSG_WARN(Ada95 applications will not link properly with static libraries)
+#   fi
 fi
 fi
 
@@ -6388,7 +6480,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:6392: checking for library subsets" >&5
+echo "configure:6484: checking for library subsets" >&5
 if test "$with_termlib" = yes ; then
        LIB_SUBSETS="termlib "
 else
@@ -6398,6 +6490,13 @@ LIB_SUBSETS="${LIB_SUBSETS}base"
 test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs"
 echo "$ac_t""$LIB_SUBSETS" 1>&6
 
+LIB_TRACING=DEBUG
+case "$CFLAGS" in
+*-DTRACE*)
+       LIB_TRACING=all
+       ;;
+esac
+
 ### Construct the list of include-directories to be generated
 
 CPPFLAGS="$CPPFLAGS -I. -I../include"
@@ -6436,10 +6535,65 @@ fi
 
 
 
+### Build up pieces for makefile rules
+echo $ac_n "checking default library suffix""... $ac_c" 1>&6
+echo "configure:6541: checking default library suffix" >&5
+
+       case $DFT_LWR_MODEL in
+       normal)  DFT_ARG_SUFFIX=''   ;;
+       debug)   DFT_ARG_SUFFIX='_g' ;;
+       profile) DFT_ARG_SUFFIX='_p' ;;
+       shared)  DFT_ARG_SUFFIX=''   ;;
+       esac
+       test -n "$LIB_SUFFIX" && DFT_ARG_SUFFIX="${LIB_SUFFIX}${DFT_ARG_SUFFIX}"
+echo "$ac_t""$DFT_ARG_SUFFIX" 1>&6
+
+echo $ac_n "checking default library-dependency suffix""... $ac_c" 1>&6
+echo "configure:6553: checking default library-dependency suffix" >&5
+
+       
+       case $DFT_LWR_MODEL in
+       normal)  DFT_DEP_SUFFIX='.a'   ;;
+       debug)   DFT_DEP_SUFFIX='_g.a' ;;
+       profile) DFT_DEP_SUFFIX='_p.a' ;;
+       shared)
+               case $cf_cv_system_name in
+               hpux*)  DFT_DEP_SUFFIX='.sl'  ;;
+               *)      DFT_DEP_SUFFIX='.so'  ;;
+               esac
+       esac
+       test -n "$LIB_SUFFIX" && DFT_DEP_SUFFIX="${LIB_SUFFIX}${DFT_DEP_SUFFIX}"
+echo "$ac_t""$DFT_DEP_SUFFIX" 1>&6
+
+echo $ac_n "checking default object directory""... $ac_c" 1>&6
+echo "configure:6570: checking default object directory" >&5
+
+       case $DFT_LWR_MODEL in
+       normal)  DFT_OBJ_SUBDIR='objects' ;;
+       debug)   DFT_OBJ_SUBDIR='obj_g' ;;
+       profile) DFT_OBJ_SUBDIR='obj_p' ;;
+       shared)  DFT_OBJ_SUBDIR='obj_s' ;;
+       esac
+echo "$ac_t""$DFT_OBJ_SUBDIR" 1>&6
+
+TINFO_LIST="$SHLIB_LIST"
+test $with_termlib = yes && SHLIB_LIST="$SHLIB_LIST -ltinfo${LIB_SUFFIX}"
+
+echo $ac_n "checking where we will install curses.h""... $ac_c" 1>&6
+echo "configure:6584: checking where we will install curses.h" >&5
+test "$with_overwrite" = no && \
+test "x$includedir" = 'x${prefix}/include' && \
+       includedir='$(prefix)/include/ncurses'${LIB_SUFFIX}
+echo "$ac_t""$includedir" 1>&6
+
+
+
+
+
 ### Set up low-level terminfo dependencies for makefiles.  Note that we
 ### could override this.
 if test "$with_termlib" = yes ; then
-       TEST_DEPS="${LIB_PREFIX}${TINFO_NAME}${DFT_DEP_SUFFIX}"
+       TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_NAME}${DFT_DEP_SUFFIX}"
        TEST_ARGS="-l${TINFO_NAME}${DFT_ARG_SUFFIX}"
 fi
 PROG_DEPS="$TEST_DEPS"
@@ -6450,10 +6604,10 @@ PROG_ARGS="$TEST_ARGS"
 
 
 echo $ac_n "checking for src modules""... $ac_c" 1>&6
-echo "configure:6454: checking for src modules" >&5
+echo "configure:6608: checking for src modules" >&5
 
 # dependencies and linker-arguments for test-programs
-TEST_DEPS="${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS"
+TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS"
 TEST_ARGS="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARGS"
 
 # dependencies and linker-arguments for utility-programs
@@ -6496,7 +6650,7 @@ EOF
 #define HAVE_LIB${cf_have_include} 1
 EOF
 
-                       TEST_DEPS="${LIB_PREFIX}${cf_dir}${DFT_DEP_SUFFIX} $TEST_DEPS"
+                       TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${cf_dir}${DFT_DEP_SUFFIX} $TEST_DEPS"
                        TEST_ARGS="-l${cf_dir}${DFT_ARG_SUFFIX} $TEST_ARGS"
                fi
        fi
@@ -6518,7 +6672,7 @@ SRC_SUBDIRS="$SRC_SUBDIRS misc test"
 test $cf_with_cxx_binding != no && SRC_SUBDIRS="$SRC_SUBDIRS c++"
 
 ADA_SUBDIRS=
-if test "$cf_cv_prog_gnat_correct" = yes && test -d $srcdir/Ada95; then
+if test "$cf_cv_prog_gnat_correct" = yes && test -f $srcdir/Ada95/Makefile.in; then
    SRC_SUBDIRS="$SRC_SUBDIRS Ada95"
    ADA_SUBDIRS="gen src samples"
 fi
@@ -6735,18 +6889,13 @@ s%@AR@%$AR%g
 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%@cf_list_models@%$cf_list_models%g
 s%@DFT_LWR_MODEL@%$DFT_LWR_MODEL%g
 s%@DFT_UPR_MODEL@%$DFT_UPR_MODEL%g
-s%@DFT_DEP_SUFFIX@%$DFT_DEP_SUFFIX%g
-s%@DFT_ARG_SUFFIX@%$DFT_ARG_SUFFIX%g
-s%@cf_list_models@%$cf_list_models%g
 s%@TINFO_NAME@%$TINFO_NAME%g
 s%@LIB_NAME@%$LIB_NAME%g
 s%@LIB_PREFIX@%$LIB_PREFIX%g
+s%@LIB_SUFFIX@%$LIB_SUFFIX%g
 s%@CC_G_OPT@%$CC_G_OPT%g
 s%@CXX_G_OPT@%$CXX_G_OPT%g
 s%@LD_MODEL@%$LD_MODEL%g
@@ -6786,6 +6935,12 @@ s%@cf_generic_objects@%$cf_generic_objects%g
 s%@ADA_INCLUDE@%$ADA_INCLUDE%g
 s%@ADA_OBJECTS@%$ADA_OBJECTS%g
 s%@ACPPFLAGS@%$ACPPFLAGS%g
+s%@DFT_ARG_SUFFIX@%$DFT_ARG_SUFFIX%g
+s%@DFT_DEP_SUFFIX@%$DFT_DEP_SUFFIX%g
+s%@DFT_OBJ_SUBDIR@%$DFT_OBJ_SUBDIR%g
+s%@EXTRA_LIBS@%$EXTRA_LIBS%g
+s%@TINFO_LIST@%$TINFO_LIST%g
+s%@SHLIB_LIST@%$SHLIB_LIST%g
 s%@TEST_DEPS@%$TEST_DEPS%g
 s%@TEST_ARGS@%$TEST_ARGS%g
 s%@PROG_ARGS@%$PROG_ARGS%g
@@ -7010,7 +7165,9 @@ CF_LIST_MODELS="$cf_list_models"
 DFT_LWR_MODEL="$DFT_LWR_MODEL"
 LDCONFIG="$LDCONFIG"
 LIB_NAME="$LIB_NAME"
+LIB_SUFFIX="$LIB_SUFFIX"
 LIB_SUBSETS="$LIB_SUBSETS"
+LIB_TRACING="$LIB_TRACING"
 SRC_SUBDIRS="$SRC_SUBDIRS"
 TINFO_NAME="$TINFO_NAME"
 WITH_ECHO="$with_echo"
@@ -7021,6 +7178,7 @@ 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_with_cxx_binding="$cf_with_cxx_binding"
+cf_cv_shlib_version="$cf_cv_shlib_version"
 target="$target"
 
 
@@ -7031,10 +7189,10 @@ cat >> $CONFIG_STATUS <<\EOF
 
 
        case $cf_cv_system_name in
-       os2)    cf_prefix=''     ;;
-       *)      cf_prefix='lib'  ;;
+       os2)    LIB_PREFIX=''     ;;
+       *)      LIB_PREFIX='lib'  ;;
        esac
-       LIB_PREFIX=$cf_prefix
+cf_prefix=$LIB_PREFIX
        
 
 
@@ -7053,25 +7211,25 @@ do
        profile) cf_suffix='_p.a' ;;
        shared)
                case $cf_cv_system_name in
-               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
        esac
-
+       test -n "$LIB_SUFFIX" && cf_suffix="${LIB_SUFFIX}${cf_suffix}"
+
+                       if test $cf_item = shared ; then
+                       if test $cf_cv_do_symlinks = yes ; then
+                               case "$cf_cv_shlib_version" in #(vi
+                               rel) cf_suffix="$cf_suffix"'.$(REL_VERSION)' ;; #(vi
+                               abi) cf_suffix="$cf_suffix"'.$(ABI_VERSION)' ;;
+                               esac
+                       fi
+                       fi
                        cf_libs_to_make="$cf_libs_to_make ../lib/${cf_prefix}${cf_dir}${cf_suffix}"
                done
 
                if test $cf_dir = ncurses ; then
-                       case "$LIB_SUBSETS" in
+                       case "$LIB_SUBSETS" in #(vi
                        termlib+*) #(vi
                                ;;
                        *) #(vi
@@ -7103,19 +7261,11 @@ CF_ITEM=`echo $cf_item | tr '[a-z]' '[A-Z]'`
        profile) cf_suffix='_p.a' ;;
        shared)
                case $cf_cv_system_name in
-               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
        esac
+       test -n "$LIB_SUFFIX" && cf_suffix="${LIB_SUFFIX}${cf_suffix}"
 
                        
        case $cf_item in
@@ -7145,11 +7295,13 @@ CF_ITEM=`echo $cf_item | tr '[a-z]' '[A-Z]'`
                        do
                        $AWK -f $srcdir/mk-1st.awk \
                                name=$cf_dir \
+                               traces=$LIB_TRACING \
                                MODEL=$CF_ITEM \
                                model=$cf_subdir \
                                prefix=$cf_prefix \
                                suffix=$cf_suffix \
                                subset=$cf_subset \
+                               ShlibVer=$cf_cv_shlib_version \
                                DoLinks=$cf_cv_do_symlinks \
                                rmSoLocs=$cf_cv_rm_so_locs \
                                ldconfig="$LDCONFIG" \
@@ -7160,6 +7312,7 @@ CF_ITEM=`echo $cf_item | tr '[a-z]' '[A-Z]'`
                        test $cf_dir = ncurses && WITH_OVERWRITE=no
                        $AWK -f $srcdir/mk-2nd.awk \
                                name=$cf_dir \
+                               traces=$LIB_TRACING \
                                MODEL=$CF_ITEM \
                                model=$cf_subdir \
                                subset=$cf_subset \
@@ -7178,6 +7331,7 @@ do
        if test -f $cf_dir/Makefile ; then
                case "$cf_dir" in
                Ada95) #(vi
+                       echo 'libs \' >> Makefile
                        echo 'install.libs \' >> Makefile
                        echo 'uninstall.libs ::' >> Makefile
                        echo '  cd '$cf_dir' && $(MAKE) $(CF_MFLAGS) $@' >> Makefile
@@ -7197,6 +7351,7 @@ if test "$cf_dir" != "c++" ; then
 echo 'lint \' >> Makefile
 fi
 cat >> Makefile <<CF_EOF
+libs \\
 lintlib \\
 install.libs \\
 uninstall.libs \\
@@ -7207,6 +7362,7 @@ CF_EOF
        elif test -f $srcdir/$cf_dir/headers; then
 cat >> Makefile <<CF_EOF
 
+libs \\
 install.libs \\
 uninstall.libs \\
 install.includes \\
@@ -7253,19 +7409,18 @@ SRC=\$3
 echo installing \$SRC in \$DST
 case \$DST in
 /*/include/*)
-       TMP=\${TMPDIR-/tmp}/\`basename \$SRC\`
-       if test ! -f ../headers.sed ; then
-               END=\`basename \$DST\`
-               for i in \`cat \$REF/../*/headers |fgrep -v "#"\`
-               do
-                       NAME=\`basename \$i\`
-                       echo "s/<\$NAME>/<\$END\/\$NAME>/" >> ../headers.sed
-               done
-       fi
-       rm -f \$TMP
-       sed -f ../headers.sed \$SRC > \$TMP
-       eval \$PRG \$TMP \$DST
-       rm -f \$TMP
+       TMPSRC=\${TMPDIR-/tmp}/\`basename \$SRC\`\$\$
+       TMPSED=\${TMPDIR-/tmp}/headers.sed\$\$
+       END=\`basename \$DST\`
+       for i in \`cat \$REF/../*/headers |fgrep -v "#"\`
+       do
+               NAME=\`basename \$i\`
+               echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
+       done
+       rm -f \$TMPSRC
+       sed -f \$TMPSED \$SRC > \$TMPSRC
+       eval \$PRG \$TMPSRC \$DST/\$SRC
+       rm -f \$TMPSRC \$TMPSED
        ;;
 *)
        eval \$PRG \$SRC \$DST
index d1bcd88e4251d930b7fd727ed7a44ecedfacd53d..0cd345e1ba475e6f6e62278344fd9e86a4d3cfba 100644 (file)
@@ -28,10 +28,10 @@ dnl***************************************************************************
 dnl
 dnl Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
 dnl
-dnl $Id: configure.in,v 1.179 1999/10/24 00:32:42 tom Exp $
+dnl $Id: configure.in,v 1.195 2000/07/05 22:24:29 tom Exp $
 dnl Process this file with autoconf to produce a configure script.
-AC_PREREQ(2.12.971222)
-AC_REVISION($Revision: 1.179 $)
+AC_PREREQ(2.12.971230)
+AC_REVISION($Revision: 1.195 $)
 AC_INIT(ncurses/base/lib_initscr.c)
 AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
 
@@ -115,7 +115,11 @@ if test "X$cf_with_cxx" = Xno ; then
        CXX=""
        GXX=""
 else
+       pushdef([AC_MSG_ERROR],
+               [AC_MSG_RESULT([You don't have any C++ compiler, too bad]); dnl
+               cf_with_cxx=no; CXX=""; GXX="";])dnl
        AC_PROG_CXX
+       popdef([AC_MSG_ERROR])dnl
 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
@@ -190,6 +194,7 @@ CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:)
 ### Use "--without-normal --with-shared" to allow the default model to be
 ### shared, for example.
 cf_list_models=""
+AC_SUBST(cf_list_models)dnl    the complete list of models ("normal debug")
 
 AC_MSG_CHECKING(if you want to build shared libraries)
 AC_ARG_WITH(shared,
@@ -223,6 +228,39 @@ AC_ARG_WITH(profile,
 AC_MSG_RESULT($with_profile)
 test "$with_profile" = "yes" && cf_list_models="$cf_list_models profile"
 
+###############################################################################
+
+AC_MSG_CHECKING(for specified models)
+test -z "$cf_list_models" && cf_list_models=normal
+AC_MSG_RESULT($cf_list_models)
+
+### Use the first model as the default, and save its suffix for use in building
+### up test-applications.
+AC_MSG_CHECKING(for default model)
+DFT_LWR_MODEL=`echo $cf_list_models | $AWK '{print $1}'`
+AC_MSG_RESULT($DFT_LWR_MODEL)
+
+CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl
+
+AC_SUBST(DFT_LWR_MODEL)dnl     the default model ("normal")
+AC_SUBST(DFT_UPR_MODEL)dnl     the default model ("NORMAL")
+
+TINFO_NAME=tinfo
+AC_SUBST(TINFO_NAME)
+
+LIB_NAME=ncurses
+AC_SUBST(LIB_NAME)
+
+LIB_DIR=../lib
+CF_LIB_PREFIX(cf_prefix)
+LIB_PREFIX=$cf_prefix
+AC_SUBST(LIB_PREFIX)
+
+LIB_SUFFIX=
+AC_SUBST(LIB_SUFFIX)
+
+###############################################################################
+
 AC_MSG_CHECKING(if you want to build a separate terminfo library)
 AC_ARG_WITH(termlib,
        [  --with-termlib          generate separate terminfo library],
@@ -267,42 +305,6 @@ if test $with_gpm = yes ; then
        ],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)
-test -z "$cf_list_models" && cf_list_models=normal
-AC_MSG_RESULT($cf_list_models)
-
-### Use the first model as the default, and save its suffix for use in building
-### up test-applications.
-DFT_LWR_MODEL=`echo $cf_list_models | $AWK '{print $1}'`
-CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl
-CF_LIB_SUFFIX($DFT_LWR_MODEL,DFT_DEP_SUFFIX)dnl
-CF_LIB_TYPE($DFT_LWR_MODEL,DFT_ARG_SUFFIX)dnl
-CF_OBJ_SUBDIR($DFT_LWR_MODEL,DFT_OBJ_SUBDIR)dnl
-AC_SUBST(DFT_OBJ_SUBDIR)dnl    the default object-directory ("obj")
-AC_SUBST(DFT_LWR_MODEL)dnl     the default model ("normal")
-AC_SUBST(DFT_UPR_MODEL)dnl     the default model ("NORMAL")
-AC_SUBST(DFT_DEP_SUFFIX)dnl    the corresponding library-suffix (".a")
-AC_SUBST(DFT_ARG_SUFFIX)dnl    the string to append to "-lncurses" ("")
-AC_SUBST(cf_list_models)dnl    the complete list of models ("normal debug")
-
-TINFO_NAME=tinfo
-AC_SUBST(TINFO_NAME)
-
-LIB_NAME=ncurses
-AC_SUBST(LIB_NAME)
-
-LIB_DIR=../lib
-CF_LIB_PREFIX(cf_prefix)
-LIB_PREFIX=$LIB_DIR/$cf_prefix
-AC_SUBST(LIB_PREFIX)
-
 dnl Not all ports of gcc support the -g option
 
 if test X"$CC_G_OPT" = X"" ; then
@@ -317,6 +319,7 @@ if test X"$CXX_G_OPT" = X"" ; then
 fi
 AC_SUBST(CXX_G_OPT)
 
+AC_MSG_CHECKING(for default loader flags)
 case $DFT_LWR_MODEL in
 normal)  LD_MODEL=''   ;;
 debug)   LD_MODEL=$CC_G_OPT ;;
@@ -324,6 +327,7 @@ profile) LD_MODEL='-pg';;
 shared)  LD_MODEL=''   ;;
 esac
 AC_SUBST(LD_MODEL)dnl          the type of link (e.g., -g or -pg)
+AC_MSG_RESULT($LD_MODEL)
 
 AC_MSG_CHECKING(if rpath option should be used)
 AC_ARG_ENABLE(rpath,
@@ -348,15 +352,9 @@ CF_HELP_MESSAGE(Fine-Tuning Your Configuration:)
 AC_MSG_CHECKING(if you wish to install ncurses overwriting curses)
 AC_ARG_ENABLE(overwrite,
        [  --disable-overwrite     leave out the link to -lcurses],
-       [with_overwrite=$enableval
-        test "$with_overwrite" = no && \
-        test "x$includedir" = 'x${prefix}/include' && \
-               includedir='$(prefix)/include/ncurses'
-       ],
+       [with_overwrite=$enableval],
        [with_overwrite=yes])
 AC_MSG_RESULT($with_overwrite)
-AC_MSG_CHECKING(where we will install curses.h)
-AC_MSG_RESULT($includedir)
 
 AC_MSG_CHECKING(if external terminfo-database is used)
 AC_ARG_ENABLE(database,
@@ -366,14 +364,6 @@ AC_ARG_ENABLE(database,
 AC_MSG_RESULT($with_database)
 test $with_database != no && AC_DEFINE(USE_DATABASE)
 
-AC_MSG_CHECKING(if you want to build with function extensions)
-AC_ARG_ENABLE(ext-funcs,
-       [  --disable-ext-funcs     disable function-extensions],
-       [with_ext_funcs=$enableval],
-       [with_ext_funcs=yes])
-AC_MSG_RESULT($with_ext_funcs)
-test "$with_ext_funcs" = yes && AC_DEFINE(NCURSES_EXT_FUNCS)
-
 AC_MSG_CHECKING(for list of fallback descriptions)
 AC_ARG_WITH(fallbacks,
        [  --with-fallbacks=XXX    specify list of fallback terminal descriptions],
@@ -480,6 +470,15 @@ fi
 test "$with_links" = yes && AC_DEFINE(USE_LINKS)
 test "$with_symlinks" = yes && AC_DEFINE(USE_SYMLINKS)
 
+###   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-bsdpad to have tputs process BSD-style prefix padding
 AC_MSG_CHECKING(if tputs should process BSD-style prefix padding)
 AC_ARG_ENABLE(bsdpad,
@@ -489,6 +488,33 @@ AC_ARG_ENABLE(bsdpad,
 AC_MSG_RESULT($with_bsdpad)
 test "$with_bsdpad" = yes && AC_DEFINE(BSD_TPUTS)
 
+### 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=$withval],
+       [with_rcs_ids=no])
+AC_MSG_RESULT($with_rcs_ids)
+test "$with_rcs_ids" = yes && AC_DEFINE(USE_RCS_IDS)
+
+###############################################################################
+CF_HELP_MESSAGE(Extensions:)
+
+### Note that some functions (such as const) are normally disabled anyway.
+AC_MSG_CHECKING(if you want to build with function extensions)
+AC_ARG_ENABLE(ext-funcs,
+       [  --disable-ext-funcs     disable function-extensions],
+       [with_ext_funcs=$enableval],
+       [with_ext_funcs=yes])
+AC_MSG_RESULT($with_ext_funcs)
+if test "$with_ext_funcs" = yes ; then
+       AC_DEFINE(HAVE_HAS_KEY)
+       AC_DEFINE(HAVE_RESIZETERM)
+       AC_DEFINE(HAVE_USE_DEFAULT_COLORS)
+       AC_DEFINE(HAVE_WRESIZE)
+       AC_DEFINE(NCURSES_EXT_FUNCS)
+fi
+
 ###   use option --enable-const to turn on use of const beyond that in XSI.
 AC_MSG_CHECKING(for extended use of const keyword)
 AC_ARG_ENABLE(const,
@@ -503,14 +529,42 @@ if test "$with_ext_const" = yes ; then
 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=$withval],
-       [with_rcs_ids=no])
-AC_MSG_RESULT($with_rcs_ids)
-test "$with_rcs_ids" = yes && AC_DEFINE(USE_RCS_IDS)
+###   use option --enable-hashmap to turn on use of hashmap scrolling logic
+AC_MSG_CHECKING(if you want hashmap scrolling-optimization code)
+AC_ARG_ENABLE(hashmap,
+       [  --enable-hashmap        compile with hashmap scrolling-optimization code],
+       [with_hashmap=$enableval],
+       [with_hashmap=yes])
+AC_MSG_RESULT($with_hashmap)
+test "$with_hashmap" = yes && AC_DEFINE(USE_HASHMAP)
+
+AC_MSG_CHECKING(if you want \$NCURSES_NO_PADDING code)
+AC_ARG_ENABLE(no-padding,
+       [  --enable-no-padding     compile with \$NCURSES_NO_PADDING code],
+       [with_no_padding=$enableval],
+       [with_no_padding=$with_ext_funcs])
+AC_MSG_RESULT($with_no_padding)
+test "$with_no_padding" = yes && AC_DEFINE(NCURSES_NO_PADDING)
+
+###   use option --enable-sigwinch to turn on use of SIGWINCH logic
+AC_MSG_CHECKING(if you want SIGWINCH handler)
+AC_ARG_ENABLE(sigwinch,
+       [  --enable-sigwinch       compile with SIGWINCH handler],
+       [with_sigwinch=$enableval],
+       [with_sigwinch=$with_ext_funcs])
+AC_MSG_RESULT($with_sigwinch)
+test "$with_sigwinch" = yes && AC_DEFINE(USE_SIGWINCH)
+
+###   use option --enable-tcap-names to allow user to define new capabilities
+AC_MSG_CHECKING(if you want user-definable terminal capabilities like termcap)
+AC_ARG_ENABLE(tcap-names,
+       [  --enable-tcap-names     compile with user-definable terminal capabilities],
+       [with_tcap_names=$enableval],
+       [with_tcap_names=$with_ext_funcs])
+AC_MSG_RESULT($with_tcap_names)
+NCURSES_XNAMES=0
+test "$with_tcap_names" = yes && NCURSES_XNAMES=1
+AC_SUBST(NCURSES_XNAMES)
 
 ###############################################################################
 CF_HELP_MESSAGE(Experimental Code:)
@@ -521,14 +575,14 @@ 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-colorfgbg to turn on use of $COLORFGBG environment
+AC_MSG_CHECKING(if you want experimental colorfgbg code)
+AC_ARG_ENABLE(hard-tabs,
+       [  --enable-colorfgbg      compile with experimental \$COLORFGBG code],
+       [with_colorfgbg=$enableval],
+       [with_colorfgbg=$with_develop])
+AC_MSG_RESULT($with_colorfgbg)
+test "$with_colorfgbg" = yes && AC_DEFINE(USE_COLORFGBG)
 
 ###   use option --enable-hard-tabs to turn on use of hard-tabs optimize
 AC_MSG_CHECKING(if you want experimental hard-tabs code)
@@ -539,23 +593,6 @@ AC_ARG_ENABLE(hard-tabs,
 AC_MSG_RESULT($with_hardtabs)
 test "$with_hardtabs" = yes && AC_DEFINE(USE_HARD_TABS)
 
-###   use option --enable-hashmap to turn on use of hashmap scrolling logic
-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=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,
        [  --enable-safe-sprintf   compile with experimental safe-sprintf code],
@@ -565,35 +602,16 @@ AC_MSG_RESULT($with_safe_sprintf)
 test "$with_safe_sprintf" = yes && AC_DEFINE(USE_SAFE_SPRINTF)
 
 ###   use option --disable-scroll-hints to turn off use of scroll-hints scrolling logic
+# when hashmap is used scroll hints are useless
+if test "$with_hashmap" = no ; then
 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],
+       [  --disable-scroll-hints  compile without scroll-hints code],
        [with_scroll_hints=$enableval],
-       [with_scroll_hints=yes;
-        # when hashmap is used scroll hints are useless
-        test $with_hashmap = yes && with_scroll_hints=no])
+       [with_scroll_hints=yes])
 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=yes])
-AC_MSG_RESULT($with_sigwinch)
-test "$with_sigwinch" = yes && AC_DEFINE(USE_SIGWINCH)
+fi
 
 ###   use option --enable-widec to turn on use of wide-character support
 AC_MSG_CHECKING(if you want experimental wide-character code)
@@ -602,7 +620,10 @@ AC_ARG_ENABLE(widec,
        [with_widec=$enableval],
        [with_widec=no])
 AC_MSG_RESULT($with_widec)
-test "$with_widec" = yes && AC_DEFINE(USE_WIDEC_SUPPORT)
+if test "$with_widec" = yes ; then
+       LIB_SUFFIX="w${LIB_SUFFIX}"
+       AC_DEFINE(USE_WIDEC_SUPPORT)
+fi
 
 ###   use option --enable-xmc-glitch to turn on use of magic-cookie optimize
 AC_MSG_CHECKING(if you want experimental xmc code)
@@ -678,9 +699,7 @@ AC_CHECK_LIB(bsd, gettimeofday,
        AC_DEFINE(HAVE_GETTIMEOFDAY)
        LIBS="$LIBS -lbsd")])dnl CLIX: bzero, select, gettimeofday
 
-MATH_LIB=""
-AC_CHECK_FUNC(sin,,
-       AC_CHECK_LIB(m, sin,[MATH_LIB="-lm"]))
+CF_MATH_LIB(MATH_LIB,sin(x))
 AC_SUBST(MATH_LIB)
 
 ###    Checks for header files.
@@ -695,19 +714,18 @@ getopt.h \
 libc.h \
 limits.h \
 locale.h \
+poll.h \
 sys/bsdtypes.h \
 sys/ioctl.h \
 sys/param.h \
-poll.h \
+sys/poll.h \
 sys/select.h \
-sys/stropts.h \
 sys/time.h \
 sys/times.h \
 termio.h \
 termios.h \
 ttyent.h \
 unistd.h \
-values.h \
 )
 
 # check for ISC (this may also define _POSIX_SOURCE)
@@ -735,9 +753,11 @@ CF_LINK_DATAONLY
 CF_SPEED_TYPE
 
 ###    Checks for library functions.
-AC_CHECK_FUNCS( getcwd \
+AC_CHECK_FUNCS( \
+getcwd \
 getttynam \
 memccpy \
+mkstemp \
 nanosleep \
 poll \
 remove \
@@ -756,8 +776,6 @@ vfscanf \
 vsnprintf \
 vsscanf \
 )
-
-
 if test "$with_getcap" = "yes" ; then
        CF_CGETENT
 fi
@@ -776,6 +794,7 @@ AC_TYPE_SIGNAL
 CF_TYPE_SIGACTION
 CF_SIZECHANGE
 CF_FUNC_MEMMOVE
+CF_FUNC_POLL
 
 dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS
 if test -z "$cf_user_CFLAGS" ; then
@@ -882,21 +901,22 @@ if test   "$cf_cv_prog_gnat_correct" = yes; then
    CF_WITH_PATH(ada-include,
        [  --with-ada-include=DIR  Ada includes are in DIR],
        ADA_INCLUDE,
-       PREFIX/lib/gnu-Ada/adainclude,
-       [$]prefix/lib/gnu-Ada/adainclude)
+       PREFIX/lib/ada/adainclude,
+       [$]prefix/lib/ada/adainclude)
    AC_SUBST(ADA_INCLUDE)
 
    CF_WITH_PATH(ada-objects,
        [  --with-ada-objects=DIR  Ada objects are in DIR],
        ADA_OBJECTS,
-       PREFIX/lib/gnu-Ada/adalib,
-       [$]prefix/lib/gnu-Ada/adalib)
+       PREFIX/lib/ada/adalib,
+       [$]prefix/lib/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
+# This has been fixed!
+#   if test $with_shared = no
+#   then
+#      AC_MSG_WARN(Ada95 applications will not link properly with static libraries)
+#   fi
 fi
 fi
 
@@ -930,14 +950,50 @@ LIB_SUBSETS="${LIB_SUBSETS}base"
 test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs"
 AC_MSG_RESULT($LIB_SUBSETS)
 
+LIB_TRACING=DEBUG
+case "$CFLAGS" in
+*-DTRACE*)
+       LIB_TRACING=all
+       ;;
+esac
+
 ### Construct the list of include-directories to be generated
 CF_INCLUDE_DIRS
 CF_ADA_INCLUDE_DIRS
 
+### Build up pieces for makefile rules
+AC_MSG_CHECKING(default library suffix)
+CF_LIB_TYPE($DFT_LWR_MODEL,DFT_ARG_SUFFIX)dnl
+AC_SUBST(DFT_ARG_SUFFIX)dnl the string to append to "-lncurses" ("")
+AC_MSG_RESULT($DFT_ARG_SUFFIX)
+
+AC_MSG_CHECKING(default library-dependency suffix)
+CF_LIB_SUFFIX($DFT_LWR_MODEL,DFT_DEP_SUFFIX)dnl
+AC_SUBST(DFT_DEP_SUFFIX)dnl the corresponding library-suffix (".a")
+AC_MSG_RESULT($DFT_DEP_SUFFIX)
+
+AC_MSG_CHECKING(default object directory)
+CF_OBJ_SUBDIR($DFT_LWR_MODEL,DFT_OBJ_SUBDIR)dnl
+AC_SUBST(DFT_OBJ_SUBDIR)dnl the default object-directory ("obj")
+AC_MSG_RESULT($DFT_OBJ_SUBDIR)
+
+TINFO_LIST="$SHLIB_LIST"
+test $with_termlib = yes && SHLIB_LIST="$SHLIB_LIST -ltinfo${LIB_SUFFIX}"
+
+AC_MSG_CHECKING(where we will install curses.h)
+test "$with_overwrite" = no && \
+test "x$includedir" = 'x${prefix}/include' && \
+       includedir='$(prefix)/include/ncurses'${LIB_SUFFIX}
+AC_MSG_RESULT($includedir)
+
+AC_SUBST(EXTRA_LIBS)
+AC_SUBST(TINFO_LIST)
+AC_SUBST(SHLIB_LIST)
+
 ### Set up low-level terminfo dependencies for makefiles.  Note that we
 ### could override this.
 if test "$with_termlib" = yes ; then
-       TEST_DEPS="${LIB_PREFIX}${TINFO_NAME}${DFT_DEP_SUFFIX}"
+       TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_NAME}${DFT_DEP_SUFFIX}"
        TEST_ARGS="-l${TINFO_NAME}${DFT_ARG_SUFFIX}"
 fi
 PROG_DEPS="$TEST_DEPS"
@@ -970,7 +1026,9 @@ CF_LIST_MODELS="$cf_list_models"
 DFT_LWR_MODEL="$DFT_LWR_MODEL"
 LDCONFIG="$LDCONFIG"
 LIB_NAME="$LIB_NAME"
+LIB_SUFFIX="$LIB_SUFFIX"
 LIB_SUBSETS="$LIB_SUBSETS"
+LIB_TRACING="$LIB_TRACING"
 SRC_SUBDIRS="$SRC_SUBDIRS"
 TINFO_NAME="$TINFO_NAME"
 WITH_ECHO="$with_echo"
@@ -981,6 +1039,7 @@ 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_with_cxx_binding="$cf_with_cxx_binding"
+cf_cv_shlib_version="$cf_cv_shlib_version"
 target="$target"
 
 ],sort)dnl
diff --git a/dist.mk b/dist.mk
index 090d2f33f5d6f711b266986c1e78f7906b2c76bc..5564594972d023940d17d8df1e2099b7b5bc1380 100644 (file)
--- a/dist.mk
+++ b/dist.mk
@@ -1,4 +1,4 @@
-# $Id: dist.mk,v 1.172 1999/10/23 12:29:39 tom Exp $
+# $Id: dist.mk,v 1.209 2000/07/08 19:43:10 tom Exp $
 # Makefile for creating ncurses distributions.
 #
 # This only needs to be used directly as a makefile by developers, but
@@ -9,8 +9,8 @@ SHELL = /bin/sh
 
 # These define the major/minor/patch versions of ncurses.
 NCURSES_MAJOR = 5
-NCURSES_MINOR = 0
-NCURSES_PATCH = 19991023
+NCURSES_MINOR = 1
+NCURSES_PATCH = 20000708
 
 # We don't append the patch to the version, since this only applies to releases
 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
@@ -18,7 +18,16 @@ VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
 DUMP   = lynx -dump
 DUMP2  = $(DUMP) -nolist
 
-ALL    = ANNOUNCE announce.html misc/ncurses-intro.doc misc/hackguide.doc
+GNATHTML= `type -p gnathtml || type -p gnathtml.pl`
+
+# man2html 3.0.1 is a Perl script which assumes that pages are fixed size.
+# Not all man programs agree with this assumption; some use half-spacing, which
+# has the effect of lengthening the text portion of the page -- so man2html
+# would remove some text.  The man program on Redhat 6.1 appears to work with
+# man2html if we set the top/bottom margins to 6 (the default is 7).
+MAN2HTML= man2html -botm=6 -topm=6 -cgiurl '$$title.$$section$$subsection.html'
+
+ALL    = ANNOUNCE doc/html/announce.html doc/ncurses-intro.doc doc/hackguide.doc manhtml adahtml
 
 all :  $(ALL)
 
@@ -26,19 +35,66 @@ dist:       $(ALL)
        (cd ..;  tar cvf ncurses-$(VERSION).tar `sed <ncurses-$(VERSION)/MANIFEST 's/^./ncurses-$(VERSION)/'`;  gzip ncurses-$(VERSION).tar)
 
 distclean:
-       rm -f $(ALL)
+       rm -f $(ALL) subst.tmp subst.sed MANIFEST.tmp
 
 # Don't mess with announce.html.in unless you have lynx available!
-announce.html: announce.html.in
-       sed 's,@VERSION@,$(VERSION),' <announce.html.in >announce.html
+doc/html/announce.html: announce.html.in
+       sed 's,@VERSION@,$(VERSION),' <announce.html.in > $@
+
+ANNOUNCE : doc/html/announce.html
+       $(DUMP) doc/html/announce.html > $@
 
-ANNOUNCE : announce.html
-       $(DUMP) announce.html >ANNOUNCE
+doc/ncurses-intro.doc: doc/html/ncurses-intro.html
+       $(DUMP2) doc/html/ncurses-intro.html > $@
+doc/hackguide.doc: doc/html/hackguide.html
+       $(DUMP2) doc/html/hackguide.html > $@
 
-misc/ncurses-intro.doc: misc/ncurses-intro.html
-       $(DUMP2) misc/ncurses-intro.html > misc/ncurses-intro.doc
-misc/hackguide.doc: misc/hackguide.html
-       $(DUMP2) misc/hackguide.html > misc/hackguide.doc
+# Note that this rule assumes the manpages were installed - it does not use
+# the copies in the build tree except to get the list of names.
+manhtml: MANIFEST
+       @rm -f doc/html/man/*.html
+       @mkdir -p doc/html/man
+       @rm -f subst.tmp ;
+       @for f in man/*.[0-9]*; do \
+          m=`basename $$f` ;\
+          x=`echo $$m | awk -F. '{print $$2;}'` ;\
+          xu=`echo $$x | dd conv=ucase 2>/dev/null` ;\
+          if [ "$${x}" != "$${xu}" ]; then \
+            echo "s/$${xu}/$${x}/g" >> subst.tmp ;\
+          fi ;\
+       done
+       @sort < subst.tmp | uniq > subst.sed
+       @rm -f subst.tmp
+       @for f in man/*.[0-9]* ; do \
+          m=`basename $$f` ;\
+          g=$${m}.html ;\
+          if [ -f doc/html/$$g ]; then chmod +w doc/html/$$g; fi;\
+          echo "Converting $$m to HTML" ;\
+          man $$f | tr '\255' '-' | $(MAN2HTML) | \
+          sed -f subst.sed |\
+          sed -e 's/"curses.3x.html"/"ncurses.3x.html"/g' \
+          > doc/html/man/$$g ;\
+       done
+       @rm -f subst.sed
+       @sed -e "\%./doc/html/man/%d" < MANIFEST > MANIFEST.tmp
+       @find ./doc/html/man -type f -print >> MANIFEST.tmp
+       @chmod u+w MANIFEST
+       @sort -u < MANIFEST.tmp > MANIFEST
+       @rm -f MANIFEST.tmp
+
+#
+# Please note that this target can only be properly built if the build of the
+# Ada95 subdir has been done.  The reason is, that the gnathtml tool uses the
+# .ali files generated by the Ada95 compiler during the build process.  These
+# .ali files contain cross referencing information required by gnathtml.
+adahtml: MANIFEST
+       if [ ! -z "$(GNATHTML)" ]; then \
+         (cd ./Ada95/gen ; make html) ;\
+         sed -e "\%./doc/html/ada/%d" < MANIFEST > MANIFEST.tmp ;\
+         find ./doc/html/ada -type f -print >> MANIFEST.tmp ;\
+         sort -u < MANIFEST.tmp > MANIFEST ;\
+         rm -f MANIFEST.tmp ;\
+       fi
 
 # Prepare distribution for version control
 vcprepare:
similarity index 99%
rename from misc/hackguide.doc
rename to doc/hackguide.doc
index 5fd49b3ada340228e9350c015060d8b8ce7e5f19..e9828d2919fab62f53a0e0f7efbf00c482dbdd6c 100644 (file)
@@ -38,7 +38,6 @@
    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
        (including the original BSD curses and System V curses.
      * Conformant with the XSI Curses standard issued as part of XPG4 by
@@ -93,7 +92,6 @@ How to Design Extensions
    
    We encourage developers to support OS-specific optimizations and
    methods not available under POSIX/ANSI, provided only that:
-   
      * All such code is properly conditioned so the build process does
        not attempt to compile it under a plain ANSI/POSIX environment.
      * Adding such implementation methods does not introduce
@@ -108,13 +106,11 @@ How to Design Extensions
                                        
    There are three kinds of documentation associated with this package.
    Each has a different preferred format:
-   
      * Package-internal files (README, INSTALL, TO-DO etc.)
      * Manual pages.
      * Everything else (i.e., narrative documentation).
        
    Our conventions are simple:
-   
     1. Maintain package-internal files in plain text. The expected viewer
        for them more(1) or an editor window; there's no point in
        elaborate mark-up.
@@ -150,7 +146,6 @@ How to Design Extensions
    show us they've taken these steps at the head of our queue. This means
    that if you don't, you'll probably end up at the tail end and have to
    wait a while.
-   
     1. Develop a recipe to reproduce the bug.
        Bugs we can reproduce are likely to be fixed very quickly, often
        within days. The most effective single thing you can do to get a
similarity index 95%
rename from Ada95/html/index.html
rename to doc/html/Ada95.html
index 333c1321c78b02893b04d3df13f9cca7cfc9d0f8..89073216eec15d871ddd8986b910887dfb680cfe 100644 (file)
@@ -1,13 +1,16 @@
 <!DOCTYPE HTML
  PUBLIC "-//IETF//DTD HTML 3.0//EN">
+<!--
+  $Id: Ada95.html,v 1.1 2000/03/05 18:21:59 juergen Exp $
+-->
 <HTML>
 
 <HEAD>
 <TITLE>Ada95 Binding for ncurses</Title>
 </HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <H1>Ada95 Binding for ncurses</H1>
-The ncurses Ada95 binding is &copy; 1996-1999 by 
+The ncurses Ada95 binding is &copy; 1996-2000 by 
 <A HREF="mailto:juergen.pfeifer@gmx.net">J&uuml;rgen Pfeifer</A>.
 <P>
                                                                          
@@ -27,11 +30,10 @@ This binding comes AS IS with no warranty, implied or expressed.
 <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, 2.0, 2.2
-ncurses-4.x and the 
+I did the development on an Intel box running the latest stable release of
+<A HREF="http://www.linux.org">Linux</A>, ncurses and the most recent released 
 <A HREF="http://www.gnat.com">GNU Ada Translator</A>
-gnat versions 3.10p to 3.11p. For any older versions of ncurses and gnat
+gnat versions. 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
@@ -39,7 +41,7 @@ If you don't have this program, you can get the FSF version
 <LI>Ada programs are supposed to be readable. One of my
 favourite methods to make code readable is to use expressive
 names for the identifiers. You can find a list of a mapping
-of the cryptic curses names to the Ada names in this <A HREF="table.html">table</A>.</LI>
+of the cryptic curses names to the Ada names in this <A HREF="ada/table.html">table</A>.</LI>
 <LI>This is not a typical one-2-one interface mapping. It is 
 close to one-2-one on the functional level. Each (n)curses function
 has it's counterpart with a more or less similar formal parameter list
@@ -80,7 +82,6 @@ forms subsystem.</LI>
 <LI>The *_IO packages are currently output only.</LI>
 </UL>
         
-
 <H2>Hierarchy of packages</H2>
 <UL>
 <LI><A HREF="ada/terminal_interface__ads.htm">Terminal_Interface</A>
diff --git a/doc/html/ada/files.htm b/doc/html/ada/files.htm
new file mode 100644 (file)
index 0000000..682207c
--- /dev/null
@@ -0,0 +1,5 @@
+<HTML><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/doc/html/ada/files/T.htm b/doc/html/ada/files/T.htm
new file mode 100644 (file)
index 0000000..46b0a00
--- /dev/null
@@ -0,0 +1,69 @@
+<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-aux__adb.htm" TARGET="main">terminal_interface-curses-aux.adb</A>
+<LI><A HREF="../terminal_interface-curses-aux__ads.htm" TARGET="main">terminal_interface-curses-aux.ads</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-alpha__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-alpha.adb</A>
+<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__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-alphanumeric.adb</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__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-enumeration-ada.adb</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__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-enumeration.adb</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__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-intfield.adb</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__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-ipv4_address.adb</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__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-numeric.adb</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__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-regexp.adb</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__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-user-choice.adb</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__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-user.adb</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__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types.adb</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__adb.htm" TARGET="main">terminal_interface-curses-forms-field_user_data.adb</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__adb.htm" TARGET="main">terminal_interface-curses-forms-form_user_data.adb</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__adb.htm" TARGET="main">terminal_interface-curses-forms.adb</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__adb.htm" TARGET="main">terminal_interface-curses-menus-item_user_data.adb</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__adb.htm" TARGET="main">terminal_interface-curses-menus-menu_user_data.adb</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__adb.htm" TARGET="main">terminal_interface-curses-menus.adb</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__adb.htm" TARGET="main">terminal_interface-curses-mouse.adb</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__adb.htm" TARGET="main">terminal_interface-curses-panels-user_data.adb</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__adb.htm" TARGET="main">terminal_interface-curses-panels.adb</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-aux__adb.htm" TARGET="main">terminal_interface-curses-text_io-aux.adb</A>
+<LI><A HREF="../terminal_interface-curses-text_io-aux__ads.htm" TARGET="main">terminal_interface-curses-text_io-aux.ads</A>
+<LI><A HREF="../terminal_interface-curses-text_io-complex_io__adb.htm" TARGET="main">terminal_interface-curses-text_io-complex_io.adb</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__adb.htm" TARGET="main">terminal_interface-curses-text_io-decimal_io.adb</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__adb.htm" TARGET="main">terminal_interface-curses-text_io-enumeration_io.adb</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__adb.htm" TARGET="main">terminal_interface-curses-text_io-fixed_io.adb</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__adb.htm" TARGET="main">terminal_interface-curses-text_io-float_io.adb</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__adb.htm" TARGET="main">terminal_interface-curses-text_io-integer_io.adb</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__adb.htm" TARGET="main">terminal_interface-curses-text_io-modular_io.adb</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__adb.htm" TARGET="main">terminal_interface-curses-text_io.adb</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__adb.htm" TARGET="main">terminal_interface-curses.adb</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/doc/html/ada/funcs.htm b/doc/html/ada/funcs.htm
new file mode 100644 (file)
index 0000000..96e0b14
--- /dev/null
@@ -0,0 +1,27 @@
+<HTML><HEAD><TITLE></TITLE></HEAD>
+<BODY>
+<H2 ALIGN=CENTER>Functions/Procedures</H2>
+<A HREF="funcs/ .htm">[ ]</A>
+<A HREF="funcs/A.htm">[A]</A>
+<A HREF="funcs/B.htm">[B]</A>
+<A HREF="funcs/C.htm">[C]</A>
+<A HREF="funcs/D.htm">[D]</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/H.htm">[H]</A>
+<A HREF="funcs/I.htm">[I]</A>
+<A HREF="funcs/K.htm">[K]</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/O.htm">[O]</A>
+<A HREF="funcs/P.htm">[P]</A>
+<A HREF="funcs/Q.htm">[Q]</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>
+<A HREF="funcs/W.htm">[W]</A>
+</BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/A.htm b/doc/html/ada/funcs/A.htm
new file mode 100644 (file)
index 0000000..f32aaba
--- /dev/null
@@ -0,0 +1,18 @@
+<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__adb.htm#958_16" TARGET="main">Ahead</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user__adb.htm#52_16" TARGET="main">Allocate_Arg</A>
+<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>
+<LI><A HREF="../terminal_interface-curses__adb.htm#56_12" TARGET="main">ASF</A>
+<LI><A HREF="../terminal_interface-curses-text_io-aux__ads.htm#41_51" TARGET="main">Aux -  terminal_interface-curses-text_io-aux.ads:41</A>
+<LI><A HREF="../terminal_interface-curses-text_io-float_io__adb.htm#46_12" TARGET="main">Aux -  terminal_interface-curses-text_io-float_io.adb:46</A>
+<LI><A HREF="../terminal_interface-curses-text_io-decimal_io__adb.htm#46_12" TARGET="main">Aux -  terminal_interface-curses-text_io-decimal_io.adb:46</A>
+<LI><A HREF="../terminal_interface-curses-text_io-enumeration_io__adb.htm#47_12" TARGET="main">Aux -  terminal_interface-curses-text_io-enumeration_io.adb:47</A>
+<LI><A HREF="../terminal_interface-curses-text_io-fixed_io__adb.htm#46_12" TARGET="main">Aux -  terminal_interface-curses-text_io-fixed_io.adb:46</A>
+<LI><A HREF="../terminal_interface-curses-text_io-integer_io__adb.htm#46_12" TARGET="main">Aux -  terminal_interface-curses-text_io-integer_io.adb:46</A>
+<LI><A HREF="../terminal_interface-curses-text_io-modular_io__adb.htm#46_12" TARGET="main">Aux -  terminal_interface-curses-text_io-modular_io.adb:46</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/B.htm b/doc/html/ada/funcs/B.htm
new file mode 100644 (file)
index 0000000..46b0d30
--- /dev/null
@@ -0,0 +1,10 @@
+<HTML><HEAD><TITLE>B</TITLE></HEAD>
+<BODY>
+<H2>Functions - B</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2051_16" TARGET="main">Baud</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#764_16" TARGET="main">Beeper</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#974_16" TARGET="main">Behind</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#64_16" TARGET="main">Bottompanel</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/C.htm b/doc/html/ada/funcs/C.htm
new file mode 100644 (file)
index 0000000..47beaff
--- /dev/null
@@ -0,0 +1,33 @@
+<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__adb.htm#2211_16" TARGET="main">Canchangecolor</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#784_16" TARGET="main">Cbreak</A>
+<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-forms__adb.htm#68_13" TARGET="main">CInt_2_FOS</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#76_13" TARGET="main">CInt_2_FrmOS</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#71_13" TARGET="main">CInt_2_IOS</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#63_13" TARGET="main">CInt_2_MOS</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#971_16" TARGET="main">Clear_Ok</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__adb.htm#2228_16" TARGET="main">Colorcontent</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__adb.htm#1282_16" TARGET="main">Copywin</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#773_16" TARGET="main">Count -  terminal_interface-curses-forms.adb:773</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#911_16" TARGET="main">Count -  terminal_interface-curses-menus.adb:911</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__adb.htm#1039_16" TARGET="main">Current_Fld</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#299_16" TARGET="main">Curr_Item</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2315_16" TARGET="main">Curs_Set</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__adb.htm#71_15" TARGET="main">C_E_Array</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#756_16" TARGET="main">C_Fields</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>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#922_16" TARGET="main">C_Mitems</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/D.htm b/doc/html/ada/funcs/D.htm
new file mode 100644 (file)
index 0000000..9472a37
--- /dev/null
@@ -0,0 +1,22 @@
+<HTML><HEAD><TITLE>D</TITLE></HEAD>
+<BODY>
+<H2>Functions - D</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1999_16" TARGET="main">Defkey</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2247_16" TARGET="main">Def_Prog_Mode</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2249_16" TARGET="main">Def_Shell_Mode</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2031_16" TARGET="main">Delayoutput</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#155_16" TARGET="main">Del_Panel</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#329_16" TARGET="main">Derwin</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#125_16" TARGET="main">Descname -  terminal_interface-curses-menus.adb:125</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#269_16" TARGET="main">Descname -  terminal_interface-curses-menus.adb:269</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#277_16" TARGET="main">Descname -  terminal_interface-curses-menus.adb:277</A>
+<LI><A HREF="../terminal_interface-curses-text_io-decimal_io__adb.htm#47_12" TARGET="main">DIO</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#128_14" TARGET="main">Dispatch_Event</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1074_16" TARGET="main">Do_Update</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#972_16" TARGET="main">Driver</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#352_16" TARGET="main">Dupwin</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#150_16" TARGET="main">Dup_Field</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#558_16" TARGET="main">Dyn_Info</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/E.htm b/doc/html/ada/funcs/E.htm
new file mode 100644 (file)
index 0000000..b9f13e3
--- /dev/null
@@ -0,0 +1,11 @@
+<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__adb.htm#822_16" TARGET="main">Echo</A>
+<LI><A HREF="../terminal_interface-curses-text_io-enumeration_io__adb.htm#48_12" TARGET="main">EIO</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#144_16" TARGET="main">Endwin</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration__ads.htm#43_53" TARGET="main">Enumeration</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2059_16" TARGET="main">Erasechar</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/F.htm b/doc/html/ada/funcs/F.htm
new file mode 100644 (file)
index 0000000..1df765f
--- /dev/null
@@ -0,0 +1,46 @@
+<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__adb.htm#467_16" TARGET="main">Field_Back -  terminal_interface-curses-forms.adb:467</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#477_16" TARGET="main">Field_Back -  terminal_interface-curses-forms.adb:477</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#254_16" TARGET="main">Field_Buffer -  terminal_interface-curses-forms.adb:254</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#265_16" TARGET="main">Field_Buffer -  terminal_interface-curses-forms.adb:265</A>
+<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-forms__adb.htm#423_16" TARGET="main">Field_Fore -  terminal_interface-curses-forms.adb:423</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#433_16" TARGET="main">Field_Fore -  terminal_interface-curses-forms.adb:433</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#212_16" TARGET="main">Field_Just</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#373_16" TARGET="main">Field_Opts</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#351_16" TARGET="main">Field_Opts_Off</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#348_16" TARGET="main">Field_Opts_On</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#506_16" TARGET="main">Field_Pad</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#292_16" TARGET="main">Field_Status</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_user_data__adb.htm#72_16" TARGET="main">Field_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-text_io-complex_io__adb.htm#45_12" TARGET="main">FIO -  terminal_interface-curses-text_io-complex_io.adb:45</A>
+<LI><A HREF="../terminal_interface-curses-text_io-float_io__adb.htm#47_12" TARGET="main">FIO -  terminal_interface-curses-text_io-float_io.adb:47</A>
+<LI><A HREF="../terminal_interface-curses-text_io-fixed_io__adb.htm#47_12" TARGET="main">FIXIO</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#774_16" TARGET="main">Flash</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#527_16" TARGET="main">Fld_Info</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>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2041_16" TARGET="main">Flushinp</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#888_16" TARGET="main">Form_Opts</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#866_16" TARGET="main">Form_Opts_Off</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#863_16" TARGET="main">Form_Opts_On</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#83_16" TARGET="main">Form_Request_Name -  terminal_interface-curses-forms.adb:83</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#91_16" TARGET="main">Form_Request_Name -  terminal_interface-curses-forms.adb:91</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#627_16" TARGET="main">Form_Sub</A>
+<LI><A HREF="../terminal_interface-curses-forms-form_user_data__adb.htm#73_16" TARGET="main">Form_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#599_16" TARGET="main">Form_Win</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#64_13" TARGET="main">FOS_2_CInt</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#824_16" TARGET="main">Free -  terminal_interface-curses-forms.adb:824</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#957_16" TARGET="main">Free -  terminal_interface-curses-menus.adb:957</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#122_17" TARGET="main">Freeargs</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#130_16" TARGET="main">Freeitem</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#132_16" TARGET="main">Free_Field</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#120_17" TARGET="main">Free_Type</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#72_13" TARGET="main">FrmOS_2_CInt</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#995_16" TARGET="main">Frm_Driver</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#55_12" TARGET="main">F_Array</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/G.htm b/doc/html/ada/funcs/G.htm
new file mode 100644 (file)
index 0000000..d90750d
--- /dev/null
@@ -0,0 +1,21 @@
+<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-mouse__adb.htm#68_16" TARGET="main">Getmouse</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#61_13" TARGET="main">Get_Arg</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#1083_16" TARGET="main">Get_Fieldindex</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#58_13" TARGET="main">Get_Fieldtype</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#339_16" TARGET="main">Get_Itemindex</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#531_16" TARGET="main">Get_Menu_Mark -  terminal_interface-curses-menus.adb:531</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#539_16" TARGET="main">Get_Menu_Mark -  terminal_interface-curses-menus.adb:539</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#1069_16" TARGET="main">Get_Page</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#757_16" TARGET="main">Get_Pattern</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#712_16" TARGET="main">Get_Spacing</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/doc/html/ada/funcs/H.htm b/doc/html/ada/funcs/H.htm
new file mode 100644 (file)
index 0000000..e852d92
--- /dev/null
@@ -0,0 +1,12 @@
+<HTML><HEAD><TITLE>H</TITLE></HEAD>
+<BODY>
+<H2>Functions - H</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#863_16" TARGET="main">Halfdelay</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2182_16" TARGET="main">Hascolors</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#580_16" TARGET="main">Haskey</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2075_16" TARGET="main">Has_Ic</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2087_16" TARGET="main">Has_Il</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#94_16" TARGET="main">Hidepanel</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/I.htm b/doc/html/ada/funcs/I.htm
new file mode 100644 (file)
index 0000000..a3dada4
--- /dev/null
@@ -0,0 +1,31 @@
+<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__adb.htm#995_16" TARGET="main">IDC_Ok</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#983_16" TARGET="main">IDL_Ok</A>
+<LI><A HREF="../terminal_interface-curses-text_io-integer_io__adb.htm#47_12" TARGET="main">IIO</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1019_16" TARGET="main">Immedok</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2197_16" TARGET="main">Initcolor</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2143_16" TARGET="main">Initpair</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#131_16" TARGET="main">Initscr</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-intfield__ads.htm#41_53" TARGET="main">IntField</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#875_16" TARGET="main">Intrflush</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#67_13" TARGET="main">IOS_2_CInt</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#41_53" TARGET="main">IPV4_Address</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#154_16" TARGET="main">Isendwin</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#1118_16" TARGET="main">Is_New</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#127_16" TARGET="main">Itemname -  terminal_interface-curses-menus.adb:127</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#252_16" TARGET="main">Itemname -  terminal_interface-curses-menus.adb:252</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#260_16" TARGET="main">Itemname -  terminal_interface-curses-menus.adb:260</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#859_16" TARGET="main">Item_Init</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#233_16" TARGET="main">Item_Opts</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#213_16" TARGET="main">Item_Opts_Off</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#210_16" TARGET="main">Item_Opts_On</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#867_16" TARGET="main">Item_Term</A>
+<LI><A HREF="../terminal_interface-curses-menus-item_user_data__adb.htm#64_16" TARGET="main">Item_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#167_16" TARGET="main">Item_Val</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#180_16" TARGET="main">Item_Vis</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#53_12" TARGET="main">I_Array</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/K.htm b/doc/html/ada/funcs/K.htm
new file mode 100644 (file)
index 0000000..d09ddcd
--- /dev/null
@@ -0,0 +1,10 @@
+<HTML><HEAD><TITLE>K</TITLE></HEAD>
+<BODY>
+<H2>Functions - K</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#95_16" TARGET="main">Keyname</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1985_16" TARGET="main">Keyok</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#853_16" TARGET="main">Keypad</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2067_16" TARGET="main">Killchar</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/L.htm b/doc/html/ada/funcs/L.htm
new file mode 100644 (file)
index 0000000..456daf8
--- /dev/null
@@ -0,0 +1,14 @@
+<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__adb.htm#1007_16" TARGET="main">Leave_Ok</A>
+<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>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#171_16" TARGET="main">Lnk_Field</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2109_16" TARGET="main">Longname -  terminal_interface-curses.adb:2109</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2117_16" TARGET="main">Longname -  terminal_interface-curses.adb:2117</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/M.htm b/doc/html/ada/funcs/M.htm
new file mode 100644 (file)
index 0000000..c2b7878
--- /dev/null
@@ -0,0 +1,44 @@
+<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>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#607_16" TARGET="main">Menu_Back -  terminal_interface-curses-menus.adb:607</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#617_16" TARGET="main">Menu_Back -  terminal_interface-curses-menus.adb:617</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#786_16" TARGET="main">Menu_Fmt</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#568_16" TARGET="main">Menu_Fore -  terminal_interface-curses-menus.adb:568</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#578_16" TARGET="main">Menu_Fore -  terminal_interface-curses-menus.adb:578</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#646_16" TARGET="main">Menu_Grey -  terminal_interface-curses-menus.adb:646</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#656_16" TARGET="main">Menu_Grey -  terminal_interface-curses-menus.adb:656</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#875_16" TARGET="main">Menu_Init</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#413_16" TARGET="main">Menu_Opts</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#393_16" TARGET="main">Menu_Opts_Off</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#390_16" TARGET="main">Menu_Opts_On</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#681_16" TARGET="main">Menu_Pad</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#469_16" TARGET="main">Menu_Sub</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#883_16" TARGET="main">Menu_Term</A>
+<LI><A HREF="../terminal_interface-curses-menus-menu_user_data__adb.htm#63_16" TARGET="main">Menu_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#445_16" TARGET="main">Menu_Win</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#842_16" TARGET="main">Meta</A>
+<LI><A HREF="../terminal_interface-curses-text_io-modular_io__adb.htm#47_12" TARGET="main">MIO</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#112_16" TARGET="main">MMask</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#59_13" TARGET="main">MOS_2_CInt</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#208_16" TARGET="main">Mouseinterval</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#54_16" TARGET="main">Mouse_Avail</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#785_16" TARGET="main">Move -  terminal_interface-curses-forms.adb:785</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#131_16" TARGET="main">Move -  terminal_interface-curses-panels.adb:131</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#381_16" TARGET="main">Mvderwin</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#207_16" TARGET="main">mvwaddch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1572_16" TARGET="main">Mvwdelch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#367_16" TARGET="main">Mvwin</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1596_16" TARGET="main">Mvwinch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1621_16" TARGET="main">Mvwinsch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1662_16" TARGET="main">Mvwinsnstr</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#915_16" TARGET="main">M_Post -  terminal_interface-curses-forms.adb:915</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#353_16" TARGET="main">M_Post -  terminal_interface-curses-menus.adb:353</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#642_16" TARGET="main">M_Scale -  terminal_interface-curses-forms.adb:642</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#482_16" TARGET="main">M_Scale -  terminal_interface-curses-menus.adb:482</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#917_16" TARGET="main">M_Unpost -  terminal_interface-curses-forms.adb:917</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#355_16" TARGET="main">M_Unpost -  terminal_interface-curses-menus.adb:355</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/N.htm b/doc/html/ada/funcs/N.htm
new file mode 100644 (file)
index 0000000..09ba03f
--- /dev/null
@@ -0,0 +1,28 @@
+<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__adb.htm#2328_16" TARGET="main">Napms</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#115_16" TARGET="main">Newfield</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#803_16" TARGET="main">NewForm</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#97_16" TARGET="main">Newitem</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#938_16" TARGET="main">Newmenu</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1419_16" TARGET="main">Newpad</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#50_16" TARGET="main">Newpanel</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#265_16" TARGET="main">Newwin</A>
+<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__adb.htm#950_16" TARGET="main">NL</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#786_16" TARGET="main">NoCbreak</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#903_16" TARGET="main">Nodelay</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#824_16" TARGET="main">NoEcho</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#952_16" TARGET="main">NoNL</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#805_16" TARGET="main">NoRaw</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#938_16" TARGET="main">Notimeout</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#889_17" TARGET="main">No_Qiflush</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/doc/html/ada/funcs/O.htm b/doc/html/ada/funcs/O.htm
new file mode 100644 (file)
index 0000000..d5ec406
--- /dev/null
@@ -0,0 +1,9 @@
+<HTML><HEAD><TITLE>O</TITLE></HEAD>
+<BODY>
+<H2>Functions - O</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses-text_io-aux__adb.htm#58_17" TARGET="main">Output</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1323_16" TARGET="main">Overlay</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1311_16" TARGET="main">Overwrite</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/P.htm b/doc/html/ada/funcs/P.htm
new file mode 100644 (file)
index 0000000..79eae2a
--- /dev/null
@@ -0,0 +1,39 @@
+<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__adb.htm#2165_16" TARGET="main">Paircontent</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#143_16" TARGET="main">Panel_Hidden</A>
+<LI><A HREF="../terminal_interface-curses-panels-user_data__adb.htm#65_16" TARGET="main">Panel_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#104_16" TARGET="main">Panel_Win</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1523_16" TARGET="main">Pechochar</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1498_16" TARGET="main">Pnoutrefresh</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#940_16" TARGET="main">Pos_Form_Cursor</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#498_16" TARGET="main">Pos_Menu_Cursor</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1468_16" TARGET="main">Prefresh</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-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#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-aux__ads.htm#47_14" TARGET="main">Put_Buf</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/doc/html/ada/funcs/Q.htm b/doc/html/ada/funcs/Q.htm
new file mode 100644 (file)
index 0000000..51ad35b
--- /dev/null
@@ -0,0 +1,7 @@
+<HTML><HEAD><TITLE>Q</TITLE></HEAD>
+<BODY>
+<H2>Functions - Q</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#887_17" TARGET="main">Qiflush</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/R.htm b/doc/html/ada/funcs/R.htm
new file mode 100644 (file)
index 0000000..213a13c
--- /dev/null
@@ -0,0 +1,20 @@
+<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__adb.htm#803_16" TARGET="main">Raw</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1105_16" TARGET="main">Redrawwin</A>
+<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 -  terminal_interface-curses-forms-field_types-enumeration.ads:77</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#1133_17" TARGET="main">Release -  terminal_interface-curses-forms.adb:1133</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#994_17" TARGET="main">Release -  terminal_interface-curses-menus.adb:994</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration__adb.htm#52_17" TARGET="main">Release_String</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#118_16" TARGET="main">Replace_Pan</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#79_16" TARGET="main">Request_Name -  terminal_interface-curses-menus.adb:79</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#87_16" TARGET="main">Request_Name -  terminal_interface-curses-menus.adb:87</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2293_16" TARGET="main">Resetty</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2265_16" TARGET="main">Reset_Prog_Mode</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2267_16" TARGET="main">Reset_Shell_Mode</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2304_16" TARGET="main">Ripoffline</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/S.htm b/doc/html/ada/funcs/S.htm
new file mode 100644 (file)
index 0000000..f0e0204
--- /dev/null
@@ -0,0 +1,93 @@
+<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__adb.htm#2283_16" TARGET="main">Savetty</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1031_16" TARGET="main">Scrollok</A>
+<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__adb.htm#1025_16" TARGET="main">Set_Current_Fld</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#286_16" TARGET="main">Set_Curr_Item</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#447_16" TARGET="main">Set_Field_Back</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#403_16" TARGET="main">Set_Field_Fore</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#664_16" TARGET="main">Set_Field_Init</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#195_16" TARGET="main">Set_Field_Just</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#309_16" TARGET="main">Set_Field_Max</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#329_16" TARGET="main">Set_Field_Opts</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#489_16" TARGET="main">Set_Field_Pad</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#680_16" TARGET="main">Set_Field_Term</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-forms-field_user_data__adb.htm#57_16" TARGET="main">Set_Field_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#230_16" TARGET="main">Set_Fld_Buffer</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#277_16" TARGET="main">Set_Fld_Status</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-alpha__adb.htm#54_16" TARGET="main">Set_Fld_Type -  terminal_interface-curses-forms-field_types-alpha.adb:54</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#54_16" TARGET="main">Set_Fld_Type -  terminal_interface-curses-forms-field_types-alphanumeric.adb:54</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration__adb.htm#97_16" TARGET="main">Set_Fld_Type -  terminal_interface-curses-forms-field_types-enumeration.adb:97</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-intfield__adb.htm#54_16" TARGET="main">Set_Fld_Type -  terminal_interface-curses-forms-field_types-intfield.adb:54</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#54_16" TARGET="main">Set_Fld_Type -  terminal_interface-curses-forms-field_types-ipv4_address.adb:54</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-numeric__adb.htm#56_16" TARGET="main">Set_Fld_Type -  terminal_interface-curses-forms-field_types-numeric.adb:56</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user__adb.htm#55_16" TARGET="main">Set_Fld_Type -  terminal_interface-curses-forms-field_types-user.adb:55</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#151_16" TARGET="main">Set_Fld_Type -  terminal_interface-curses-forms-field_types.adb:151</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#696_16" TARGET="main">Set_Form_Init</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#844_16" TARGET="main">Set_Form_Opts</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#612_16" TARGET="main">Set_Form_Sub</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#712_16" TARGET="main">Set_Form_Term</A>
+<LI><A HREF="../terminal_interface-curses-forms-form_user_data__adb.htm#58_16" TARGET="main">Set_Form_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#584_16" TARGET="main">Set_Form_Win</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#732_16" TARGET="main">Set_Frm_Fields</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#1055_16" TARGET="main">Set_Frm_Page</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-regexp__adb.htm#54_16" TARGET="main">Set_Ftyp</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#892_16" TARGET="main">Set_Items</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#804_16" TARGET="main">Set_Item_Init</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#193_16" TARGET="main">Set_Item_Opts</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#818_16" TARGET="main">Set_Item_Term</A>
+<LI><A HREF="../terminal_interface-curses-menus-item_user_data__adb.htm#51_16" TARGET="main">Set_Item_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#154_16" TARGET="main">Set_Item_Val</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-menus__adb.htm#513_16" TARGET="main">Set_Mark</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#590_16" TARGET="main">Set_Menu_Back</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#767_16" TARGET="main">Set_Menu_Fmt</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#551_16" TARGET="main">Set_Menu_Fore</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#628_16" TARGET="main">Set_Menu_Grey</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#832_16" TARGET="main">Set_Menu_Init</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#373_16" TARGET="main">Set_Menu_Opts</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#666_16" TARGET="main">Set_Menu_Pad</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#456_16" TARGET="main">Set_Menu_Sub</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#846_16" TARGET="main">Set_Menu_Term</A>
+<LI><A HREF="../terminal_interface-curses-menus-menu_user_data__adb.htm#50_16" TARGET="main">Set_Menu_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#432_16" TARGET="main">Set_Menu_Win</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#1104_16" TARGET="main">Set_Page</A>
+<LI><A HREF="../terminal_interface-curses-panels-user_data__adb.htm#54_16" TARGET="main">Set_Panel_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#735_16" TARGET="main">Set_Pattern</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#692_16" TARGET="main">Set_Spacing</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#313_16" TARGET="main">Set_Toprow</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#59_14" TARGET="main">Set_Window</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#84_16" TARGET="main">Showpanel</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1953_16" TARGET="main">Slk_Attr -  terminal_interface-curses.adb:1953</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1963_16" TARGET="main">Slk_Attr -  terminal_interface-curses.adb:1963</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1917_16" TARGET="main">Slk_Attroff</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1915_16" TARGET="main">Slk_Attron</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1939_16" TARGET="main">Slk_Attrset</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1883_16" TARGET="main">Slk_Clear</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1973_16" TARGET="main">Slk_Color</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1814_16" TARGET="main">Slk_Init</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1867_16" TARGET="main">Slk_Label -  terminal_interface-curses.adb:1867</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1875_16" TARGET="main">Slk_Label -  terminal_interface-curses.adb:1875</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1856_16" TARGET="main">Slk_Noutrefresh</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1846_16" TARGET="main">Slk_Refresh</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1893_16" TARGET="main">Slk_Restore</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1827_16" TARGET="main">Slk_Set</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1903_16" TARGET="main">Slk_Touch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1438_16" TARGET="main">Subpad</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#301_16" TARGET="main">Subwin</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#394_16" TARGET="main">Syncok</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/T.htm b/doc/html/ada/funcs/T.htm
new file mode 100644 (file)
index 0000000..817d22b
--- /dev/null
@@ -0,0 +1,19 @@
+<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-curses__adb.htm#2099_16" TARGET="main">Termattrs</A>
+<LI><A HREF="../terminal_interface__ads.htm#41_9" TARGET="main">Terminal_Interface</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2125_16" TARGET="main">Termname -  terminal_interface-curses.adb:2125</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2133_16" TARGET="main">Termname -  terminal_interface-curses.adb:2133</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#44_35" TARGET="main">Text_IO</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#74_16" TARGET="main">Toppanel</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#326_16" TARGET="main">Toprow</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#106_16" TARGET="main">To_Access</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user-choice__adb.htm#49_13" TARGET="main">To_Argument_Access -  terminal_interface-curses-forms-field_types-user-choice.adb:49</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user__adb.htm#80_13" TARGET="main">To_Argument_Access -  terminal_interface-curses-forms-field_types-user.adb:80</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#55_13" TARGET="main">To_Argument_Access -  terminal_interface-curses-forms-field_types.adb:55</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#75_16" TARGET="main">To_Pointer</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2392_16" TARGET="main">Transform</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/funcs/U.htm b/doc/html/ada/funcs/U.htm
new file mode 100644 (file)
index 0000000..135f3fb
--- /dev/null
@@ -0,0 +1,11 @@
+<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__adb.htm#2015_16" TARGET="main">Unctrl -  terminal_interface-curses.adb:2015</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2023_16" TARGET="main">Unctrl -  terminal_interface-curses.adb:2023</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#570_16" TARGET="main">Ungetch</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#183_16" TARGET="main">Ungetmouse</A>
+<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/doc/html/ada/funcs/V.htm b/doc/html/ada/funcs/V.htm
new file mode 100644 (file)
index 0000000..21bebc2
--- /dev/null
@@ -0,0 +1,7 @@
+<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/doc/html/ada/funcs/W.htm b/doc/html/ada/funcs/W.htm
new file mode 100644 (file)
index 0000000..5016fb7
--- /dev/null
@@ -0,0 +1,51 @@
+<HTML><HEAD><TITLE>W</TITLE></HEAD>
+<BODY>
+<H2>Functions - W</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#182_16" TARGET="main">Waddch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#440_16" TARGET="main">Waddchnstr</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#408_16" TARGET="main">Waddnstr</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#668_16" TARGET="main">Wattrget -  terminal_interface-curses.adb:668</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#691_16" TARGET="main">Wattrget -  terminal_interface-curses.adb:691</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#627_16" TARGET="main">Wattroff</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#624_16" TARGET="main">Wattron</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#652_16" TARGET="main">Wattrset</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1174_17" TARGET="main">WBackground</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#481_16" TARGET="main">Wborder</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1184_16" TARGET="main">WChangeBkgd</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#732_16" TARGET="main">Wchgat</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1142_16" TARGET="main">Wclear</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1152_16" TARGET="main">Wclearbot</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1162_16" TARGET="main">Wcleareol</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1559_16" TARGET="main">Wdelch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#285_16" TARGET="main">Wdelwin</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#239_16" TARGET="main">Wechochar</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#194_16" TARGET="main">Wenclose</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1132_16" TARGET="main">Werase</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1195_16" TARGET="main">Wgetbkgd</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#556_16" TARGET="main">Wgetch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1774_16" TARGET="main">Wgetnstr</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#523_16" TARGET="main">Whline</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1585_16" TARGET="main">Winch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1727_16" TARGET="main">Winchnstr</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1684_16" TARGET="main">Winnstr</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1607_16" TARGET="main">Winsch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1336_16" TARGET="main">Winsdelln</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1640_16" TARGET="main">Winsnstr</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1248_16" TARGET="main">WLineTouched</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#168_16" TARGET="main">Wmove</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1095_16" TARGET="main">Wnoutrefresh</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1118_16" TARGET="main">Wredrawln</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1084_16" TARGET="main">Wrefresh</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1547_16" TARGET="main">Wscrl</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1061_16" TARGET="main">Wsetscrreg</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#714_16" TARGET="main">Wset_Color</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#915_16" TARGET="main">Wtimeout</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1206_16" TARGET="main">Wtouchln</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#540_16" TARGET="main">Wvline</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1261_16" TARGET="main">WWinTouched</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#90_13" TARGET="main">W_Get_Byte</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#88_13" TARGET="main">W_Get_Int</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#89_13" TARGET="main">W_Get_Short</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/index.htm b/doc/html/ada/index.htm
new file mode 100644 (file)
index 0000000..79c9f4a
--- /dev/null
@@ -0,0 +1,41 @@
+<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/ .htm">[ ]</A>
+<A HREF="funcs/A.htm">[A]</A>
+<A HREF="funcs/B.htm">[B]</A>
+<A HREF="funcs/C.htm">[C]</A>
+<A HREF="funcs/D.htm">[D]</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/H.htm">[H]</A>
+<A HREF="funcs/I.htm">[I]</A>
+<A HREF="funcs/K.htm">[K]</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/O.htm">[O]</A>
+<A HREF="funcs/P.htm">[P]</A>
+<A HREF="funcs/Q.htm">[Q]</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>
+<A HREF="funcs/W.htm">[W]</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/doc/html/ada/main.htm b/doc/html/ada/main.htm
new file mode 100644 (file)
index 0000000..2a403dc
--- /dev/null
@@ -0,0 +1,66 @@
+<HTML><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/ .htm">[ ]</A>
+<A HREF="funcs/A.htm">[A]</A>
+<A HREF="funcs/B.htm">[B]</A>
+<A HREF="funcs/C.htm">[C]</A>
+<A HREF="funcs/D.htm">[D]</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/H.htm">[H]</A>
+<A HREF="funcs/I.htm">[I]</A>
+<A HREF="funcs/K.htm">[K]</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/O.htm">[O]</A>
+<A HREF="funcs/P.htm">[P]</A>
+<A HREF="funcs/Q.htm">[Q]</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>
+<A HREF="funcs/W.htm">[W]</A>
+</UL>
+<HR>
+You should start your browsing with one of these files:
+<UL>
+<LI><A HREF="terminal_interface-curses-aux__ads.htm">terminal_interface-curses-aux.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm">terminal_interface-curses-forms-field_types-alpha.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm">terminal_interface-curses-forms-field_types-alphanumeric.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm">terminal_interface-curses-forms-field_types-enumeration-ada.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm">terminal_interface-curses-forms-field_types-enumeration.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm">terminal_interface-curses-forms-field_types-intfield.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm">terminal_interface-curses-forms-field_types-ipv4_address.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm">terminal_interface-curses-forms-field_types-numeric.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm">terminal_interface-curses-forms-field_types-regexp.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm">terminal_interface-curses-forms-field_types-user-choice.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-user__ads.htm">terminal_interface-curses-forms-field_types-user.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types__ads.htm">terminal_interface-curses-forms-field_types.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_user_data__ads.htm">terminal_interface-curses-forms-field_user_data.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-form_user_data__ads.htm">terminal_interface-curses-forms-form_user_data.ads</A>
+<LI><A HREF="terminal_interface-curses-forms__ads.htm">terminal_interface-curses-forms.ads</A>
+<LI><A HREF="terminal_interface-curses-menus-item_user_data__ads.htm">terminal_interface-curses-menus-item_user_data.ads</A>
+<LI><A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm">terminal_interface-curses-menus-menu_user_data.ads</A>
+<LI><A HREF="terminal_interface-curses-menus__ads.htm">terminal_interface-curses-menus.ads</A>
+<LI><A HREF="terminal_interface-curses-mouse__ads.htm">terminal_interface-curses-mouse.ads</A>
+<LI><A HREF="terminal_interface-curses-panels-user_data__ads.htm">terminal_interface-curses-panels-user_data.ads</A>
+<LI><A HREF="terminal_interface-curses-panels__ads.htm">terminal_interface-curses-panels.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io-aux__ads.htm">terminal_interface-curses-text_io-aux.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io-complex_io__ads.htm">terminal_interface-curses-text_io-complex_io.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm">terminal_interface-curses-text_io-decimal_io.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm">terminal_interface-curses-text_io-enumeration_io.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm">terminal_interface-curses-text_io-fixed_io.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io-float_io__ads.htm">terminal_interface-curses-text_io-float_io.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io-integer_io__ads.htm">terminal_interface-curses-text_io-integer_io.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io-modular_io__ads.htm">terminal_interface-curses-text_io-modular_io.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io__ads.htm">terminal_interface-curses-text_io.ads</A>
+<LI><A HREF="terminal_interface-curses__ads.htm">terminal_interface-curses.ads</A>
+<LI><A HREF="terminal_interface__ads.htm">terminal_interface.ads</A>
+</BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/table.html b/doc/html/ada/table.html
new file mode 100644 (file)
index 0000000..e185a8b
--- /dev/null
@@ -0,0 +1,325 @@
+<!DOCTYPE HTML
+PUBLIC "-//IETF//DTD HTML 3.0//EN">
+<HTML>
+<HEAD>
+<TITLE>Correspondence between ncurses C and Ada functions</TITLE>
+</HEAD>
+<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__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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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_color()</TD><TD><A HREF="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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/doc/html/ada/terminal_interface-curses-aux__adb.htm b/doc/html/ada/terminal_interface-curses-aux__adb.htm
new file mode 100644 (file)
index 0000000..f931ca6
--- /dev/null
@@ -0,0 +1,121 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-aux.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-aux.adb </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.Aux                       --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>package</b> <b>body</b> Terminal_Interface.Curses.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A><FONT COLOR=red><A NAME="41_40"></A></FONT> <b>is</b>
+   <FONT COLOR=green><EM>--</EM></FONT>
+   <FONT COLOR=green><EM>--  Some helpers</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-aux__ads.htm#116_14">Fill_String</A><FONT COLOR=red><A NAME="44_14"></A></FONT> (<A HREF="terminal_interface-curses-aux__ads.htm#116_27">Cp</A>  : <b>in</b>  chars_ptr;
+                          <A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A> : <b>out</b> String)
+   <b>is</b>
+      <FONT COLOR=green><EM>--  Fill the string with the characters referenced by the</EM></FONT>
+      <FONT COLOR=green><EM>--  chars_ptr.</EM></FONT>
+      <FONT COLOR=green><EM>--</EM></FONT>
+      <FONT COLOR=red><A NAME="50_7">Len</A></FONT> : Natural;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#116_27">Cp</A> /= Null_Ptr <b>then</b>
+         <A HREF="terminal_interface-curses-aux__adb.htm#50_7">Len</A> := Natural (Strlen (<A HREF="terminal_interface-curses-aux__ads.htm#116_27">Cp</A>));
+         <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A>'Length &lt; <A HREF="terminal_interface-curses-aux__adb.htm#50_7">Len</A> <b>then</b>
+            <b>raise</b> Constraint_Error;
+         <b>end</b> <b>if</b>;
+         <b>declare</b>
+            <FONT COLOR=red><A NAME="58_13">S</A></FONT> : String (1 .. <A HREF="terminal_interface-curses-aux__adb.htm#50_7">Len</A>);
+         <b>begin</b>
+            <A HREF="terminal_interface-curses-aux__adb.htm#58_13">S</A> := Value (<A HREF="terminal_interface-curses-aux__ads.htm#116_27">Cp</A>);
+            <A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A> (<A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A>'First .. (<A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A>'First + <A HREF="terminal_interface-curses-aux__adb.htm#50_7">Len</A> - 1)) := <A HREF="terminal_interface-curses-aux__adb.htm#58_13">S</A> (<A HREF="terminal_interface-curses-aux__adb.htm#58_13">S</A>'<b>Range</b>);
+         <b>end</b>;
+      <b>else</b>
+         <A HREF="terminal_interface-curses-aux__adb.htm#50_7">Len</A> := 0;
+      <b>end</b> <b>if</b>;
+
+      <b>if</b> <A HREF="terminal_interface-curses-aux__adb.htm#50_7">Len</A> &lt; <A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A>'Length <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A> ((<A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A>'First + <A HREF="terminal_interface-curses-aux__adb.htm#50_7">Len</A>) .. <A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A>'Last) := (<b>others</b> =&gt; ' ');
+      <b>end</b> <b>if</b>;
+
+   <b>end</b> Fill_String;
+
+   <b>function</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A><FONT COLOR=red><A NAME="73_13"></A></FONT> (<A HREF="terminal_interface-curses-aux__ads.htm#121_26">Cp</A> : chars_ptr) <b>return</b> String
+   <b>is</b>
+      <FONT COLOR=red><A NAME="75_7">Len</A></FONT> : Natural;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_26">Cp</A> /= Null_Ptr <b>then</b>
+         <A HREF="terminal_interface-curses-aux__adb.htm#75_7">Len</A> := Natural (Strlen (<A HREF="terminal_interface-curses-aux__ads.htm#121_26">Cp</A>));
+         <b>if</b> <A HREF="terminal_interface-curses-aux__adb.htm#75_7">Len</A> = 0 <b>then</b>
+            <b>return</b> "";
+         <b>else</b>
+            <b>declare</b>
+               <FONT COLOR=red><A NAME="83_16">S</A></FONT> : String (1 .. <A HREF="terminal_interface-curses-aux__adb.htm#75_7">Len</A>);
+            <b>begin</b>
+               <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-aux__ads.htm#121_26">Cp</A>, <A HREF="terminal_interface-curses-aux__adb.htm#83_16">S</A>);
+               <b>return</b> <A HREF="terminal_interface-curses-aux__adb.htm#83_16">S</A>;
+            <b>end</b>;
+         <b>end</b> <b>if</b>;
+      <b>else</b>
+         <b>return</b> "";
+      <b>end</b> <b>if</b>;
+   <b>end</b> Fill_String;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A><FONT COLOR=red><A NAME="94_14"></A></FONT> (<A HREF="terminal_interface-curses-aux__ads.htm#96_29">Code</A> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>)
+   <b>is</b>
+   <b>begin</b>
+      <b>case</b> <A HREF="terminal_interface-curses-aux__ads.htm#96_29">Code</A> <b>is</b>
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A>              =&gt; <b>null</b>;
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#81_4">E_System_Error</A>    =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#387_4">Eti_System_Error</A>;
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#82_4">E_Bad_Argument</A>    =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#388_4">Eti_Bad_Argument</A>;
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#83_4">E_Posted</A>          =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#389_4">Eti_Posted</A>;
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#84_4">E_Connected</A>       =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#390_4">Eti_Connected</A>;
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#85_4">E_Bad_State</A>       =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#391_4">Eti_Bad_State</A>;
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#86_4">E_No_Room</A>         =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#392_4">Eti_No_Room</A>;
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#87_4">E_Not_Posted</A>      =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#393_4">Eti_Not_Posted</A>;
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#88_4">E_Unknown_Command</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#394_4">Eti_Unknown_Command</A>;
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#89_4">E_No_Match</A>        =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#395_4">Eti_No_Match</A>;
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#90_4">E_Not_Selectable</A>  =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#396_4">Eti_Not_Selectable</A>;
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#91_4">E_Not_Connected</A>   =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#397_4">Eti_Not_Connected</A>;
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#92_4">E_Request_Denied</A>  =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#398_4">Eti_Request_Denied</A>;
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#93_4">E_Invalid_Field</A>   =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#399_4">Eti_Invalid_Field</A>;
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#94_4">E_Current</A>         =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#400_4">Eti_Current</A>;
+      <b>end</b> <b>case</b>;
+   <b>end</b> Eti_Exception;
+
+<b>end</b> Terminal_Interface.Curses.Aux;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/terminal_interface-curses-aux__ads.htm b/doc/html/ada/terminal_interface-curses-aux__ads.htm
new file mode 100644 (file)
index 0000000..3b10c65
--- /dev/null
@@ -0,0 +1,130 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-aux.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-aux.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.Aux                      --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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 01.00</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#23_9">System</A>;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="unchconv__ads.htm#22_10">Interfaces</A>.C.Strings; <b>use</b> Interfaces.C.Strings;
+<b>with</b> Unchecked_Conversion;
+
+<b>package</b> Terminal_Interface.Curses.Aux <b>is</b>
+   <b>pragma</b> Preelaborate (Terminal_Interface.Curses.Aux);
+
+   <b>use</b> <b>type</b> Interfaces.C.int;
+
+   <b>subtype</b> <FONT COLOR=red><A NAME="56_12">C_Int</A></FONT>      <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+   <b>subtype</b> <FONT COLOR=red><A NAME="57_12">C_Short</A></FONT>    <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.short;
+   <b>subtype</b> <FONT COLOR=red><A NAME="58_12">C_Long_Int</A></FONT> <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.long;
+   <b>subtype</b> <FONT COLOR=red><A NAME="59_12">C_Size_T</A></FONT>   <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.size_t;
+   <b>subtype</b> <FONT COLOR=red><A NAME="60_12">C_UInt</A></FONT>     <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.unsigned;
+   <b>subtype</b> <FONT COLOR=red><A NAME="61_12">C_ULong</A></FONT>    <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.unsigned_long;
+   <b>subtype</b> <FONT COLOR=red><A NAME="62_12">C_Char_Ptr</A></FONT> <b>is</b> Interfaces.C.Strings.chars_ptr;
+   <b>type</b>    <FONT COLOR=red><A NAME="63_12">C_Void_Ptr</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-aux__ads.htm#60_12">System</A>.Address;
+   <b>type</b>    <FONT COLOR=red><A NAME="64_12">C_Chtype</A></FONT>   <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-aux__ads.htm#60_12">C_ULong</A>;
+   <b>type</b>    C_AttrType <b>is</b> <b>new</b> C_ULong;
+
+   <FONT COLOR=green><EM>--  This is how those constants are defined in ncurses. I see them also</EM></FONT>
+   <FONT COLOR=green><EM>--  exactly like this in all ETI implementations I ever tested. So it</EM></FONT>
+   <FONT COLOR=green><EM>--  could be that this is quite general, but please check with your curses.</EM></FONT>
+   <FONT COLOR=green><EM>--  This is critical, because curses sometime mixes boolean returns with</EM></FONT>
+   <FONT COLOR=green><EM>--  returning an error status.</EM></FONT>
+   <FONT COLOR=red><A NAME="72_4">Curses_Ok</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := 0;
+   Curses_Err   : <b>constant</b> C_Int := -1;
+
+   <FONT COLOR=red><A NAME="75_4">Curses_True</A></FONT>  : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := 1;
+   Curses_False : <b>constant</b> C_Int := 0;
+
+   <FONT COLOR=green><EM>--  Eti_Error: type for error codes returned by the menu and form subsystem</EM></FONT>
+   <b>subtype</b> Eti_Error <b>is</b> C_Int <b>range</b> -14 .. 0;
+
+   <FONT COLOR=red><A NAME="81_4">E_Ok</A></FONT>               : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := 0;
+   <FONT COLOR=red><A NAME="82_4">E_System_Error</A></FONT>     : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -1;
+   <FONT COLOR=red><A NAME="83_4">E_Bad_Argument</A></FONT>     : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -2;
+   <FONT COLOR=red><A NAME="84_4">E_Posted</A></FONT>           : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -3;
+   <FONT COLOR=red><A NAME="85_4">E_Connected</A></FONT>        : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -4;
+   <FONT COLOR=red><A NAME="86_4">E_Bad_State</A></FONT>        : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -5;
+   <FONT COLOR=red><A NAME="87_4">E_No_Room</A></FONT>          : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -6;
+   <FONT COLOR=red><A NAME="88_4">E_Not_Posted</A></FONT>       : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -7;
+   <FONT COLOR=red><A NAME="89_4">E_Unknown_Command</A></FONT>  : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -8;
+   <FONT COLOR=red><A NAME="90_4">E_No_Match</A></FONT>         : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -9;
+   <FONT COLOR=red><A NAME="91_4">E_Not_Selectable</A></FONT>   : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -10;
+   <FONT COLOR=red><A NAME="92_4">E_Not_Connected</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -11;
+   <FONT COLOR=red><A NAME="93_4">E_Request_Denied</A></FONT>   : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -12;
+   <FONT COLOR=red><A NAME="94_4">E_Invalid_Field</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -13;
+   E_Current          : <b>constant</b> Eti_Error := -14;
+
+   <b>procedure</b> Eti_Exception (Code : Eti_Error);
+   <FONT COLOR=green><EM>--  Dispatch the error code and raise the appropriate exception</EM></FONT>
+   <FONT COLOR=green><EM>--</EM></FONT>
+   <FONT COLOR=green><EM>--</EM></FONT>
+   <FONT COLOR=green><EM>--  Some helpers</EM></FONT>
+   <b>function</b> Chtype_To_AttrChar <b>is</b> <b>new</b>
+     Unchecked_Conversion (Source =&gt; <A HREF="terminal_interface-curses__ads.htm#350_9">C_Chtype</A>,
+            <FONT COLOR=red><A NAME="104_13"> </A></FONT>              Target =&gt; Attributed_Character);
+   <b>function</b> AttrChar_To_Chtype <b>is</b> <b>new</b>
+     Unchecked_Conversion (Source =&gt; <A HREF="terminal_interface-curses-aux__ads.htm#63_12">Attributed_Character</A>,
+                           Target =&gt; C_Chtype);
+
+   <b>function</b> AttrChar_To_AttrType <b>is</b> <b>new</b>
+     Unchecked_Conversion (Source =&gt; <A HREF="terminal_interface-curses-aux__ads.htm#64_12">Attributed_Character</A>,
+                           Target =&gt; C_AttrType);
+
+   <b>function</b> AttrType_To_AttrChar <b>is</b> <b>new</b>
+     Unchecked_Conversion (Source =&gt; <A HREF="terminal_interface-curses__ads.htm#350_9">C_AttrType</A>,
+                           Target =&gt; Attributed_Character);
+
+   <b>procedure</b> Fill_String (<FONT COLOR=red><A NAME="117_27">Cp</A></FONT>  : <b>in</b>  chars_ptr;
+                          Str : <b>out</b> String);
+   <FONT COLOR=green><EM>--  Fill the Str parameter with the string denoted by the chars_ptr</EM></FONT>
+   <FONT COLOR=green><EM>--  C-Style string.</EM></FONT>
+
+   <b>function</b> Fill_String (Cp : chars_ptr) <b>return</b> String;
+   <FONT COLOR=green><EM>--  Same but as function.</EM></FONT>
+
+<b>end</b> Terminal_Interface.Curses.Aux;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm
new file mode 100644 (file)
index 0000000..3296a66
--- /dev/null
@@ -0,0 +1,73 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-alpha.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-alpha.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 1996</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.6 @</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>.C;
+<b>with</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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#41_53">Alpha</A><FONT COLOR=red><A NAME="44_58"></A></FONT> <b>is</b>
+
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#49_14">Set_Field_Type</A><FONT COLOR=red><A NAME="48_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#49_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                             <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#50_30">Typ</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#44_9">Alpha_Field</A>)
+   <b>is</b>
+      C_Alpha_Field_Type : C_Field_Type;
+      <b>pragma</b> Import (C, C_Alpha_Field_Type, "TYPE_ALPHA");
+
+      <b>function</b> <FONT COLOR=red><A NAME="54_16">Set_Fld_Type</A></FONT> (<FONT COLOR=red><A NAME="54_30">F</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#49_30">Fld</A>;
+                             Cft  : C_Field_Type := C_Alpha_Field_Type;
+                             <FONT COLOR=red><A NAME="56_30">Arg1</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#54_16">Set_Fld_Type</A>, "set_field_type");
+
+      <FONT COLOR=red><A NAME="59_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#59_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#54_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#56_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#50_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#46_9">Minimum_Field_Width</A>));
+      <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#59_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#59_7">Res</A>);
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#49_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#50_30">Typ</A>);
+   <b>end</b> Set_Field_Type;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.Alpha;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 90%
rename from Ada95/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm
rename to doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm
index a3a090f92402594a99a13439b69a89fe2eebefff..a16a211b2f2df64ea4d96b123240741c1745d9b2 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-alpha.ads</TITLE></HEAD>
+<HTML><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>
@@ -37,7 +37,7 @@
 <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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>
 
    <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;
+        <FONT COLOR=red><A NAME="46_9">Minimum_Field_Width</A></FONT> : 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>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#56_9">Field</A>;
+                             <FONT COLOR=red><A NAME="50_30">Typ</A></FONT> : <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;
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm
new file mode 100644 (file)
index 0000000..c7aaa2d
--- /dev/null
@@ -0,0 +1,73 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-alphanumeric.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-alphanumeric.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 1996</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.6 @</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>.C;
+<b>with</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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#41_53">AlphaNumeric</A><FONT COLOR=red><A NAME="44_58"></A></FONT> <b>is</b>
+
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#50_14">Set_Field_Type</A><FONT COLOR=red><A NAME="48_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#50_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                             <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#51_30">Typ</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#45_9">AlphaNumeric_Field</A>)
+   <b>is</b>
+      C_AlphaNumeric_Field_Type : C_Field_Type;
+      <b>pragma</b> Import (C, C_AlphaNumeric_Field_Type, "TYPE_ALNUM");
+
+      <b>function</b> <FONT COLOR=red><A NAME="54_16">Set_Fld_Type</A></FONT> (<FONT COLOR=red><A NAME="54_30">F</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#50_30">Fld</A>;
+                             Cft  : C_Field_Type := C_AlphaNumeric_Field_Type;
+                             <FONT COLOR=red><A NAME="56_30">Arg1</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#54_16">Set_Fld_Type</A>, "set_field_type");
+
+      <FONT COLOR=red><A NAME="59_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#59_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#54_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#56_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#51_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#47_9">Minimum_Field_Width</A>));
+      <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#59_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#59_7">Res</A>);
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#50_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#51_30">Typ</A>);
+   <b>end</b> Set_Field_Type;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 90%
rename from Ada95/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm
rename to doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm
index ab299784a4d2e3c68d629c85cd96c0c3b624c025..d1302308e2d0350cbdbb45bf9010e7b414f29c3b 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-alphanumeric.ads</TITLE></HEAD>
+<HTML><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>
@@ -37,7 +37,7 @@
 <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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>
 
    <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;
+        <FONT COLOR=red><A NAME="47_9">Minimum_Field_Width</A></FONT> : 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>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#56_9">Field</A>;
+                             <FONT COLOR=red><A NAME="51_30">Typ</A></FONT> : <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;
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm
new file mode 100644 (file)
index 0000000..a4307d5
--- /dev/null
@@ -0,0 +1,85 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-enumeration-ada.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-enumeration-ada.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 1996</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.5 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Ada.Characters.Handling; <b>use</b> Ada.Characters.Handling;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.Enumeration.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#44_65">Ada</A> <b>is</b>
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#48_13">Create</A><FONT COLOR=red><A NAME="45_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#48_21">Set</A>            : <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>;
+                    <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#49_21">Case_Sensitive</A> : Boolean  := False;
+                    <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#50_21">Must_Be_Unique</A> : Boolean  := False)
+                    <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>
+   <b>is</b>
+      <FONT COLOR=red><A NAME="50_7">I</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#55_9">Enumeration_Info</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>'Pos (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>'Last) - <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>'Pos (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>'First) + 1);
+      <FONT COLOR=red><A NAME="51_7">J</A></FONT> : Positive := 1;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">Case_Sensitive</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#49_21">Case_Sensitive</A>;
+      <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">Match_Must_Be_Unique</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#50_21">Must_Be_Unique</A>;
+
+      <b>for</b> <FONT COLOR=red><A NAME="56_11">E</A></FONT> <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>'<b>Range</b> <b>loop</b>
+         <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.Names (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_7">J</A>) := <b>new</b> String'(<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>'Image (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#56_11">E</A>)));
+         <FONT COLOR=green><EM>--  The Image attribute defaults to upper case, so we have to handle</EM></FONT>
+         <FONT COLOR=green><EM>--  only the other ones...</EM></FONT>
+         <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#48_21">Set</A> /= <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#50_34">Upper_Case</A> <b>then</b>
+            <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.Names (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_7">J</A>).<b>all</b> := To_Lower (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.Names (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_7">J</A>).<b>all</b>);
+            <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#48_21">Set</A> = <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#50_46">Mixed_Case</A> <b>then</b>
+               <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.Names (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_7">J</A>)(<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.Names (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_7">J</A>).<b>all</b>'First) :=
+                 To_Upper (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.Names (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_7">J</A>)(<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.Names (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_7">J</A>).<b>all</b>'First));
+            <b>end</b> <b>if</b>;
+         <b>end</b> <b>if</b>;
+         <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_7">J</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_7">J</A> + 1;
+      <b>end</b> <b>loop</b>;
+
+      <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#48_13">Create</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>, True);
+   <b>end</b> Create;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#53_13">Value</A><FONT COLOR=red><A NAME="73_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#53_20">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                   <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#54_20">Buf</A> : <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A>'First) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>
+   <b>is</b>
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>'Value (<A HREF="terminal_interface-curses-forms__ads.htm#371_13">Get_Buffer</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#53_20">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#54_20">Buf</A>));
+   <b>end</b> Value;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 80%
rename from Ada95/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm
rename to doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm
index 4a85547005d9843c2d28b60f0ade336cf8e0184b..d853ce407694a0dc8cac2f705193f58c5605a944 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-enumeration-ada.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>type</b> <FONT COLOR=red><A NAME="42_9">T</A></FONT> <b>is</b> (&lt;&gt;);
 
 <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>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> (<FONT COLOR=red><A NAME="48_21">Set</A></FONT>            : <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>;
+                    <FONT COLOR=red><A NAME="49_21">Case_Sensitive</A></FONT> : Boolean  := False;
+                    <FONT COLOR=red><A NAME="50_21">Must_Be_Unique</A></FONT> : 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>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#56_9">Field</A>;
+                   <FONT COLOR=red><A NAME="54_20">Buf</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#131_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/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm
new file mode 100644 (file)
index 0000000..5096357
--- /dev/null
@@ -0,0 +1,124 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-enumeration.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-enumeration.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 1996</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.5 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Ada.Unchecked_Deallocation;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings;
+<b>with</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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#43_53">Enumeration</A><FONT COLOR=red><A NAME="46_58"></A></FONT> <b>is</b>
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_13">Create</A><FONT COLOR=red><A NAME="48_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_21">Info</A>               : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#55_9">Enumeration_Info</A>;
+                    <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#65_21">Auto_Release_Names</A> : Boolean := False)
+                    <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>
+   <b>is</b>
+      <b>procedure</b> <FONT COLOR=red><A NAME="52_17">Release_String</A></FONT> <b>is</b>
+        <b>new</b> Ada.Unchecked_Deallocation (String,
+                                        <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#47_9">String_Access</A>);
+      <FONT COLOR=red><A NAME="55_7">E</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>;
+      <FONT COLOR=red><A NAME="56_7">L</A></FONT> : <b>constant</b> size_t := 1 + size_t (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#55_27">C</A>);
+      <FONT COLOR=red><A NAME="57_7">S</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#47_9">String_Access</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">Case_Sensitive</A>       := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#58_10">Case_Sensitive</A>;
+      <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">Match_Must_Be_Unique</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#59_10">Match_Must_Be_Unique</A>;
+      <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">Arr</A> := <b>new</b> chars_ptr_array (size_t (1) .. <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#56_7">L</A>);
+      <b>for</b> <FONT COLOR=red><A NAME="62_11">I</A></FONT> <b>in</b> 1 .. Positive (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#56_7">L</A> - 1) <b>loop</b>
+         <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#57_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#62_11">I</A>) = <b>null</b> <b>then</b>
+            <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+         <b>end</b> <b>if</b>;
+         <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#95_10">Arr</A> (size_t (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#62_11">I</A>)) := New_String (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#57_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#62_11">I</A>).<b>all</b>);
+         <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#65_21">Auto_Release_Names</A> <b>then</b>
+            <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#57_7">S</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#57_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#62_11">I</A>);
+            <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#52_17">Release_String</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#57_7">S</A>);
+         <b>end</b> <b>if</b>;
+      <b>end</b> <b>loop</b>;
+      <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#95_10">Arr</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#56_7">L</A>) := Null_Ptr;
+      <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">E</A>;
+   <b>end</b> Create;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#77_14">Release</A><FONT COLOR=red><A NAME="76_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#77_23">Enum</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="78_7">I</A></FONT> : size_t := 0;
+      <FONT COLOR=red><A NAME="79_7">P</A></FONT> : chars_ptr;
+   <b>begin</b>
+      <b>loop</b>
+         <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#79_7">P</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#77_23">Enum</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#95_10">Arr</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#78_7">I</A>);
+         <b>exit</b> <b>when</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#79_7">P</A> = Null_Ptr;
+         <A HREF="terminal_interface-curses-forms__ads.htm#138_14">Free</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#79_7">P</A>);
+         <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#77_23">Enum</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#95_10">Arr</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#78_7">I</A>) := Null_Ptr;
+         <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#78_7">I</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#78_7">I</A> + 1;
+      <b>end</b> <b>loop</b>;
+      <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#77_23">Enum</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#95_10">Arr</A> := <b>null</b>;
+   <b>end</b> Release;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#84_14">Set_Field_Type</A><FONT COLOR=red><A NAME="91_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#84_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                             <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#85_30">Typ</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>)
+   <b>is</b>
+      C_Enum_Type : C_Field_Type;
+      <b>pragma</b> Import (C, C_Enum_Type, "TYPE_ENUM");
+
+      <b>function</b> <FONT COLOR=red><A NAME="97_16">Set_Fld_Type</A></FONT> (<FONT COLOR=red><A NAME="97_30">F</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#84_30">Fld</A>;
+                             Cft  : C_Field_Type := C_Enum_Type;
+                             <FONT COLOR=red><A NAME="99_30">Arg1</A></FONT> : chars_ptr_array;
+                             <FONT COLOR=red><A NAME="100_30">Arg2</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+                             <FONT COLOR=red><A NAME="101_30">Arg3</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#97_16">Set_Fld_Type</A>, "set_field_type");
+
+      <FONT COLOR=red><A NAME="104_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#85_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#95_10">Arr</A> = <b>null</b> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#104_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#97_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#99_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#85_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#95_10">Arr</A>.<b>all</b>,
+                           <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#100_30">Arg2</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#85_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#93_10">Case_Sensitive</A>)),
+                           <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#101_30">Arg3</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A> (Boolean'Pos
+                                          (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#85_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#94_10">Match_Must_Be_Unique</A>)));
+      <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#104_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#104_7">Res</A>);
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#84_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#85_30">Typ</A>, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#149_13">C_Choice_Router</A>);
+   <b>end</b> Set_Field_Type;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.Enumeration;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 69%
rename from Ada95/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm
rename to doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm
index 47b7313050e713e25f61dda77e3349e4d05abace..0cda472c77ed8b6d35ff5c47aff5f3429e449b34 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-enumeration.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings;
 
 <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
 
    <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>
+   <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>type</b> <FONT COLOR=red><A NAME="52_9">Enum_Array</A></FONT> <b>is</b> <b>array</b> (Positive <b>range</b> &lt;&gt;)
      <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>type</b> <FONT COLOR=red><A NAME="55_9">Enumeration_Info</A></FONT> (<FONT COLOR=red><A NAME="55_27">C</A></FONT> : 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;
+         <FONT COLOR=red><A NAME="57_10">Names</A></FONT>                : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#52_9">Enum_Array</A> (1 .. <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#55_27">C</A>);
+         <FONT COLOR=red><A NAME="58_10">Case_Sensitive</A></FONT>       : Boolean := False;
+         <FONT COLOR=red><A NAME="59_10">Match_Must_Be_Unique</A></FONT> : 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>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> (<FONT COLOR=red><A NAME="64_21">Info</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#55_9">Enumeration_Info</A>;
+                    <FONT COLOR=red><A NAME="65_21">Auto_Release_Names</A></FONT> : 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>
+   <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>function</b> <FONT COLOR=red><A NAME="73_13">Make_Enumeration_Type</A></FONT> (<FONT COLOR=red><A NAME="73_36">Info</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#55_9">Enumeration_Info</A>;
+                                   <FONT COLOR=red><A NAME="74_36">Auto_Release_Names</A></FONT> : 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>
+   <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> (<FONT COLOR=red><A NAME="77_23">Enum</A></FONT> : <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>
+   <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>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#56_9">Field</A>;
+                             <FONT COLOR=red><A NAME="85_30">Typ</A></FONT> : <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> <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>.C.Strings.chars_ptr_array;
 
    <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>;
+         <FONT COLOR=red><A NAME="93_10">Case_Sensitive</A></FONT>       : Boolean := False;
+         <FONT COLOR=red><A NAME="94_10">Match_Must_Be_Unique</A></FONT> : Boolean := False;
+         <FONT COLOR=red><A NAME="95_10">Arr</A></FONT>                  : <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;
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm
new file mode 100644 (file)
index 0000000..fadb937
--- /dev/null
@@ -0,0 +1,77 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-intfield.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-intfield.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 1996</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.6 @</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>.C;
+<b>with</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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#41_53">IntField</A><FONT COLOR=red><A NAME="44_58"></A></FONT> <b>is</b>
+
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#51_14">Set_Field_Type</A><FONT COLOR=red><A NAME="48_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#51_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                             <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#52_30">Typ</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#44_9">Integer_Field</A>)
+   <b>is</b>
+      C_Integer_Field_Type : C_Field_Type;
+      <b>pragma</b> Import (C, C_Integer_Field_Type, "TYPE_INTEGER");
+
+      <b>function</b> <FONT COLOR=red><A NAME="54_16">Set_Fld_Type</A></FONT> (<FONT COLOR=red><A NAME="54_30">F</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#51_30">Fld</A>;
+                             Cft  : C_Field_Type := C_Integer_Field_Type;
+                             <FONT COLOR=red><A NAME="56_30">Arg1</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+                             <FONT COLOR=red><A NAME="57_30">Arg2</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#57_12">C_Long_Int</A>;
+                             <FONT COLOR=red><A NAME="58_30">Arg3</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#57_12">C_Long_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#54_16">Set_Fld_Type</A>, "set_field_type");
+
+      <FONT COLOR=red><A NAME="61_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#61_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#54_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#56_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#46_10">Precision</A>),
+                           <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#57_30">Arg2</A> =&gt; <A HREF="terminal_interface-curses-aux__ads.htm#57_12">C_Long_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#47_10">Lower_Limit</A>),
+                           <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#58_30">Arg3</A> =&gt; <A HREF="terminal_interface-curses-aux__ads.htm#57_12">C_Long_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#48_10">Upper_Limit</A>));
+      <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#61_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#61_7">Res</A>);
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#51_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#52_30">Typ</A>);
+   <b>end</b> Set_Field_Type;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.IntField;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 88%
rename from Ada95/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm
rename to doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm
index 6de61deb8960700f29cacaf0c7ea20bb51bc5daa..a227bc7b2045fe6e088325e94c0284f5a4217be7 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-intfield.ads</TITLE></HEAD>
+<HTML><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>
@@ -37,7 +37,7 @@
 <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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>
 
    <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;
+         <FONT COLOR=red><A NAME="46_10">Precision</A></FONT>   : Natural;
+         <FONT COLOR=red><A NAME="47_10">Lower_Limit</A></FONT> : Integer;
+         <FONT COLOR=red><A NAME="48_10">Upper_Limit</A></FONT> : 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>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#56_9">Field</A>;
+                             <FONT COLOR=red><A NAME="52_30">Typ</A></FONT> : <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;
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm
new file mode 100644 (file)
index 0000000..58e84d3
--- /dev/null
@@ -0,0 +1,73 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-ipv4_address.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-ipv4_address.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 1996</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.6 @</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>.C;
+<b>with</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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#41_53">IPV4_Address</A><FONT COLOR=red><A NAME="44_58"></A></FONT> <b>is</b>
+
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#47_14">Set_Field_Type</A><FONT COLOR=red><A NAME="48_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#47_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                             <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#48_30">Typ</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#45_9">Internet_V4_Address_Field</A>)
+   <b>is</b>
+      C_IPV4_Field_Type : C_Field_Type;
+      <b>pragma</b> Import (C, C_IPV4_Field_Type, "TYPE_IPV4");
+
+      <b>function</b> <FONT COLOR=red><A NAME="54_16">Set_Fld_Type</A></FONT> (<FONT COLOR=red><A NAME="54_30">F</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#47_30">Fld</A>;
+                             Cft  : C_Field_Type := C_IPV4_Field_Type)
+                             <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#54_16">Set_Fld_Type</A>, "set_field_type");
+
+      <FONT COLOR=red><A NAME="59_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#59_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#54_16">Set_Fld_Type</A>;
+      <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#59_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#59_7">Res</A>);
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#47_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#48_30">Typ</A>);
+   <b>end</b> Set_Field_Type;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 91%
rename from Ada95/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm
rename to doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm
index ec45a062bb1850b94ac5352bbc76f268d64343a6..1954baaef22db1011188be1cd5fa462608c92961 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-ipv4_address.ads</TITLE></HEAD>
+<HTML><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>
@@ -37,7 +37,7 @@
 <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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>
@@ -48,8 +48,8 @@
 
    <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>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#56_9">Field</A>;
+                             <FONT COLOR=red><A NAME="48_30">Typ</A></FONT> : <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;
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm
new file mode 100644 (file)
index 0000000..914c70d
--- /dev/null
@@ -0,0 +1,79 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-numeric.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-numeric.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 1996</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.7 @</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>.C;
+<b>with</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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#41_53">Numeric</A><FONT COLOR=red><A NAME="44_58"></A></FONT> <b>is</b>
+
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#51_14">Set_Field_Type</A><FONT COLOR=red><A NAME="48_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#51_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                             <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#52_30">Typ</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#44_9">Numeric_Field</A>)
+   <b>is</b>
+      <b>type</b> <FONT COLOR=red><A NAME="51_12">Double</A></FONT> <b>is</b> <b>new</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.double;
+
+      C_Numeric_Field_Type : C_Field_Type;
+      <b>pragma</b> Import (C, C_Numeric_Field_Type, "TYPE_NUMERIC");
+
+      <b>function</b> <FONT COLOR=red><A NAME="56_16">Set_Fld_Type</A></FONT> (<FONT COLOR=red><A NAME="56_30">F</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#51_30">Fld</A>;
+                             Cft  : C_Field_Type := C_Numeric_Field_Type;
+                             <FONT COLOR=red><A NAME="58_30">Arg1</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+                             <FONT COLOR=red><A NAME="59_30">Arg2</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#51_12">Double</A>;
+                             <FONT COLOR=red><A NAME="60_30">Arg3</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#51_12">Double</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#56_16">Set_Fld_Type</A>, "set_field_type");
+
+      <FONT COLOR=red><A NAME="63_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#63_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#56_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#58_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#46_10">Precision</A>),
+                           <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#59_30">Arg2</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#51_12">Double</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#47_10">Lower_Limit</A>),
+                           <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#60_30">Arg3</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#51_12">Double</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#48_10">Upper_Limit</A>));
+      <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#63_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#63_7">Res</A>);
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#51_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#52_30">Typ</A>);
+   <b>end</b> Set_Field_Type;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.Numeric;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 88%
rename from Ada95/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm
rename to doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm
index e92389e1b3795302c50529573ce53a99567b28e4..401fedf5084aa9de1b294419b597ee5ecea46a74 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-numeric.ads</TITLE></HEAD>
+<HTML><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>
@@ -37,7 +37,7 @@
 <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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>
 
    <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;
+         <FONT COLOR=red><A NAME="46_10">Precision</A></FONT>   : Natural;
+         <FONT COLOR=red><A NAME="47_10">Lower_Limit</A></FONT> : Float;
+         <FONT COLOR=red><A NAME="48_10">Upper_Limit</A></FONT> : 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>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#56_9">Field</A>;
+                             <FONT COLOR=red><A NAME="52_30">Typ</A></FONT> : <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;
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm
new file mode 100644 (file)
index 0000000..9c08255
--- /dev/null
@@ -0,0 +1,76 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-regexp.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-regexp.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 1996</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.6 @</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>.C; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#41_53">RegExp</A><FONT COLOR=red><A NAME="44_58"></A></FONT> <b>is</b>
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#51_14">Set_Field_Type</A><FONT COLOR=red><A NAME="46_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#51_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                             <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#52_30">Typ</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#46_9">Regular_Expression_Field</A>)
+   <b>is</b>
+      <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+
+      C_Regexp_Field_Type : C_Field_Type;
+      <b>pragma</b> Import (C, C_Regexp_Field_Type, "TYPE_REGEXP");
+
+      <b>function</b> <FONT COLOR=red><A NAME="54_16">Set_Ftyp</A></FONT> (<FONT COLOR=red><A NAME="54_26">F</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#51_30">Fld</A>;
+                         Cft  : C_Field_Type := C_Regexp_Field_Type;
+                         Arg1 : Char_Ptr) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#54_16">Set_Ftyp</A>, "set_field_type");
+
+      <FONT COLOR=red><A NAME="59_7">Txt</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#48_10">Regular_Expression</A>.<b>all</b>'Length);
+      <FONT COLOR=red><A NAME="60_7">Len</A></FONT> : size_t;
+      <FONT COLOR=red><A NAME="61_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      To_C (<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#48_10">Regular_Expression</A>.<b>all</b>, <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#59_7">Txt</A>, <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#60_7">Len</A>);
+      <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#61_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#54_16">Set_Ftyp</A> (Arg1 =&gt; <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#59_7">Txt</A> (<A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#59_7">Txt</A>'First)'<b>Access</b>);
+      <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#61_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#61_7">Res</A>);
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#51_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#52_30">Typ</A>);
+   <b>end</b> Set_Field_Type;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.RegExp;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 89%
rename from Ada95/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm
rename to doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm
index 4c90c841f29debd7b3ca26e87991166047196706..b3bcf716703f55967871dd87ea5c3ded9bc8e833 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-regexp.ads</TITLE></HEAD>
+<HTML><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>
@@ -37,7 +37,7 @@
 <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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>
 
    <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>;
+         <FONT COLOR=red><A NAME="48_10">Regular_Expression</A></FONT> : <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>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#56_9">Field</A>;
+                             <FONT COLOR=red><A NAME="52_30">Typ</A></FONT> : <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;
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm
new file mode 100644 (file)
index 0000000..da6dca4
--- /dev/null
@@ -0,0 +1,115 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-user-choice.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-user-choice.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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> Ada.Unchecked_Conversion;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.User.<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#43_58">Choice</A><FONT COLOR=red><A NAME="45_63"></A></FONT> <b>is</b>
+
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+   <b>function</b> <FONT COLOR=red><A NAME="49_13">To_Argument_Access</A></FONT> <b>is</b> <b>new</b> Ada.Unchecked_Conversion
+     (System.Address, Argument_Access);
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#82_13">Generic_Next</A><FONT COLOR=red><A NAME="52_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#82_27">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                          <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#83_27">Usr</A> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#48_12">C_Int</A>
+   <b>is</b>
+      <FONT COLOR=red><A NAME="55_7">Result</A></FONT> : Boolean;
+      Udf    : User_Defined_Field_Type_With_Choice_Access :=
+        User_Defined_Field_Type_With_Choice_Access
+        (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#49_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#83_27">Usr</A>).Typ);
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#55_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#60_13">Next</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#82_27">Fld</A>, Udf.<b>all</b>);
+      <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#48_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#55_7">Result</A>));
+   <b>end</b> Generic_Next;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#89_13">Generic_Prev</A><FONT COLOR=red><A NAME="64_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#89_27">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                          <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#90_27">Usr</A> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#48_12">C_Int</A>
+   <b>is</b>
+      <FONT COLOR=red><A NAME="67_7">Result</A></FONT> : Boolean;
+      Udf    : User_Defined_Field_Type_With_Choice_Access :=
+        User_Defined_Field_Type_With_Choice_Access
+        (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#49_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#90_27">Usr</A>).Typ);
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#67_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#67_13">Previous</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#89_27">Fld</A>, Udf.<b>all</b>);
+      <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#48_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#67_7">Result</A>));
+   <b>end</b> Generic_Prev;
+
+   <FONT COLOR=green><EM>--  -----------------------------------------------------------------------</EM></FONT>
+   <FONT COLOR=green><EM>--</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#80_13">C_Generic_Choice</A><FONT COLOR=red><A NAME="78_13"></A></FONT> <b>return</b> C_Field_Type
+   <b>is</b>
+      <FONT COLOR=red><A NAME="80_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+      T   : C_Field_Type;
+   <b>begin</b>
+      <b>if</b> M_Generic_Choice = Null_Field_Type <b>then</b>
+         T := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#222_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#83_13">Generic_Field_Check</A>'<b>Access</b>,
+                             <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#90_13">Generic_Char_Check</A>'<b>Access</b>);
+         <b>if</b> T = Null_Field_Type <b>then</b>
+            <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+         <b>else</b>
+            <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#80_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#227_13">Set_Fieldtype_Arg</A> (T,
+                                      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#162_13">Make_Arg</A>'<b>Access</b>,
+                                      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#167_13">Copy_Arg</A>'<b>Access</b>,
+                                      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#172_14">Free_Arg</A>'<b>Access</b>);
+            <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#80_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+               <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#80_7">Res</A>);
+            <b>end</b> <b>if</b>;
+
+            <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#80_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#234_13">Set_Fieldtype_Choice</A> (T,
+                                         <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#82_13">Generic_Next</A>'<b>Access</b>,
+                                         <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#89_13">Generic_Prev</A>'<b>Access</b>);
+            <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#80_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+               <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#80_7">Res</A>);
+            <b>end</b> <b>if</b>;
+         <b>end</b> <b>if</b>;
+         M_Generic_Choice := T;
+      <b>end</b> <b>if</b>;
+      <b>pragma</b> Assert (M_Generic_Choice /= Null_Field_Type);
+      <b>return</b> M_Generic_Choice;
+   <b>end</b> C_Generic_Choice;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.User.Choice;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 70%
rename from Ada95/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm
rename to doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm
index 57bdc250eed2040369dcf910ce890a270ee85fb9..497eee308d021c0b470cd4007ea5c607b62ec931 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-user-choice.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
 
 <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>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+   <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>.C.int;
 
    <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>
+   <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
+     (<FONT COLOR=red><A NAME="61_7">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+      <FONT COLOR=red><A NAME="62_7">Typ</A></FONT> : <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>
+   <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
+     (<FONT COLOR=red><A NAME="68_7">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+      <FONT COLOR=red><A NAME="69_7">Typ</A></FONT> : <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>--  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>
+   <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>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
 
    <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>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#56_9">Field</A>;
+                          <FONT COLOR=red><A NAME="83_27">Usr</A></FONT> : System.Address) <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>
+   <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>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#56_9">Field</A>;
+                          <FONT COLOR=red><A NAME="90_27">Usr</A></FONT> : System.Address) <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>
+   <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/doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm
new file mode 100644 (file)
index 0000000..4e54495
--- /dev/null
@@ -0,0 +1,137 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-user.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-user.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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> Ada.Unchecked_Conversion;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#43_53">User</A><FONT COLOR=red><A NAME="45_58"></A></FONT> <b>is</b>
+
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#70_14">Set_Field_Type</A><FONT COLOR=red><A NAME="49_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#70_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                             <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#71_30">Typ</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>)
+   <b>is</b>
+      <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#63_16">Allocate_Arg</A><FONT COLOR=red><A NAME="52_16"></A></FONT> (<FONT COLOR=red><A NAME="52_30">T</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>'Class)
+                             <b>return</b> Argument_Access;
+
+      <b>function</b> <FONT COLOR=red><A NAME="55_16">Set_Fld_Type</A></FONT> (<FONT COLOR=red><A NAME="55_30">F</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#70_30">Fld</A>;
+                             Cft  : C_Field_Type := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#81_13">C_Generic_Type</A>;
+                             Arg1 : Argument_Access)
+                             <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#55_16">Set_Fld_Type</A>, "set_field_type");
+
+      <FONT COLOR=red><A NAME="61_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+
+      <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#52_16">Allocate_Arg</A><FONT COLOR=red><A NAME="63_16"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#52_30">T</A> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>'Class)
+                             <b>return</b> Argument_Access
+      <b>is</b>
+         Ptr : Field_Type_Access := <b>new</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>'Class'(<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#52_30">T</A>);
+      <b>begin</b>
+         <b>return</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#211_9">Argument</A>'(Usr =&gt; System.Null_Address,
+                              Typ =&gt; Ptr,
+                              Cft =&gt; Null_Field_Type);
+      <b>end</b> Allocate_Arg;
+
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#61_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#55_16">Set_Fld_Type</A> (Arg1 =&gt; <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#52_16">Allocate_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#71_30">Typ</A>));
+      <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#61_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#61_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Field_Type;
+
+   <b>function</b> <FONT COLOR=red><A NAME="80_13">To_Argument_Access</A></FONT> <b>is</b> <b>new</b> Ada.Unchecked_Conversion
+     (System.Address, Argument_Access);
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#83_13">Generic_Field_Check</A><FONT COLOR=red><A NAME="83_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#83_34">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                                 <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#84_34">Usr</A> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>
+   <b>is</b>
+      <FONT COLOR=red><A NAME="86_7">Result</A></FONT> : Boolean;
+      Udf    : User_Defined_Field_Type_Access :=
+        User_Defined_Field_Type_Access (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#80_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#84_34">Usr</A>).Typ);
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#86_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#56_13">Field_Check</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#83_34">Fld</A>, Udf.<b>all</b>);
+      <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#86_7">Result</A>));
+   <b>end</b> Generic_Field_Check;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#90_13">Generic_Char_Check</A><FONT COLOR=red><A NAME="94_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#90_33">Ch</A>  : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>;
+                                <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#91_33">Usr</A> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>
+   <b>is</b>
+      <FONT COLOR=red><A NAME="97_7">Result</A></FONT> : Boolean;
+      Udf    : User_Defined_Field_Type_Access :=
+        User_Defined_Field_Type_Access (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#80_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#91_33">Usr</A>).Typ);
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#97_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#63_13">Character_Check</A> (Character'Val (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#90_33">Ch</A>), Udf.<b>all</b>);
+      <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#97_7">Result</A>));
+   <b>end</b> Generic_Char_Check;
+
+   <FONT COLOR=green><EM>--  -----------------------------------------------------------------------</EM></FONT>
+   <FONT COLOR=green><EM>--</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#81_13">C_Generic_Type</A><FONT COLOR=red><A NAME="107_13"></A></FONT> <b>return</b> C_Field_Type
+   <b>is</b>
+      <FONT COLOR=red><A NAME="109_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+      T   : C_Field_Type;
+   <b>begin</b>
+      <b>if</b> M_Generic_Type = Null_Field_Type <b>then</b>
+         T := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#222_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#83_13">Generic_Field_Check</A>'<b>Access</b>,
+                             <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#90_13">Generic_Char_Check</A>'<b>Access</b>);
+         <b>if</b> T = Null_Field_Type <b>then</b>
+            <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+         <b>else</b>
+            <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#109_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#227_13">Set_Fieldtype_Arg</A> (T,
+                                      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#162_13">Make_Arg</A>'<b>Access</b>,
+                                      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#167_13">Copy_Arg</A>'<b>Access</b>,
+                                      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#172_14">Free_Arg</A>'<b>Access</b>);
+            <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#109_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+               <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#109_7">Res</A>);
+            <b>end</b> <b>if</b>;
+         <b>end</b> <b>if</b>;
+         M_Generic_Type := T;
+      <b>end</b> <b>if</b>;
+      <b>pragma</b> Assert (M_Generic_Type /= Null_Field_Type);
+      <b>return</b> M_Generic_Type;
+   <b>end</b> C_Generic_Type;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.User;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 68%
rename from Ada95/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm
rename to doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm
index 508b3e641bce84ff568b0c2379cefc6327efe64e..77f09bdb071612d9426d2f15d48213a2e2e4eedd 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-user.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
 
 <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>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+   <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>.C.int;
 
    <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>
+   <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
+     (<FONT COLOR=red><A NAME="57_7">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+      <FONT COLOR=red><A NAME="58_7">Typ</A></FONT> : <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>
+   <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
+     (<FONT COLOR=red><A NAME="64_7">Ch</A></FONT>  : Character;
+      <FONT COLOR=red><A NAME="65_7">Typ</A></FONT> : <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>
+   <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>
+   <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#56_9">Field</A>;
+                             <FONT COLOR=red><A NAME="71_30">Typ</A></FONT> : <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>
+   <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>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
 
    <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>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#56_9">Field</A>;
+                                 <FONT COLOR=red><A NAME="84_34">Usr</A></FONT> : System.Address) <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>
+   <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>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> (<FONT COLOR=red><A NAME="90_33">Ch</A></FONT>  : <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> : System.Address) <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>
+   <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/doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm b/doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm
new file mode 100644 (file)
index 0000000..b721bc1
--- /dev/null
@@ -0,0 +1,301 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+<b>with</b> Ada.Unchecked_Deallocation;
+<b>with</b> Ada.Unchecked_Conversion;
+<FONT COLOR=green><EM>--  |</EM></FONT>
+<FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+<FONT COLOR=green><EM>--  | man page form_fieldtype.3x</EM></FONT>
+<FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+<FONT COLOR=green><EM>--  |</EM></FONT>
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A><FONT COLOR=red><A NAME="50_46"></A></FONT> <b>is</b>
+
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+   <b>use</b> <b>type</b> System.Address;
+
+   <b>function</b> <FONT COLOR=red><A NAME="55_13">To_Argument_Access</A></FONT> <b>is</b> <b>new</b> Ada.Unchecked_Conversion
+     (System.Address, Argument_Access);
+
+   <b>function</b> <FONT COLOR=red><A NAME="58_13">Get_Fieldtype</A></FONT> (<FONT COLOR=red><A NAME="58_28">F</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> C_Field_Type;
+   <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#58_13">Get_Fieldtype</A>, "field_type");
+
+   <b>function</b> <FONT COLOR=red><A NAME="61_13">Get_Arg</A></FONT> (<FONT COLOR=red><A NAME="61_22">F</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> System.Address;
+   <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#61_13">Get_Arg</A>, "field_arg");
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_field_validation.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#79_13">Get_Type</A><FONT COLOR=red><A NAME="70_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#79_23">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> Field_Type_Access
+   <b>is</b>
+      Low_Level : <b>constant</b> C_Field_Type := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#58_13">Get_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#79_23">Fld</A>);
+      Arg : Argument_Access;
+   <b>begin</b>
+      <b>if</b> Low_Level = Null_Field_Type <b>then</b>
+         <b>return</b> <b>null</b>;
+      <b>else</b>
+         <b>if</b> Low_Level = M_Builtin_Router <b>or</b> <b>else</b>
+           Low_Level = M_Generic_Type <b>or</b> <b>else</b>
+           Low_Level = M_Choice_Router <b>or</b> <b>else</b>
+           Low_Level = M_Generic_Choice <b>then</b>
+            Arg := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#55_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#61_13">Get_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#79_23">Fld</A>));
+            <b>if</b> Arg = <b>null</b> <b>then</b>
+               <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+            <b>else</b>
+               <b>return</b> Arg.Typ;
+            <b>end</b> <b>if</b>;
+         <b>else</b>
+            <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+         <b>end</b> <b>if</b>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Get_Type;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#162_13">Make_Arg</A><FONT COLOR=red><A NAME="94_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#162_23">Args</A> : System.Address) <b>return</b> System.Address
+   <b>is</b>
+      <FONT COLOR=green><EM>--  Actually args is a double indirected pointer to the arguments</EM></FONT>
+      <FONT COLOR=green><EM>--  of a C variable argument list. In theory it is now quite</EM></FONT>
+      <FONT COLOR=green><EM>--  complicated to write portable routine that reads the arguments,</EM></FONT>
+      <FONT COLOR=green><EM>--  because one has to know the growth direction of the stack and</EM></FONT>
+      <FONT COLOR=green><EM>--  the sizes of the individual arguments.</EM></FONT>
+      <FONT COLOR=green><EM>--  Fortunately we are only interested in the first argument (#0),</EM></FONT>
+      <FONT COLOR=green><EM>--  we know its size and for the first arg we don't care about</EM></FONT>
+      <FONT COLOR=green><EM>--  into which stack direction we have to proceed. We simply</EM></FONT>
+      <FONT COLOR=green><EM>--  resolve the double indirection and thats it.</EM></FONT>
+      <b>type</b> V <b>is</b> <b>access</b> <b>all</b> System.Address;
+      <b>function</b> <FONT COLOR=red><A NAME="106_16">To_Access</A></FONT> <b>is</b> <b>new</b> Ada.Unchecked_Conversion (System.Address,
+                                                          V);
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#106_16">To_Access</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#106_16">To_Access</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#162_23">Args</A>).<b>all</b>).<b>all</b>;
+   <b>end</b> Make_Arg;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#167_13">Copy_Arg</A><FONT COLOR=red><A NAME="112_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#167_23">Usr</A> : System.Address) <b>return</b> System.Address
+   <b>is</b>
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#167_23">Usr</A>;
+   <b>end</b> Copy_Arg;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#172_14">Free_Arg</A><FONT COLOR=red><A NAME="118_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#172_24">Usr</A> : <b>in</b> System.Address)
+   <b>is</b>
+      <b>procedure</b> <FONT COLOR=red><A NAME="120_17">Free_Type</A></FONT> <b>is</b> <b>new</b> Ada.Unchecked_Deallocation
+        (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A>'Class, Field_Type_Access);
+      <b>procedure</b> <FONT COLOR=red><A NAME="122_17">Freeargs</A></FONT> <b>is</b> <b>new</b> Ada.Unchecked_Deallocation
+        (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#211_9">Argument</A>, Argument_Access);
+
+      To_Be_Free : Argument_Access := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#55_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#172_24">Usr</A>);
+      Low_Level  : C_Field_Type;
+   <b>begin</b>
+      <b>if</b> To_Be_Free /= <b>null</b> <b>then</b>
+         <b>if</b> To_Be_Free.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#213_7">Usr</A> /= System.Null_Address <b>then</b>
+            Low_Level := To_Be_Free.Cft;
+            <b>if</b> Low_Level.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#126_10">Freearg</A> /= <b>null</b> <b>then</b>
+               Low_Level.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#126_10">Freearg</A> (To_Be_Free.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#213_7">Usr</A>);
+            <b>end</b> <b>if</b>;
+         <b>end</b> <b>if</b>;
+         <b>if</b> To_Be_Free.Typ /= <b>null</b> <b>then</b>
+            <A HREF="terminal_interface-curses-forms-field_types__adb.htm#120_17">Free_Type</A> (To_Be_Free.Typ);
+         <b>end</b> <b>if</b>;
+         <A HREF="terminal_interface-curses-forms-field_types__adb.htm#122_17">Freeargs</A> (To_Be_Free);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Free_Arg;
+
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_14">Wrap_Builtin</A><FONT COLOR=red><A NAME="143_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_28">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                           <A HREF="terminal_interface-curses-forms-field_types__ads.htm#152_28">Typ</A> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A>'Class;
+                           Cft : C_Field_Type := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#148_13">C_Builtin_Router</A>)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="147_7">Usr_Arg</A></FONT>   : System.Address := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#61_13">Get_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_28">Fld</A>);
+      Low_Level : <b>constant</b> C_Field_Type := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#58_13">Get_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_28">Fld</A>);
+      Arg : Argument_Access;
+      <FONT COLOR=red><A NAME="150_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+      <b>function</b> <FONT COLOR=red><A NAME="151_16">Set_Fld_Type</A></FONT> (<FONT COLOR=red><A NAME="151_30">F</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_28">Fld</A>;
+                             Cf   : C_Field_Type := Cft;
+                             Arg1 : Argument_Access) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#151_16">Set_Fld_Type</A>, "set_field_type");
+
+   <b>begin</b>
+      <b>pragma</b> Assert (Low_Level /= Null_Field_Type);
+      <b>if</b> Cft /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#148_13">C_Builtin_Router</A> <b>and</b> <b>then</b> Cft /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#149_13">C_Choice_Router</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+      <b>else</b>
+         Arg := <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#211_9">Argument</A>'(Usr =&gt; System.Null_Address,
+                              Typ =&gt; <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A>'Class'(<A HREF="terminal_interface-curses-forms-field_types__ads.htm#152_28">Typ</A>),
+                              Cft =&gt; <A HREF="terminal_interface-curses-forms-field_types__adb.htm#58_13">Get_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_28">Fld</A>));
+         <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#147_7">Usr_Arg</A> /= System.Null_Address <b>then</b>
+            <b>if</b> Low_Level.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#125_10">Copyarg</A> /= <b>null</b> <b>then</b>
+               Arg.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#213_7">Usr</A> := Low_Level.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#125_10">Copyarg</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#147_7">Usr_Arg</A>);
+            <b>else</b>
+               Arg.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#213_7">Usr</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#147_7">Usr_Arg</A>;
+            <b>end</b> <b>if</b>;
+         <b>end</b> <b>if</b>;
+
+         <A HREF="terminal_interface-curses-forms-field_types__adb.htm#150_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#151_16">Set_Fld_Type</A> (Arg1 =&gt; Arg);
+         <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#150_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+            <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#150_7">Res</A>);
+         <b>end</b> <b>if</b>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Wrap_Builtin;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#177_13">Field_Check_Router</A><FONT COLOR=red><A NAME="179_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#177_33">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                                <A HREF="terminal_interface-curses-forms-field_types__ads.htm#178_33">Usr</A> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>
+   <b>is</b>
+      Arg  : <b>constant</b> Argument_Access := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#55_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#178_33">Usr</A>);
+   <b>begin</b>
+      <b>pragma</b> Assert (Arg /= <b>null</b> <b>and</b> <b>then</b> Arg.Cft /= Null_Field_Type
+                     <b>and</b> <b>then</b> Arg.Typ /= <b>null</b>);
+      <b>if</b> Arg.Cft.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#127_10">Fcheck</A> /= <b>null</b> <b>then</b>
+         <b>return</b> Arg.Cft.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#127_10">Fcheck</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#177_33">Fld</A>, Arg.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#213_7">Usr</A>);
+      <b>else</b>
+         <b>return</b> 1;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Field_Check_Router;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#185_13">Char_Check_Router</A><FONT COLOR=red><A NAME="193_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#185_32">Ch</A>  : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+                               <A HREF="terminal_interface-curses-forms-field_types__ads.htm#186_32">Usr</A> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>
+   <b>is</b>
+      Arg  : <b>constant</b> Argument_Access := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#55_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#186_32">Usr</A>);
+   <b>begin</b>
+      <b>pragma</b> Assert (Arg /= <b>null</b> <b>and</b> <b>then</b> Arg.Cft /= Null_Field_Type
+                     <b>and</b> <b>then</b> Arg.Typ /= <b>null</b>);
+      <b>if</b> Arg.Cft.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#128_10">Ccheck</A> /= <b>null</b> <b>then</b>
+         <b>return</b> Arg.Cft.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#128_10">Ccheck</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#185_32">Ch</A>, Arg.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#213_7">Usr</A>);
+      <b>else</b>
+         <b>return</b> 1;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Char_Check_Router;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#193_13">Next_Router</A><FONT COLOR=red><A NAME="207_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#193_26">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                         <A HREF="terminal_interface-curses-forms-field_types__ads.htm#194_26">Usr</A> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>
+   <b>is</b>
+      Arg  : <b>constant</b> Argument_Access := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#55_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#194_26">Usr</A>);
+   <b>begin</b>
+      <b>pragma</b> Assert (Arg /= <b>null</b> <b>and</b> <b>then</b> Arg.Cft /= Null_Field_Type
+                     <b>and</b> <b>then</b> Arg.Typ /= <b>null</b>);
+      <b>if</b> Arg.Cft.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#129_10">Next</A> /= <b>null</b> <b>then</b>
+         <b>return</b> Arg.Cft.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#129_10">Next</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#193_26">Fld</A>, Arg.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#213_7">Usr</A>);
+      <b>else</b>
+         <b>return</b> 1;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Next_Router;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#201_13">Prev_Router</A><FONT COLOR=red><A NAME="221_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#201_26">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                         <A HREF="terminal_interface-curses-forms-field_types__ads.htm#202_26">Usr</A> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>
+   <b>is</b>
+      Arg  : <b>constant</b> Argument_Access := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#55_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#202_26">Usr</A>);
+   <b>begin</b>
+      <b>pragma</b> Assert (Arg /= <b>null</b> <b>and</b> <b>then</b> Arg.Cft /= Null_Field_Type
+                     <b>and</b> <b>then</b> Arg.Typ /= <b>null</b>);
+      <b>if</b> Arg.Cft.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#129_16">Prev</A> /= <b>null</b> <b>then</b>
+         <b>return</b> Arg.Cft.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#129_16">Prev</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#201_26">Fld</A>, Arg.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#213_7">Usr</A>);
+      <b>else</b>
+         <b>return</b> 1;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Prev_Router;
+
+   <FONT COLOR=green><EM>--  -----------------------------------------------------------------------</EM></FONT>
+   <FONT COLOR=green><EM>--</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#148_13">C_Builtin_Router</A><FONT COLOR=red><A NAME="237_13"></A></FONT> <b>return</b> C_Field_Type
+   <b>is</b>
+      <FONT COLOR=red><A NAME="239_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+      T   : C_Field_Type;
+   <b>begin</b>
+      <b>if</b> M_Builtin_Router = Null_Field_Type <b>then</b>
+         T := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#222_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#177_13">Field_Check_Router</A>'<b>Access</b>,
+                             <A HREF="terminal_interface-curses-forms-field_types__ads.htm#185_13">Char_Check_Router</A>'<b>Access</b>);
+         <b>if</b> T = Null_Field_Type <b>then</b>
+            <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+         <b>else</b>
+            <A HREF="terminal_interface-curses-forms-field_types__adb.htm#239_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#227_13">Set_Fieldtype_Arg</A> (T,
+                                      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#162_13">Make_Arg</A>'<b>Access</b>,
+                                      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#167_13">Copy_Arg</A>'<b>Access</b>,
+                                      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#172_14">Free_Arg</A>'<b>Access</b>);
+            <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#239_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+               <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#239_7">Res</A>);
+            <b>end</b> <b>if</b>;
+         <b>end</b> <b>if</b>;
+         M_Builtin_Router := T;
+      <b>end</b> <b>if</b>;
+      <b>pragma</b> Assert (M_Builtin_Router /= Null_Field_Type);
+      <b>return</b> M_Builtin_Router;
+   <b>end</b> C_Builtin_Router;
+
+   <FONT COLOR=green><EM>--  -----------------------------------------------------------------------</EM></FONT>
+   <FONT COLOR=green><EM>--</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#149_13">C_Choice_Router</A><FONT COLOR=red><A NAME="264_13"></A></FONT> <b>return</b> C_Field_Type
+   <b>is</b>
+      <FONT COLOR=red><A NAME="266_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+      T   : C_Field_Type;
+   <b>begin</b>
+      <b>if</b> M_Choice_Router = Null_Field_Type <b>then</b>
+         T := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#222_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#177_13">Field_Check_Router</A>'<b>Access</b>,
+                             <A HREF="terminal_interface-curses-forms-field_types__ads.htm#185_13">Char_Check_Router</A>'<b>Access</b>);
+         <b>if</b> T = Null_Field_Type <b>then</b>
+            <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+         <b>else</b>
+            <A HREF="terminal_interface-curses-forms-field_types__adb.htm#266_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#227_13">Set_Fieldtype_Arg</A> (T,
+                                      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#162_13">Make_Arg</A>'<b>Access</b>,
+                                      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#167_13">Copy_Arg</A>'<b>Access</b>,
+                                      <A HREF="terminal_interface-curses-forms-field_types__ads.htm#172_14">Free_Arg</A>'<b>Access</b>);
+            <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#266_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+               <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#266_7">Res</A>);
+            <b>end</b> <b>if</b>;
+
+            <A HREF="terminal_interface-curses-forms-field_types__adb.htm#266_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#234_13">Set_Fieldtype_Choice</A> (T,
+                                         <A HREF="terminal_interface-curses-forms-field_types__ads.htm#193_13">Next_Router</A>'<b>Access</b>,
+                                         <A HREF="terminal_interface-curses-forms-field_types__ads.htm#201_13">Prev_Router</A>'<b>Access</b>);
+            <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#266_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+               <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#266_7">Res</A>);
+            <b>end</b> <b>if</b>;
+         <b>end</b> <b>if</b>;
+         M_Choice_Router := T;
+      <b>end</b> <b>if</b>;
+      <b>pragma</b> Assert (M_Choice_Router /= Null_Field_Type);
+      <b>return</b> M_Choice_Router;
+   <b>end</b> C_Choice_Router;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm b/doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm
new file mode 100644 (file)
index 0000000..e11c256
--- /dev/null
@@ -0,0 +1,245 @@
+<HTML><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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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 01.00</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 (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>--  #1A NAME="AFU_1"#2|</EM></FONT>
+   <b>procedure</b> Set_Field_Type (<FONT COLOR=red><A NAME="67_30">Fld</A></FONT>      : <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>--  #1A NAME="AFU_2"#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#108_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>
+         <FONT COLOR=red><A NAME="122_10">Status</A></FONT> :              <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.short;
+         <FONT COLOR=red><A NAME="123_10">Ref_Count</A></FONT> :           Interfaces.C.long;
+         <FONT COLOR=red><A NAME="124_10">Left</A></FONT>, Right :         <A HREF="terminal_interface-curses-forms-field_types__ads.htm#92_9">System</A>.Address;
+         <FONT COLOR=red><A NAME="125_10">Makearg</A></FONT> :             <A HREF="terminal_interface-curses-forms-field_types__ads.htm#96_9">Makearg_Function</A>;
+         <FONT COLOR=red><A NAME="126_10">Copyarg</A></FONT> :             <A HREF="terminal_interface-curses-forms-field_types__ads.htm#100_9">Copyarg_Function</A>;
+         <FONT COLOR=red><A NAME="127_10">Freearg</A></FONT> :             <A HREF="terminal_interface-curses-forms-field_types__ads.htm#104_9">Freearg_Function</A>;
+         <FONT COLOR=red><A NAME="128_10">Fcheck</A></FONT> :              <A HREF="terminal_interface-curses-forms-field_types__ads.htm#108_9">Field_Check_Function</A>;
+         <FONT COLOR=red><A NAME="129_10">Ccheck</A></FONT><FONT COLOR=red><A NAME="129_16"> </A></FONT>:              <A HREF="terminal_interface-curses-forms-field_types__ads.htm#112_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#264_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 (<FONT COLOR=red><A NAME="152_28">Fld</A></FONT> : <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#148_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#167_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> : Field;
+                         <A HREF="terminal_interface-curses-forms-field_types__ads.htm#177_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#185_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> : Field;
+                         <A HREF="terminal_interface-curses-forms-field_types__ads.htm#193_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> : Field;
+                         <A HREF="terminal_interface-curses-forms-field_types__ads.htm#201_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> : Field_Type_Access;   <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 (<FONT COLOR=red><A NAME="223_28">Fcheck</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#108_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 (<FONT COLOR=red><A NAME="228_32">Cft</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#92_9">C_Field_Type</A>;
+                               <FONT COLOR=red><A NAME="229_32">Mak</A></FONT> : <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#167_13">Make_Arg</A>'<b>Access</b>;
+                               <FONT COLOR=red><A NAME="230_32">Cop</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#100_9">Copyarg_Function</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#172_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 (<FONT COLOR=red><A NAME="235_35">Cft</A></FONT> : <FONT COLOR=red><A NAME="235_41">C_Field_Type</A></FONT>;
+            <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/doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm b/doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm
new file mode 100644 (file)
index 0000000..5f35c1b
--- /dev/null
@@ -0,0 +1,90 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_user_data.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_user_data.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>with</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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+
+<FONT COLOR=green><EM>--  |</EM></FONT>
+<FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+<FONT COLOR=green><EM>--  | man page form_field_userptr.3x</EM></FONT>
+<FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+<FONT COLOR=green><EM>--  |</EM></FONT>
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#45_41">Field_User_Data</A> <b>is</b>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#53_14">Set_User_Data</A><FONT COLOR=red><A NAME="54_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#53_29">Fld</A>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                            <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#54_29">Data</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#44_9">User_Access</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="57_16">Set_Field_Userptr</A></FONT> (<FONT COLOR=red><A NAME="57_35">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                                  <FONT COLOR=red><A NAME="58_35">Usr</A></FONT> : <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#44_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#57_16">Set_Field_Userptr</A>, "set_field_userptr");
+
+      <FONT COLOR=red><A NAME="61_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#57_16">Set_Field_Userptr</A> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#53_29">Fld</A>, <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#54_29">Data</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#61_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#61_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_User_Data;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#64_13">Get_User_Data</A><FONT COLOR=red><A NAME="70_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#64_28">Fld</A>  : <b>in</b>  <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#44_9">User_Access</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="72_16">Field_Userptr</A></FONT> (<FONT COLOR=red><A NAME="72_31">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#44_9">User_Access</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#72_16">Field_Userptr</A>, "field_userptr");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#72_16">Field_Userptr</A> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#64_28">Fld</A>);
+   <b>end</b> Get_User_Data;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#59_14">Get_User_Data</A><FONT COLOR=red><A NAME="78_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#59_29">Fld</A>  : <b>in</b>  <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                            <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#60_29">Data</A> : <b>out</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#44_9">User_Access</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#60_29">Data</A> := <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#64_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#59_29">Fld</A>);
+   <b>end</b> Get_User_Data;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_User_Data;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 75%
rename from Ada95/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm
rename to doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm
index 0c554af90548dec6751a77a9785d8e03f0242895..d5ae92d5c21a39104bd37b750d29840c25e40c33 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-forms-field_user_data.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>--  @Revision: 1.13 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
 <FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
 
 <b>generic</b>
 <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>--  |=====================================================================</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>;
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_1"#2|</EM></FONT>
+   <b>procedure</b> Set_User_Data (<FONT COLOR=red><A NAME="54_29">Fld</A></FONT>  : <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>
+   <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>;
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_2"#2|</EM></FONT>
+   <b>procedure</b> Get_User_Data (<FONT COLOR=red><A NAME="60_29">Fld</A></FONT>  : <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>--  AKA: <A HREF="../man/form_field_userptr.3x.html">field_userptr</A></EM></FONT>
 
-  <FONT COLOR=green><EM>--  <A NAME="AFU_3">|</EM></FONT>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_3"#2|</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>
+   <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;
diff --git a/doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm b/doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm
new file mode 100644 (file)
index 0000000..c9c148c
--- /dev/null
@@ -0,0 +1,91 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-form_user_data.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-form_user_data.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>
+<FONT COLOR=green><EM>--  |</EM></FONT>
+<FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+<FONT COLOR=green><EM>--  | man page form__userptr.3x</EM></FONT>
+<FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+<FONT COLOR=green><EM>--  |</EM></FONT>
+<b>with</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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#45_41">Form_User_Data</A> <b>is</b>
+
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#53_14">Set_User_Data</A><FONT COLOR=red><A NAME="55_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#53_29">Frm</A>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                            <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#54_29">Data</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#44_9">User_Access</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="58_16">Set_Form_Userptr</A></FONT> (<FONT COLOR=red><A NAME="58_34">Frm</A></FONT>  : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                                 <FONT COLOR=red><A NAME="59_34">Data</A></FONT> : <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#44_9">User_Access</A>)  <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#58_16">Set_Form_Userptr</A>, "set_form_userptr");
+
+      <FONT COLOR=red><A NAME="62_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#58_16">Set_Form_Userptr</A> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#53_29">Frm</A>, <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#54_29">Data</A>);
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#62_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#62_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_User_Data;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#64_13">Get_User_Data</A><FONT COLOR=red><A NAME="71_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#64_28">Frm</A>  : <b>in</b>  <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#44_9">User_Access</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="73_16">Form_Userptr</A></FONT> (<FONT COLOR=red><A NAME="73_30">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#44_9">User_Access</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#73_16">Form_Userptr</A>, "form_userptr");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#73_16">Form_Userptr</A> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#64_28">Frm</A>);
+   <b>end</b> Get_User_Data;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#59_14">Get_User_Data</A><FONT COLOR=red><A NAME="79_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#59_29">Frm</A>  : <b>in</b>  <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                            <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#60_29">Data</A> : <b>out</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#44_9">User_Access</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#60_29">Data</A> := <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#64_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#59_29">Frm</A>);
+   <b>end</b> Get_User_Data;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Form_User_Data;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 75%
rename from Ada95/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm
rename to doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm
index 21453c8c0024aa4f58a16cd034c87129ab279c9d..566496226dd33c18cc814bcded26cf99efc45c20 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-forms-form_user_data.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>--  @Revision: 1.12 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
 <FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
 
 <b>generic</b>
 <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>--  |=====================================================================</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>;
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_1"#2|</EM></FONT>
+   <b>procedure</b> Set_User_Data (<FONT COLOR=red><A NAME="54_29">Frm</A></FONT>  : <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>
+   <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>;
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_2"#2|</EM></FONT>
+   <b>procedure</b> Get_User_Data (<FONT COLOR=red><A NAME="60_29">Frm</A></FONT>  : <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>--  AKA: <A HREF="../man/form_userptr.3x.html">form_userptr</A></EM></FONT>
 
-  <FONT COLOR=green><EM>--  <A NAME="AFU_3">|</EM></FONT>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_3"#2|</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>
+   <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;
diff --git a/doc/html/ada/terminal_interface-curses-forms__adb.htm b/doc/html/ada/terminal_interface-curses-forms__adb.htm
new file mode 100644 (file)
index 0000000..d8848ec
--- /dev/null
@@ -0,0 +1,1165 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-forms.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms.adb </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                     --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Ada.Unchecked_Deallocation;
+<b>with</b> Ada.Unchecked_Conversion;
+
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Pointers;
+
+<b>with</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-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A><FONT COLOR=red><A NAME="50_40"></A></FONT> <b>is</b>
+
+   <b>use</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-aux__ads.htm#50_35">Aux</A>;
+
+   <b>type</b> <FONT COLOR=red><A NAME="54_9">C_Field_Array</A></FONT> <b>is</b> <b>array</b> (Natural <b>range</b> &lt;&gt;) <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+   <b>package</b> <FONT COLOR=red><A NAME="55_12">F_Array</A></FONT> <b>is</b> <b>new</b>
+     <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Pointers (Natural, <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>, <A HREF="terminal_interface-curses-forms__adb.htm#54_9">C_Field_Array</A>, <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A>);
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  subtype chars_ptr is Interfaces.C.Strings.chars_ptr;</EM></FONT>
+
+   <b>function</b> <FONT COLOR=red><A NAME="64_13">FOS_2_CInt</A></FONT> <b>is</b> <b>new</b>
+     Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field_Option_Set</A>,
+                               <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>);
+
+   <b>function</b> <FONT COLOR=red><A NAME="68_13">CInt_2_FOS</A></FONT> <b>is</b> <b>new</b>
+     Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>,
+                               <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field_Option_Set</A>);
+
+   <b>function</b> <FONT COLOR=red><A NAME="72_13">FrmOS_2_CInt</A></FONT> <b>is</b> <b>new</b>
+     Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form_Option_Set</A>,
+                               <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>);
+
+   <b>function</b> <FONT COLOR=red><A NAME="76_13">CInt_2_FrmOS</A></FONT> <b>is</b> <b>new</b>
+     Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>,
+                               <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form_Option_Set</A>);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#279_14">Request_Name</A><FONT COLOR=red><A NAME="80_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#279_28">Key</A>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A>;
+                                <A HREF="terminal_interface-curses-forms__ads.htm#280_28">Name</A> : <b>out</b> String)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="83_16">Form_Request_Name</A></FONT> (<FONT COLOR=red><A NAME="83_35">Key</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> chars_ptr;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#83_16">Form_Request_Name</A>, "form_request_name");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#83_16">Form_Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#279_28">Key</A>)), <A HREF="terminal_interface-curses-forms__ads.htm#280_28">Name</A>);
+   <b>end</b> Request_Name;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#282_14">Request_Name</A><FONT COLOR=red><A NAME="89_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#282_28">Key</A> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A>) <b>return</b> String
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="91_16">Form_Request_Name</A></FONT> (<FONT COLOR=red><A NAME="91_35">Key</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> chars_ptr;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#91_16">Form_Request_Name</A>, "form_request_name");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#91_16">Form_Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#282_28">Key</A>)));
+   <b>end</b> Request_Name;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_field_new.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#296_13">Create</A><FONT COLOR=red><A NAME="107_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#296_21">Height</A>       : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+                    <A HREF="terminal_interface-curses-forms__ads.htm#297_21">Width</A>        : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+                    <A HREF="terminal_interface-curses-forms__ads.htm#298_21">Top</A>          : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+                    <A HREF="terminal_interface-curses-forms__ads.htm#299_21">Left</A>         : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+                    <A HREF="terminal_interface-curses-forms__ads.htm#300_21">Off_Screen</A>   : Natural := 0;
+                    <A HREF="terminal_interface-curses-forms__ads.htm#301_21">More_Buffers</A> : <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A>'First)
+                    <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="115_16">Newfield</A></FONT> (<FONT COLOR=red><A NAME="115_26">H</A></FONT>, <FONT COLOR=red><A NAME="115_29">W</A></FONT>, <FONT COLOR=red><A NAME="115_32">T</A></FONT>, <FONT COLOR=red><A NAME="115_35">L</A></FONT>, <FONT COLOR=red><A NAME="115_38">O</A></FONT>, <FONT COLOR=red><A NAME="115_41">M</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#115_16">Newfield</A>, "new_field");
+      <FONT COLOR=red><A NAME="117_7">Fld</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#115_16">Newfield</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#296_21">Height</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#297_21">Width</A>),
+                                        <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#298_21">Top</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#299_21">Left</A>),
+                                        <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#300_21">Off_Screen</A>),
+                                        <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#301_21">More_Buffers</A>));
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#117_7">Fld</A> = <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#117_7">Fld</A>;
+   <b>end</b> Create;
+<FONT COLOR=green><EM>--  |</EM></FONT>
+<FONT COLOR=green><EM>--  |</EM></FONT>
+<FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#318_14">Delete</A><FONT COLOR=red><A NAME="130_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#318_22">Fld</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="132_16">Free_Field</A></FONT> (<FONT COLOR=red><A NAME="132_28">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#132_16">Free_Field</A>, "free_field");
+
+      <FONT COLOR=red><A NAME="135_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms__adb.htm#135_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#132_16">Free_Field</A> (<A HREF="terminal_interface-curses-forms__ads.htm#318_22">Fld</A>);
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#135_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#135_7">Res</A>);
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-forms__ads.htm#318_22">Fld</A> := <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A>;
+   <b>end</b> Delete;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#324_13">Duplicate</A><FONT COLOR=red><A NAME="146_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#324_24">Fld</A>  : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                       <A HREF="terminal_interface-curses-forms__ads.htm#325_24">Top</A>  : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+                       <A HREF="terminal_interface-curses-forms__ads.htm#326_24">Left</A> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="150_16">Dup_Field</A></FONT> (<FONT COLOR=red><A NAME="150_27">Fld</A></FONT>  : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                          <FONT COLOR=red><A NAME="151_27">Top</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                          <FONT COLOR=red><A NAME="152_27">Left</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#150_16">Dup_Field</A>, "dup_field");
+
+      <FONT COLOR=red><A NAME="155_7">F</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#150_16">Dup_Field</A> (<A HREF="terminal_interface-curses-forms__ads.htm#324_24">Fld</A>,
+                                       <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#325_24">Top</A>),
+                                       <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#326_24">Left</A>));
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#155_7">F</A> = <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#155_7">F</A>;
+   <b>end</b> Duplicate;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#331_13">Link</A><FONT COLOR=red><A NAME="167_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#331_19">Fld</A>  : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                  <A HREF="terminal_interface-curses-forms__ads.htm#332_19">Top</A>  : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+                  <A HREF="terminal_interface-curses-forms__ads.htm#333_19">Left</A> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="171_16">Lnk_Field</A></FONT> (<FONT COLOR=red><A NAME="171_27">Fld</A></FONT>  : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                          <FONT COLOR=red><A NAME="172_27">Top</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                          <FONT COLOR=red><A NAME="173_27">Left</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#171_16">Lnk_Field</A>, "link_field");
+
+      <FONT COLOR=red><A NAME="176_7">F</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#171_16">Lnk_Field</A> (<A HREF="terminal_interface-curses-forms__ads.htm#331_19">Fld</A>,
+                                       <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#332_19">Top</A>),
+                                       <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#333_19">Left</A>));
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#176_7">F</A> = <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#176_7">F</A>;
+   <b>end</b> Link;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_field_just.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#342_14">Set_Justification</A><FONT COLOR=red><A NAME="192_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#342_33">Fld</A>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                                <A HREF="terminal_interface-curses-forms__ads.htm#343_33">Just</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#62_9">Field_Justification</A> := <A HREF="terminal_interface-curses-forms__ads.htm#62_33">None</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="195_16">Set_Field_Just</A></FONT> (<FONT COLOR=red><A NAME="195_32">Fld</A></FONT>  : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                               <FONT COLOR=red><A NAME="196_32">Just</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#195_16">Set_Field_Just</A>, "set_field_just");
+
+      <FONT COLOR=red><A NAME="199_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> :=
+        <A HREF="terminal_interface-curses-forms__adb.htm#195_16">Set_Field_Just</A> (<A HREF="terminal_interface-curses-forms__ads.htm#342_33">Fld</A>,
+                        <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#62_9">Field_Justification</A>'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#343_33">Just</A>)));
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#199_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#199_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Justification;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#348_13">Get_Justification</A><FONT COLOR=red><A NAME="210_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#348_32">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#62_9">Field_Justification</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="212_16">Field_Just</A></FONT> (<FONT COLOR=red><A NAME="212_28">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#212_16">Field_Just</A>, "field_just");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#62_9">Field_Justification</A>'Val (<A HREF="terminal_interface-curses-forms__adb.htm#212_16">Field_Just</A> (<A HREF="terminal_interface-curses-forms__ads.htm#348_32">Fld</A>));
+   <b>end</b> Get_Justification;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_field_buffer.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#357_14">Set_Buffer</A><FONT COLOR=red><A NAME="224_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-forms__ads.htm#358_7">Fld</A>    : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+      <A HREF="terminal_interface-curses-forms__ads.htm#359_7">Buffer</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A>'First;
+      <A HREF="terminal_interface-curses-forms__ads.htm#360_7">Str</A>    : <b>in</b> String)
+   <b>is</b>
+      <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+      <b>function</b> <FONT COLOR=red><A NAME="230_16">Set_Fld_Buffer</A></FONT> (<FONT COLOR=red><A NAME="230_32">Fld</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                                 <FONT COLOR=red><A NAME="231_34">Bufnum</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                                 S      : Char_Ptr)
+        <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#230_16">Set_Fld_Buffer</A>, "set_field_buffer");
+
+      <FONT COLOR=red><A NAME="236_7">Txt</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses-forms__ads.htm#360_7">Str</A>'Length);
+      <FONT COLOR=red><A NAME="237_7">Len</A></FONT> : size_t;
+      <FONT COLOR=red><A NAME="238_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      To_C (<A HREF="terminal_interface-curses-forms__ads.htm#360_7">Str</A>, <A HREF="terminal_interface-curses-forms__adb.htm#236_7">Txt</A>, <A HREF="terminal_interface-curses-forms__adb.htm#237_7">Len</A>);
+      <A HREF="terminal_interface-curses-forms__adb.htm#238_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#230_16">Set_Fld_Buffer</A> (<A HREF="terminal_interface-curses-forms__ads.htm#358_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#359_7">Buffer</A>), <A HREF="terminal_interface-curses-forms__adb.htm#236_7">Txt</A> (<A HREF="terminal_interface-curses-forms__adb.htm#236_7">Txt</A>'First)'<b>Access</b>);
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#238_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#238_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Buffer;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#365_14">Get_Buffer</A><FONT COLOR=red><A NAME="249_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-forms__ads.htm#366_7">Fld</A>    : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+      <A HREF="terminal_interface-curses-forms__ads.htm#367_7">Buffer</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A>'First;
+      <A HREF="terminal_interface-curses-forms__ads.htm#368_7">Str</A>    : <b>out</b> String)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="254_16">Field_Buffer</A></FONT> (<FONT COLOR=red><A NAME="254_30">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                             <FONT COLOR=red><A NAME="255_30">B</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> chars_ptr;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#254_16">Field_Buffer</A>, "field_buffer");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#254_16">Field_Buffer</A> (<A HREF="terminal_interface-curses-forms__ads.htm#366_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#367_7">Buffer</A>)), <A HREF="terminal_interface-curses-forms__ads.htm#368_7">Str</A>);
+   <b>end</b> Get_Buffer;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#371_13">Get_Buffer</A><FONT COLOR=red><A NAME="261_13"></A></FONT>
+     (<A HREF="terminal_interface-curses-forms__ads.htm#372_7">Fld</A>    : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+      <A HREF="terminal_interface-curses-forms__ads.htm#373_7">Buffer</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A>'First) <b>return</b> String
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="265_16">Field_Buffer</A></FONT> (<FONT COLOR=red><A NAME="265_30">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                             <FONT COLOR=red><A NAME="266_30">B</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> chars_ptr;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#265_16">Field_Buffer</A>, "field_buffer");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#265_16">Field_Buffer</A> (<A HREF="terminal_interface-curses-forms__ads.htm#372_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#373_7">Buffer</A>)));
+   <b>end</b> Get_Buffer;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#379_14">Set_Status</A><FONT COLOR=red><A NAME="274_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#379_26">Fld</A>    : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                         <A HREF="terminal_interface-curses-forms__ads.htm#380_26">Status</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="277_16">Set_Fld_Status</A></FONT> (<FONT COLOR=red><A NAME="277_32">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                               <FONT COLOR=red><A NAME="278_32">St</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#277_16">Set_Fld_Status</A>, "set_field_status");
+
+      <FONT COLOR=red><A NAME="281_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#277_16">Set_Fld_Status</A> (<A HREF="terminal_interface-curses-forms__ads.htm#379_26">Fld</A>, Boolean'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#380_26">Status</A>));
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#281_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Status;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#385_13">Changed</A><FONT COLOR=red><A NAME="290_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#385_22">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="292_16">Field_Status</A></FONT> (<FONT COLOR=red><A NAME="292_30">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#292_16">Field_Status</A>, "field_status");
+
+      <FONT COLOR=red><A NAME="295_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#292_16">Field_Status</A> (<A HREF="terminal_interface-curses-forms__ads.htm#385_22">Fld</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#295_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#75_4">Curses_False</A> <b>then</b>
+         <b>return</b> False;
+      <b>else</b>
+         <b>return</b> True;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Changed;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#390_14">Set_Maximum_Size</A><FONT COLOR=red><A NAME="306_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#390_32">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                               <A HREF="terminal_interface-curses-forms__ads.htm#391_32">Max</A> : <b>in</b> Natural := 0)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="309_16">Set_Field_Max</A></FONT> (<FONT COLOR=red><A NAME="309_31">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                              <FONT COLOR=red><A NAME="310_31">M</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#309_16">Set_Field_Max</A>, "set_max_field");
+
+      <FONT COLOR=red><A NAME="313_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#309_16">Set_Field_Max</A> (<A HREF="terminal_interface-curses-forms__ads.htm#390_32">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#391_32">Max</A>));
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#313_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#313_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Maximum_Size;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_field_opts.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#400_14">Set_Options</A><FONT COLOR=red><A NAME="326_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#400_27">Fld</A>     : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                          <A HREF="terminal_interface-curses-forms__ads.htm#401_27">Options</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field_Option_Set</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="329_16">Set_Field_Opts</A></FONT> (<FONT COLOR=red><A NAME="329_32">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                               <FONT COLOR=red><A NAME="330_32">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#329_16">Set_Field_Opts</A>, "set_field_opts");
+
+      <FONT COLOR=red><A NAME="333_7">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#64_13">FOS_2_CInt</A> (<A HREF="terminal_interface-curses-forms__ads.htm#401_27">Options</A>);
+      <FONT COLOR=red><A NAME="334_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms__adb.htm#334_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#329_16">Set_Field_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#400_27">Fld</A>, <A HREF="terminal_interface-curses-forms__adb.htm#333_7">Opt</A>);
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#334_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#334_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Options;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#406_14">Switch_Options</A><FONT COLOR=red><A NAME="344_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#406_30">Fld</A>     : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                             <A HREF="terminal_interface-curses-forms__ads.htm#407_30">Options</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field_Option_Set</A>;
+                             <A HREF="terminal_interface-curses-forms__ads.htm#408_30">On</A>      : Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="348_16">Field_Opts_On</A></FONT> (<FONT COLOR=red><A NAME="348_31">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                              <FONT COLOR=red><A NAME="349_31">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#348_16">Field_Opts_On</A>, "field_opts_on");
+      <b>function</b> <FONT COLOR=red><A NAME="351_16">Field_Opts_Off</A></FONT> (<FONT COLOR=red><A NAME="351_32">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                               <FONT COLOR=red><A NAME="352_32">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#351_16">Field_Opts_Off</A>, "field_opts_off");
+
+      <FONT COLOR=red><A NAME="355_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+      <FONT COLOR=red><A NAME="356_7">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#64_13">FOS_2_CInt</A> (<A HREF="terminal_interface-curses-forms__ads.htm#407_30">Options</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#408_30">On</A> <b>then</b>
+         <A HREF="terminal_interface-curses-forms__adb.htm#355_7">Err</A> := <A HREF="terminal_interface-curses-forms__adb.htm#348_16">Field_Opts_On</A> (<A HREF="terminal_interface-curses-forms__ads.htm#406_30">Fld</A>, <A HREF="terminal_interface-curses-forms__adb.htm#356_7">Opt</A>);
+      <b>else</b>
+         <A HREF="terminal_interface-curses-forms__adb.htm#355_7">Err</A> := <A HREF="terminal_interface-curses-forms__adb.htm#351_16">Field_Opts_Off</A> (<A HREF="terminal_interface-curses-forms__ads.htm#406_30">Fld</A>, <A HREF="terminal_interface-curses-forms__adb.htm#356_7">Opt</A>);
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#355_7">Err</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#355_7">Err</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Switch_Options;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#414_14">Get_Options</A><FONT COLOR=red><A NAME="370_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#414_27">Fld</A>     : <b>in</b>  <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                          <A HREF="terminal_interface-curses-forms__ads.htm#415_27">Options</A> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field_Option_Set</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="373_16">Field_Opts</A></FONT> (<FONT COLOR=red><A NAME="373_28">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#373_16">Field_Opts</A>, "field_opts");
+
+      <FONT COLOR=red><A NAME="376_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#373_16">Field_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#414_27">Fld</A>);
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms__ads.htm#415_27">Options</A> := <A HREF="terminal_interface-curses-forms__adb.htm#68_13">CInt_2_FOS</A> (<A HREF="terminal_interface-curses-forms__adb.htm#376_7">Res</A>);
+   <b>end</b> Get_Options;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#419_13">Get_Options</A><FONT COLOR=red><A NAME="383_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#419_26">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A>)
+                         <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field_Option_Set</A>
+   <b>is</b>
+      <FONT COLOR=red><A NAME="386_7">Fos</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field_Option_Set</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms__ads.htm#419_13">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#419_26">Fld</A>, <A HREF="terminal_interface-curses-forms__adb.htm#386_7">Fos</A>);
+      <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#386_7">Fos</A>;
+   <b>end</b> Get_Options;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_field_attributes.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#429_14">Set_Foreground</A><FONT COLOR=red><A NAME="398_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-forms__ads.htm#430_7">Fld</A>   : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+      <A HREF="terminal_interface-curses-forms__ads.htm#431_7">Fore</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+      <A HREF="terminal_interface-curses-forms__ads.htm#432_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="403_16">Set_Field_Fore</A></FONT> (<FONT COLOR=red><A NAME="403_32">Fld</A></FONT>  : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                               <FONT COLOR=red><A NAME="404_32">Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#403_16">Set_Field_Fore</A>, "set_field_fore");
+
+      <FONT COLOR=red><A NAME="407_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := (Ch    =&gt; Character'First,
+                                             Color =&gt; <A HREF="terminal_interface-curses-forms__ads.htm#432_7">Color</A>,
+                                             Attr  =&gt; <A HREF="terminal_interface-curses-forms__ads.htm#431_7">Fore</A>);
+      <FONT COLOR=red><A NAME="410_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> :=
+        <A HREF="terminal_interface-curses-forms__adb.htm#403_16">Set_Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#430_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses-forms__adb.htm#407_7">Ch</A>));
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-forms__adb.htm#410_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#410_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Foreground;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#437_14">Foreground</A><FONT COLOR=red><A NAME="420_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#437_26">Fld</A>  : <b>in</b>  <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                         <A HREF="terminal_interface-curses-forms__ads.htm#438_26">Fore</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="423_16">Field_Fore</A></FONT> (<FONT COLOR=red><A NAME="423_28">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#423_16">Field_Fore</A>, "field_fore");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms__ads.htm#438_26">Fore</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-forms__adb.htm#423_16">Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#437_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+   <b>end</b> Foreground;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#442_14">Foreground</A><FONT COLOR=red><A NAME="429_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#442_26">Fld</A>   : <b>in</b>  <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                         <A HREF="terminal_interface-curses-forms__ads.htm#443_26">Fore</A>  : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>;
+                         <A HREF="terminal_interface-curses-forms__ads.htm#444_26">Color</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="433_16">Field_Fore</A></FONT> (<FONT COLOR=red><A NAME="433_28">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#433_16">Field_Fore</A>, "field_fore");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms__ads.htm#443_26">Fore</A>  := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-forms__adb.htm#433_16">Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#442_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+      <A HREF="terminal_interface-curses-forms__ads.htm#444_26">Color</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-forms__adb.htm#433_16">Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#442_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#353_10">Color</A>;
+   <b>end</b> Foreground;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#449_14">Set_Background</A><FONT COLOR=red><A NAME="442_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-forms__ads.htm#450_7">Fld</A>   : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+      <A HREF="terminal_interface-curses-forms__ads.htm#451_7">Back</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+      <A HREF="terminal_interface-curses-forms__ads.htm#452_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="447_16">Set_Field_Back</A></FONT> (<FONT COLOR=red><A NAME="447_32">Fld</A></FONT>  : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                               <FONT COLOR=red><A NAME="448_32">Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#447_16">Set_Field_Back</A>, "set_field_back");
+
+      <FONT COLOR=red><A NAME="451_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := (Ch    =&gt; Character'First,
+                                             Color =&gt; <A HREF="terminal_interface-curses-forms__ads.htm#452_7">Color</A>,
+                                             Attr  =&gt; <A HREF="terminal_interface-curses-forms__ads.htm#451_7">Back</A>);
+      <FONT COLOR=red><A NAME="454_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> :=
+        <A HREF="terminal_interface-curses-forms__adb.htm#447_16">Set_Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#450_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses-forms__adb.htm#451_7">Ch</A>));
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-forms__adb.htm#454_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#454_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Background;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#457_14">Background</A><FONT COLOR=red><A NAME="464_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#457_26">Fld</A>  : <b>in</b>  <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                         <A HREF="terminal_interface-curses-forms__ads.htm#458_26">Back</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="467_16">Field_Back</A></FONT> (<FONT COLOR=red><A NAME="467_28">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#467_16">Field_Back</A>, "field_back");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms__ads.htm#458_26">Back</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-forms__adb.htm#467_16">Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#457_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+   <b>end</b> Background;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#462_14">Background</A><FONT COLOR=red><A NAME="473_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#462_26">Fld</A>   : <b>in</b>  <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                         <A HREF="terminal_interface-curses-forms__ads.htm#463_26">Back</A>  : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>;
+                         <A HREF="terminal_interface-curses-forms__ads.htm#464_26">Color</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="477_16">Field_Back</A></FONT> (<FONT COLOR=red><A NAME="477_28">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#477_16">Field_Back</A>, "field_back");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms__ads.htm#463_26">Back</A>  := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-forms__adb.htm#477_16">Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#462_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+      <A HREF="terminal_interface-curses-forms__ads.htm#464_26">Color</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-forms__adb.htm#477_16">Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#462_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#353_10">Color</A>;
+   <b>end</b> Background;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#469_14">Set_Pad_Character</A><FONT COLOR=red><A NAME="486_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#469_33">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                                <A HREF="terminal_interface-curses-forms__ads.htm#470_33">Pad</A> : <b>in</b> Character := <A HREF="terminal_interface-curses-forms__ads.htm#54_4">Space</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="489_16">Set_Field_Pad</A></FONT> (<FONT COLOR=red><A NAME="489_31">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                              <FONT COLOR=red><A NAME="490_31">Ch</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#489_16">Set_Field_Pad</A>, "set_field_pad");
+
+      <FONT COLOR=red><A NAME="493_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#489_16">Set_Field_Pad</A> (<A HREF="terminal_interface-curses-forms__ads.htm#469_33">Fld</A>,
+                                                 <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (Character'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#470_33">Pad</A>)));
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#493_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#493_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Pad_Character;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#475_14">Pad_Character</A><FONT COLOR=red><A NAME="503_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#475_29">Fld</A> : <b>in</b>  <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                            <A HREF="terminal_interface-curses-forms__ads.htm#476_29">Pad</A> : <b>out</b> Character)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="506_16">Field_Pad</A></FONT> (<FONT COLOR=red><A NAME="506_27">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#506_16">Field_Pad</A>, "field_pad");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms__ads.htm#476_29">Pad</A> := Character'Val (<A HREF="terminal_interface-curses-forms__adb.htm#506_16">Field_Pad</A> (<A HREF="terminal_interface-curses-forms__ads.htm#475_29">Fld</A>));
+   <b>end</b> Pad_Character;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_field_info.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#485_14">Info</A><FONT COLOR=red><A NAME="518_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#485_20">Fld</A>                : <b>in</b>  <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                   <A HREF="terminal_interface-curses-forms__ads.htm#486_20">Lines</A>              : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+                   <A HREF="terminal_interface-curses-forms__ads.htm#487_20">Columns</A>            : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+                   <A HREF="terminal_interface-curses-forms__ads.htm#488_20">First_Row</A>          : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+                   <A HREF="terminal_interface-curses-forms__ads.htm#489_20">First_Column</A>       : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+                   <A HREF="terminal_interface-curses-forms__ads.htm#490_20">Off_Screen</A>         : <b>out</b> Natural;
+                   <A HREF="terminal_interface-curses-forms__ads.htm#491_20">Additional_Buffers</A> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A>)
+   <b>is</b>
+      <b>type</b> C_Int_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>function</b> <FONT COLOR=red><A NAME="527_16">Fld_Info</A></FONT> (<FONT COLOR=red><A NAME="527_26">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                         L, C, Fr, Fc, Os, Ab : C_Int_Access)
+                         <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#527_16">Fld_Info</A>, "field_info");
+
+      <FONT COLOR=red><A NAME="532_7">L</A></FONT>, <FONT COLOR=red><A NAME="532_10">C</A></FONT>, <FONT COLOR=red><A NAME="532_13">Fr</A></FONT>, <FONT COLOR=red><A NAME="532_17">Fc</A></FONT>, <FONT COLOR=red><A NAME="532_21">Os</A></FONT>, <FONT COLOR=red><A NAME="532_25">Ab</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <FONT COLOR=red><A NAME="533_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#527_16">Fld_Info</A> (<A HREF="terminal_interface-curses-forms__ads.htm#485_20">Fld</A>,
+                                            <A HREF="terminal_interface-curses-forms__adb.htm#532_7">L</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#532_10">C</A>'<b>Access</b>,
+                                            <A HREF="terminal_interface-curses-forms__adb.htm#532_13">Fr</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#532_17">Fc</A>'<b>Access</b>,
+                                            <A HREF="terminal_interface-curses-forms__adb.htm#532_21">Os</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#532_25">Ab</A>'<b>Access</b>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#533_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#533_7">Res</A>);
+      <b>else</b>
+         <A HREF="terminal_interface-curses-forms__ads.htm#486_20">Lines</A>              := <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#532_7">L</A>);
+         <A HREF="terminal_interface-curses-forms__ads.htm#487_20">Columns</A>            := <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#532_10">C</A>);
+         <A HREF="terminal_interface-curses-forms__ads.htm#488_20">First_Row</A>          := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses-forms__adb.htm#532_13">Fr</A>);
+         <A HREF="terminal_interface-curses-forms__ads.htm#489_20">First_Column</A>       := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses-forms__adb.htm#532_17">Fc</A>);
+         <A HREF="terminal_interface-curses-forms__ads.htm#490_20">Off_Screen</A>         := Natural (<A HREF="terminal_interface-curses-forms__adb.htm#532_21">Os</A>);
+         <A HREF="terminal_interface-curses-forms__ads.htm#491_20">Additional_Buffers</A> := <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A> (<A HREF="terminal_interface-curses-forms__adb.htm#532_25">Ab</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Info;
+<FONT COLOR=green><EM>--  |</EM></FONT>
+<FONT COLOR=green><EM>--  |</EM></FONT>
+<FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#496_14">Dynamic_Info</A><FONT COLOR=red><A NAME="552_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#496_28">Fld</A>     : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                           <A HREF="terminal_interface-curses-forms__ads.htm#497_28">Lines</A>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+                           <A HREF="terminal_interface-curses-forms__ads.htm#498_28">Columns</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+                           <A HREF="terminal_interface-curses-forms__ads.htm#499_28">Max</A>     : <b>out</b> Natural)
+   <b>is</b>
+      <b>type</b> C_Int_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>function</b> <FONT COLOR=red><A NAME="558_16">Dyn_Info</A></FONT> (<FONT COLOR=red><A NAME="558_26">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>; L, C, M : C_Int_Access) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#558_16">Dyn_Info</A>, "dynamic_field_info");
+
+      <FONT COLOR=red><A NAME="561_7">L</A></FONT>, <FONT COLOR=red><A NAME="561_10">C</A></FONT>, <FONT COLOR=red><A NAME="561_13">M</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <FONT COLOR=red><A NAME="562_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#558_16">Dyn_Info</A> (<A HREF="terminal_interface-curses-forms__ads.htm#496_28">Fld</A>,
+                                            <A HREF="terminal_interface-curses-forms__adb.htm#561_7">L</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#561_10">C</A>'<b>Access</b>,
+                                            <A HREF="terminal_interface-curses-forms__adb.htm#561_13">M</A>'<b>Access</b>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#562_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#562_7">Res</A>);
+      <b>else</b>
+         <A HREF="terminal_interface-curses-forms__ads.htm#497_28">Lines</A>   := <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#561_7">L</A>);
+         <A HREF="terminal_interface-curses-forms__ads.htm#498_28">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#561_10">C</A>);
+         <A HREF="terminal_interface-curses-forms__ads.htm#499_28">Max</A>     := Natural (<A HREF="terminal_interface-curses-forms__adb.htm#561_13">M</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Dynamic_Info;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_win.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#508_14">Set_Window</A><FONT COLOR=red><A NAME="581_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#508_26">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                         <A HREF="terminal_interface-curses-forms__ads.htm#509_26">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="584_16">Set_Form_Win</A></FONT> (<FONT COLOR=red><A NAME="584_30">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                             <FONT COLOR=red><A NAME="585_30">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#584_16">Set_Form_Win</A>, "set_form_win");
+
+      <FONT COLOR=red><A NAME="588_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#584_16">Set_Form_Win</A> (<A HREF="terminal_interface-curses-forms__ads.htm#508_26">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#509_26">Win</A>);
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-forms__adb.htm#588_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#588_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Window;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#514_13">Get_Window</A><FONT COLOR=red><A NAME="597_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#514_25">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="599_16">Form_Win</A></FONT> (<FONT COLOR=red><A NAME="599_26">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#599_16">Form_Win</A>, "form_win");
+
+      <FONT COLOR=red><A NAME="602_7">W</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses-forms__adb.htm#599_16">Form_Win</A> (<A HREF="terminal_interface-curses-forms__ads.htm#514_25">Frm</A>);
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#602_7">W</A>;
+   <b>end</b> Get_Window;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#519_14">Set_Sub_Window</A><FONT COLOR=red><A NAME="609_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#519_30">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                             <A HREF="terminal_interface-curses-forms__ads.htm#520_30">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="612_16">Set_Form_Sub</A></FONT> (<FONT COLOR=red><A NAME="612_30">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                             <FONT COLOR=red><A NAME="613_30">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#612_16">Set_Form_Sub</A>, "set_form_sub");
+
+      <FONT COLOR=red><A NAME="616_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#612_16">Set_Form_Sub</A> (<A HREF="terminal_interface-curses-forms__ads.htm#519_30">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#520_30">Win</A>);
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-forms__adb.htm#616_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#616_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Sub_Window;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#525_13">Get_Sub_Window</A><FONT COLOR=red><A NAME="625_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#525_29">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="627_16">Form_Sub</A></FONT> (<FONT COLOR=red><A NAME="627_26">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#627_16">Form_Sub</A>, "form_sub");
+
+      <FONT COLOR=red><A NAME="630_7">W</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses-forms__adb.htm#627_16">Form_Sub</A> (<A HREF="terminal_interface-curses-forms__ads.htm#525_29">Frm</A>);
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#630_7">W</A>;
+   <b>end</b> Get_Sub_Window;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#530_14">Scale</A><FONT COLOR=red><A NAME="637_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#530_21">Frm</A>     : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                    <A HREF="terminal_interface-curses-forms__ads.htm#531_21">Lines</A>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+                    <A HREF="terminal_interface-curses-forms__ads.htm#532_21">Columns</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>)
+   <b>is</b>
+      <b>type</b> C_Int_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>function</b> <FONT COLOR=red><A NAME="642_16">M_Scale</A></FONT> (<FONT COLOR=red><A NAME="642_25">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>; Yp, Xp : C_Int_Access) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#642_16">M_Scale</A>, "scale_form");
+
+      <FONT COLOR=red><A NAME="645_7">X</A></FONT>, <FONT COLOR=red><A NAME="645_10">Y</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <FONT COLOR=red><A NAME="646_7">Res</A></FONT>  : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#642_16">M_Scale</A> (<A HREF="terminal_interface-curses-forms__ads.htm#530_21">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#645_10">Y</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#645_7">X</A>'<b>Access</b>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#646_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#646_7">Res</A>);
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-forms__ads.htm#531_21">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#645_10">Y</A>);
+      <A HREF="terminal_interface-curses-forms__ads.htm#532_21">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#645_7">X</A>);
+   <b>end</b> Scale;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page menu_hook.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#544_14">Set_Field_Init_Hook</A><FONT COLOR=red><A NAME="661_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#544_35">Frm</A>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                                  <A HREF="terminal_interface-curses-forms__ads.htm#545_35">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form_Hook_Function</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="664_16">Set_Field_Init</A></FONT> (<FONT COLOR=red><A NAME="664_32">Frm</A></FONT>  : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                               <FONT COLOR=red><A NAME="665_32">Proc</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#664_16">Set_Field_Init</A>, "set_field_init");
+
+      <FONT COLOR=red><A NAME="668_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#664_16">Set_Field_Init</A> (<A HREF="terminal_interface-curses-forms__ads.htm#544_35">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#545_35">Proc</A>);
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-forms__adb.htm#668_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#668_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Field_Init_Hook;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#550_14">Set_Field_Term_Hook</A><FONT COLOR=red><A NAME="677_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#550_35">Frm</A>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                                  <A HREF="terminal_interface-curses-forms__ads.htm#551_35">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form_Hook_Function</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="680_16">Set_Field_Term</A></FONT> (<FONT COLOR=red><A NAME="680_32">Frm</A></FONT>  : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                               <FONT COLOR=red><A NAME="681_32">Proc</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#680_16">Set_Field_Term</A>, "set_field_term");
+
+      <FONT COLOR=red><A NAME="684_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#680_16">Set_Field_Term</A> (<A HREF="terminal_interface-curses-forms__ads.htm#550_35">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#551_35">Proc</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#684_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#684_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Field_Term_Hook;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#556_14">Set_Form_Init_Hook</A><FONT COLOR=red><A NAME="693_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#556_34">Frm</A>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                                 <A HREF="terminal_interface-curses-forms__ads.htm#557_34">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form_Hook_Function</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="696_16">Set_Form_Init</A></FONT> (<FONT COLOR=red><A NAME="696_31">Frm</A></FONT>  : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                              <FONT COLOR=red><A NAME="697_31">Proc</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#696_16">Set_Form_Init</A>, "set_form_init");
+
+      <FONT COLOR=red><A NAME="700_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#696_16">Set_Form_Init</A> (<A HREF="terminal_interface-curses-forms__ads.htm#556_34">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#557_34">Proc</A>);
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-forms__adb.htm#700_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#700_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Form_Init_Hook;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#562_14">Set_Form_Term_Hook</A><FONT COLOR=red><A NAME="709_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#562_34">Frm</A>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                                 <A HREF="terminal_interface-curses-forms__ads.htm#563_34">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form_Hook_Function</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="712_16">Set_Form_Term</A></FONT> (<FONT COLOR=red><A NAME="712_31">Frm</A></FONT>  : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                              <FONT COLOR=red><A NAME="713_31">Proc</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#712_16">Set_Form_Term</A>, "set_form_term");
+
+      <FONT COLOR=red><A NAME="716_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#712_16">Set_Form_Term</A> (<A HREF="terminal_interface-curses-forms__ads.htm#562_34">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#563_34">Proc</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#716_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#716_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Form_Term_Hook;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_fields.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#592_14">Redefine</A><FONT COLOR=red><A NAME="729_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#592_24">Frm</A>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                       <A HREF="terminal_interface-curses-forms__ads.htm#593_24">Flds</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#136_9">Field_Array_Access</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="732_16">Set_Frm_Fields</A></FONT> (<FONT COLOR=red><A NAME="732_32">Frm</A></FONT>   : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                               <FONT COLOR=red><A NAME="733_32">Items</A></FONT> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#732_16">Set_Frm_Fields</A>, "set_form_fields");
+
+      <FONT COLOR=red><A NAME="736_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <b>pragma</b> Assert (Flds (Flds'Last) = Null_Field);
+      <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#593_24">Flds</A> (<A HREF="terminal_interface-curses-forms__ads.htm#593_24">Flds</A>'Last) /= <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+      <b>else</b>
+         <A HREF="terminal_interface-curses-forms__adb.htm#736_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#732_16">Set_Frm_Fields</A> (<A HREF="terminal_interface-curses-forms__ads.htm#592_24">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#593_24">Flds</A> (<A HREF="terminal_interface-curses-forms__ads.htm#593_24">Flds</A>'First)'Address);
+         <b>if</b>  <A HREF="terminal_interface-curses-forms__adb.htm#736_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+            <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#736_7">Res</A>);
+         <b>end</b> <b>if</b>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Redefine;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#604_13">Fields</A><FONT COLOR=red><A NAME="751_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#604_21">Frm</A>   : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                    <A HREF="terminal_interface-curses-forms__ads.htm#605_21">Index</A> : Positive) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>
+   <b>is</b>
+      <b>use</b> <A HREF="terminal_interface-curses-forms__adb.htm#55_12">F_Array</A>;
+
+      <b>function</b> <FONT COLOR=red><A NAME="756_16">C_Fields</A></FONT> (<FONT COLOR=red><A NAME="756_26">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> Pointer;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#756_16">C_Fields</A>, "form_fields");
+
+      P : Pointer := <A HREF="terminal_interface-curses-forms__adb.htm#756_16">C_Fields</A> (<A HREF="terminal_interface-curses-forms__ads.htm#604_21">Frm</A>);
+   <b>begin</b>
+      <b>if</b> P = <b>null</b> <b>or</b> <b>else</b> <A HREF="terminal_interface-curses-forms__ads.htm#605_21">Index</A> <b>not</b> <b>in</b> 1 .. <A HREF="terminal_interface-curses-forms__ads.htm#610_13">Field_Count</A> (<A HREF="terminal_interface-curses-forms__ads.htm#604_21">Frm</A>) <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+      <b>else</b>
+         P := P + ptrdiff_t (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#605_21">Index</A>) - 1);
+         <b>return</b> P.<b>all</b>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Fields;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#610_13">Field_Count</A><FONT COLOR=red><A NAME="771_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#610_26">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> Natural
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="773_16">Count</A></FONT> (<FONT COLOR=red><A NAME="773_23">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#773_16">Count</A>, "field_count");
+   <b>begin</b>
+      <b>return</b> Natural (<A HREF="terminal_interface-curses-forms__adb.htm#773_16">Count</A> (<A HREF="terminal_interface-curses-forms__ads.htm#610_26">Frm</A>));
+   <b>end</b> Field_Count;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#615_14">Move</A><FONT COLOR=red><A NAME="781_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#615_20">Fld</A>    : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                   <A HREF="terminal_interface-curses-forms__ads.htm#616_20">Line</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+                   <A HREF="terminal_interface-curses-forms__ads.htm#617_20">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="785_16">Move</A></FONT> (<FONT COLOR=red><A NAME="785_22">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>; <FONT COLOR=red><A NAME="785_35">L</A></FONT>, <FONT COLOR=red><A NAME="785_38">C</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#785_16">Move</A>, "move_field");
+
+      <FONT COLOR=red><A NAME="788_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#785_16">Move</A> (<A HREF="terminal_interface-curses-forms__ads.htm#615_20">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#616_20">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#617_20">Column</A>));
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#788_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#788_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Move;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_new.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#626_13">Create</A><FONT COLOR=red><A NAME="801_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#626_21">Fields</A> : <A HREF="terminal_interface-curses-forms__ads.htm#136_9">Field_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="803_16">NewForm</A></FONT> (<FONT COLOR=red><A NAME="803_25">Fields</A></FONT> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#803_16">NewForm</A>, "new_form");
+
+      <FONT COLOR=red><A NAME="806_7">M</A></FONT>   : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+   <b>begin</b>
+      <b>pragma</b> Assert (Fields (Fields'Last) = Null_Field);
+      <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#626_21">Fields</A> (<A HREF="terminal_interface-curses-forms__ads.htm#626_21">Fields</A>'Last) /= <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+      <b>else</b>
+         <A HREF="terminal_interface-curses-forms__adb.htm#806_7">M</A> := <A HREF="terminal_interface-curses-forms__adb.htm#803_16">NewForm</A> (<A HREF="terminal_interface-curses-forms__ads.htm#626_21">Fields</A> (<A HREF="terminal_interface-curses-forms__ads.htm#626_21">Fields</A>'First)'Address);
+         <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#806_7">M</A> = <A HREF="terminal_interface-curses-forms__ads.htm#60_4">Null_Form</A> <b>then</b>
+            <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+         <b>end</b> <b>if</b>;
+         <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#806_7">M</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Create;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#637_14">Delete</A><FONT COLOR=red><A NAME="822_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#637_22">Frm</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="824_16">Free</A></FONT> (<FONT COLOR=red><A NAME="824_22">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#824_16">Free</A>, "free_form");
+
+      <FONT COLOR=red><A NAME="827_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#824_16">Free</A> (<A HREF="terminal_interface-curses-forms__ads.htm#637_22">Frm</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#827_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#827_7">Res</A>);
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-forms__ads.htm#637_22">Frm</A> := <A HREF="terminal_interface-curses-forms__ads.htm#60_4">Null_Form</A>;
+   <b>end</b> Delete;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_opts.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#647_14">Set_Options</A><FONT COLOR=red><A NAME="841_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#647_27">Frm</A>     : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                          <A HREF="terminal_interface-curses-forms__ads.htm#648_27">Options</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form_Option_Set</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="844_16">Set_Form_Opts</A></FONT> (<FONT COLOR=red><A NAME="844_31">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                              <FONT COLOR=red><A NAME="845_31">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#844_16">Set_Form_Opts</A>, "set_form_opts");
+
+      <FONT COLOR=red><A NAME="848_7">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#72_13">FrmOS_2_CInt</A> (<A HREF="terminal_interface-curses-forms__ads.htm#648_27">Options</A>);
+      <FONT COLOR=red><A NAME="849_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms__adb.htm#849_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#844_16">Set_Form_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#647_27">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#848_7">Opt</A>);
+      <b>if</b>  <A HREF="terminal_interface-curses-forms__adb.htm#849_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#849_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Options;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#653_14">Switch_Options</A><FONT COLOR=red><A NAME="859_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#653_30">Frm</A>     : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                             <A HREF="terminal_interface-curses-forms__ads.htm#654_30">Options</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form_Option_Set</A>;
+                             <A HREF="terminal_interface-curses-forms__ads.htm#655_30">On</A>      : Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="863_16">Form_Opts_On</A></FONT> (<FONT COLOR=red><A NAME="863_30">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                             <FONT COLOR=red><A NAME="864_30">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#863_16">Form_Opts_On</A>, "form_opts_on");
+      <b>function</b> <FONT COLOR=red><A NAME="866_16">Form_Opts_Off</A></FONT> (<FONT COLOR=red><A NAME="866_31">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                              <FONT COLOR=red><A NAME="867_31">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#866_16">Form_Opts_Off</A>, "form_opts_off");
+
+      <FONT COLOR=red><A NAME="870_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+      <FONT COLOR=red><A NAME="871_7">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#72_13">FrmOS_2_CInt</A> (<A HREF="terminal_interface-curses-forms__ads.htm#654_30">Options</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#655_30">On</A> <b>then</b>
+         <A HREF="terminal_interface-curses-forms__adb.htm#870_7">Err</A> := <A HREF="terminal_interface-curses-forms__adb.htm#863_16">Form_Opts_On</A> (<A HREF="terminal_interface-curses-forms__ads.htm#653_30">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#871_7">Opt</A>);
+      <b>else</b>
+         <A HREF="terminal_interface-curses-forms__adb.htm#870_7">Err</A> := <A HREF="terminal_interface-curses-forms__adb.htm#866_16">Form_Opts_Off</A> (<A HREF="terminal_interface-curses-forms__ads.htm#653_30">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#871_7">Opt</A>);
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#870_7">Err</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#870_7">Err</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Switch_Options;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#661_14">Get_Options</A><FONT COLOR=red><A NAME="885_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#661_27">Frm</A>     : <b>in</b>  <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                          <A HREF="terminal_interface-curses-forms__ads.htm#662_27">Options</A> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form_Option_Set</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="888_16">Form_Opts</A></FONT> (<FONT COLOR=red><A NAME="888_27">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#888_16">Form_Opts</A>, "form_opts");
+
+      <FONT COLOR=red><A NAME="891_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#888_16">Form_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#661_27">Frm</A>);
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms__ads.htm#662_27">Options</A> := <A HREF="terminal_interface-curses-forms__adb.htm#76_13">CInt_2_FrmOS</A> (<A HREF="terminal_interface-curses-forms__adb.htm#891_7">Res</A>);
+   <b>end</b> Get_Options;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#666_13">Get_Options</A><FONT COLOR=red><A NAME="898_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#666_26">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A> := <A HREF="terminal_interface-curses-forms__ads.htm#60_4">Null_Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form_Option_Set</A>
+   <b>is</b>
+      <FONT COLOR=red><A NAME="900_7">Fos</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form_Option_Set</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-forms__ads.htm#666_13">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#666_26">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#900_7">Fos</A>);
+      <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#900_7">Fos</A>;
+   <b>end</b> Get_Options;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_post.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#675_14">Post</A><FONT COLOR=red><A NAME="912_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#675_20">Frm</A>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                   <A HREF="terminal_interface-curses-forms__ads.htm#676_20">Post</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="915_16">M_Post</A></FONT> (<FONT COLOR=red><A NAME="915_24">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#915_16">M_Post</A>, "post_form");
+      <b>function</b> <FONT COLOR=red><A NAME="917_16">M_Unpost</A></FONT> (<FONT COLOR=red><A NAME="917_26">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#917_16">M_Unpost</A>, "unpost_form");
+
+      <FONT COLOR=red><A NAME="920_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#676_20">Post</A> <b>then</b>
+         <A HREF="terminal_interface-curses-forms__adb.htm#920_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#915_16">M_Post</A> (<A HREF="terminal_interface-curses-forms__ads.htm#675_20">Frm</A>);
+      <b>else</b>
+         <A HREF="terminal_interface-curses-forms__adb.htm#920_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#917_16">M_Unpost</A> (<A HREF="terminal_interface-curses-forms__ads.htm#675_20">Frm</A>);
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#920_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#920_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Post;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_cursor.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#686_14">Position_Cursor</A><FONT COLOR=red><A NAME="938_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#686_31">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="940_16">Pos_Form_Cursor</A></FONT> (<FONT COLOR=red><A NAME="940_33">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#940_16">Pos_Form_Cursor</A>, "pos_form_cursor");
+
+      <FONT COLOR=red><A NAME="943_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#940_16">Pos_Form_Cursor</A> (<A HREF="terminal_interface-curses-forms__ads.htm#686_31">Frm</A>);
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-forms__adb.htm#943_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#943_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Position_Cursor;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_data.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#695_13">Data_Ahead</A><FONT COLOR=red><A NAME="956_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#695_25">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="958_16">Ahead</A></FONT> (<FONT COLOR=red><A NAME="958_23">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#958_16">Ahead</A>, "data_ahead");
+
+      <FONT COLOR=red><A NAME="961_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#958_16">Ahead</A> (<A HREF="terminal_interface-curses-forms__ads.htm#695_25">Frm</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#961_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#75_4">Curses_False</A> <b>then</b>
+         <b>return</b> False;
+      <b>else</b>
+         <b>return</b> True;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Data_Ahead;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#700_13">Data_Behind</A><FONT COLOR=red><A NAME="972_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#700_26">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="974_16">Behind</A></FONT> (<FONT COLOR=red><A NAME="974_24">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#974_16">Behind</A>, "data_behind");
+
+      <FONT COLOR=red><A NAME="977_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#974_16">Behind</A> (<A HREF="terminal_interface-curses-forms__ads.htm#700_26">Frm</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#977_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#75_4">Curses_False</A> <b>then</b>
+         <b>return</b> False;
+      <b>else</b>
+         <b>return</b> True;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Data_Behind;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_driver.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#714_13">Driver</A><FONT COLOR=red><A NAME="992_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#714_21">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                    <A HREF="terminal_interface-curses-forms__ads.htm#715_21">Key</A> : <A HREF="terminal_interface-curses__ads.htm#67_9">Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#708_9">Driver_Result</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="995_16">Frm_Driver</A></FONT> (<FONT COLOR=red><A NAME="995_28">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>; <FONT COLOR=red><A NAME="995_40">Key</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#995_16">Frm_Driver</A>, "form_driver");
+
+      <FONT COLOR=red><A NAME="998_7">R</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#995_16">Frm_Driver</A> (<A HREF="terminal_interface-curses-forms__ads.htm#714_21">Frm</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#715_21">Key</A>));
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#998_7">R</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#998_7">R</A> = <A HREF="terminal_interface-curses-aux__ads.htm#88_4">E_Unknown_Command</A> <b>then</b>
+            <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#710_27">Unknown_Request</A>;
+         <b>elsif</b> <A HREF="terminal_interface-curses-forms__adb.htm#998_7">R</A> = <A HREF="terminal_interface-curses-aux__ads.htm#93_4">E_Invalid_Field</A> <b>then</b>
+            <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#711_27">Invalid_Field</A>;
+         <b>elsif</b> <A HREF="terminal_interface-curses-forms__adb.htm#998_7">R</A> = <A HREF="terminal_interface-curses-aux__ads.htm#92_4">E_Request_Denied</A> <b>then</b>
+            <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#709_27">Request_Denied</A>;
+         <b>else</b>
+            <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#998_7">R</A>);
+            <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#708_27">Form_Ok</A>;
+         <b>end</b> <b>if</b>;
+      <b>else</b>
+         <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#708_27">Form_Ok</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Driver;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_page.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#726_14">Set_Current</A><FONT COLOR=red><A NAME="1022_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#726_27">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                          <A HREF="terminal_interface-curses-forms__ads.htm#727_27">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1025_16">Set_Current_Fld</A></FONT> (<FONT COLOR=red><A NAME="1025_33">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>; <FONT COLOR=red><A NAME="1025_45">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#1025_16">Set_Current_Fld</A>, "set_current_field");
+
+      <FONT COLOR=red><A NAME="1028_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#1025_16">Set_Current_Fld</A> (<A HREF="terminal_interface-curses-forms__ads.htm#726_27">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#727_27">Fld</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#1028_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#1028_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Current;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#732_13">Current</A><FONT COLOR=red><A NAME="1037_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#732_22">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1039_16">Current_Fld</A></FONT> (<FONT COLOR=red><A NAME="1039_29">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#1039_16">Current_Fld</A>, "current_field");
+
+      <FONT COLOR=red><A NAME="1042_7">Fld</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#1039_16">Current_Fld</A> (<A HREF="terminal_interface-curses-forms__ads.htm#732_22">Frm</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#1042_7">Fld</A> = <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#1042_7">Fld</A>;
+   <b>end</b> Current;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#737_14">Set_Page</A><FONT COLOR=red><A NAME="1052_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#737_24">Frm</A>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                       <A HREF="terminal_interface-curses-forms__ads.htm#738_24">Page</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#723_9">Page_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#723_9">Page_Number</A>'First)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1055_16">Set_Frm_Page</A></FONT> (<FONT COLOR=red><A NAME="1055_30">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>; <FONT COLOR=red><A NAME="1055_42">Pg</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#1055_16">Set_Frm_Page</A>, "set_form_page");
+
+      <FONT COLOR=red><A NAME="1058_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#1055_16">Set_Frm_Page</A> (<A HREF="terminal_interface-curses-forms__ads.htm#737_24">Frm</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#738_24">Page</A>));
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#1058_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#1058_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Page;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#743_13">Page</A><FONT COLOR=red><A NAME="1067_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#743_19">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#723_9">Page_Number</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1069_16">Get_Page</A></FONT> (<FONT COLOR=red><A NAME="1069_26">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#1069_16">Get_Page</A>, "form_page");
+
+      <FONT COLOR=red><A NAME="1072_7">P</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#1069_16">Get_Page</A> (<A HREF="terminal_interface-curses-forms__ads.htm#743_19">Frm</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#1072_7">P</A> &lt; 0 <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+      <b>else</b>
+         <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#723_9">Page_Number</A> (<A HREF="terminal_interface-curses-forms__adb.htm#1072_7">P</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Page;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#748_13">Get_Index</A><FONT COLOR=red><A NAME="1081_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#748_24">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> Positive
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1083_16">Get_Fieldindex</A></FONT> (<FONT COLOR=red><A NAME="1083_32">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#1083_16">Get_Fieldindex</A>, "field_index");
+
+      <FONT COLOR=red><A NAME="1086_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#1083_16">Get_Fieldindex</A> (<A HREF="terminal_interface-curses-forms__ads.htm#748_24">Fld</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#1086_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> Positive (Natural (<A HREF="terminal_interface-curses-forms__adb.htm#1086_7">Res</A>) + Positive'First);
+   <b>end</b> Get_Index;
+
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  | man page form_new_page.3x</EM></FONT>
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#760_14">Set_New_Page</A><FONT COLOR=red><A NAME="1101_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#760_28">Fld</A>      : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+                           <A HREF="terminal_interface-curses-forms__ads.htm#761_28">New_Page</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1104_16">Set_Page</A></FONT> (<FONT COLOR=red><A NAME="1104_26">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>; <FONT COLOR=red><A NAME="1104_39">Flg</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#1104_16">Set_Page</A>, "set_new_page");
+
+      <FONT COLOR=red><A NAME="1107_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#1104_16">Set_Page</A> (<A HREF="terminal_interface-curses-forms__ads.htm#760_28">Fld</A>, Boolean'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#761_28">New_Page</A>));
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#1107_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#1107_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_New_Page;
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#766_13">Is_New_Page</A><FONT COLOR=red><A NAME="1116_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#766_26">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1118_16">Is_New</A></FONT> (<FONT COLOR=red><A NAME="1118_24">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#1118_16">Is_New</A>, "new_page");
+
+      <FONT COLOR=red><A NAME="1121_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#1118_16">Is_New</A> (<A HREF="terminal_interface-curses-forms__ads.htm#766_26">Fld</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#1121_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#75_4">Curses_False</A> <b>then</b>
+         <b>return</b> False;
+      <b>else</b>
+         <b>return</b> True;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Is_New_Page;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#138_14">Free</A><FONT COLOR=red><A NAME="1130_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#138_20">FA</A>          : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#136_9">Field_Array_Access</A>;
+                   <A HREF="terminal_interface-curses-forms__ads.htm#139_20">Free_Fields</A> : <b>in</b> Boolean := False)
+   <b>is</b>
+      <b>procedure</b> <FONT COLOR=red><A NAME="1133_17">Release</A></FONT> <b>is</b> <b>new</b> Ada.Unchecked_Deallocation
+        (<A HREF="terminal_interface-curses-forms__ads.htm#133_9">Field_Array</A>, <A HREF="terminal_interface-curses-forms__ads.htm#136_9">Field_Array_Access</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#138_20">FA</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms__ads.htm#139_20">Free_Fields</A> <b>then</b>
+         <b>for</b> <FONT COLOR=red><A NAME="1137_14">I</A></FONT> <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#138_20">FA</A>'First .. (<A HREF="terminal_interface-curses-forms__ads.htm#138_20">FA</A>'Last - 1) <b>loop</b>
+            <b>if</b> (<A HREF="terminal_interface-curses-forms__ads.htm#138_20">FA</A> (<A HREF="terminal_interface-curses-forms__adb.htm#1137_14">I</A>) /= <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A>) <b>then</b>
+               <A HREF="terminal_interface-curses-forms__ads.htm#637_14">Delete</A> (<A HREF="terminal_interface-curses-forms__ads.htm#138_20">FA</A> (<A HREF="terminal_interface-curses-forms__adb.htm#1137_14">I</A>));
+            <b>end</b> <b>if</b>;
+         <b>end</b> <b>loop</b>;
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-forms__adb.htm#1133_17">Release</A> (<A HREF="terminal_interface-curses-forms__ads.htm#138_20">FA</A>);
+   <b>end</b> Free;
+
+   <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#103_13">Default_Field_Options</A><FONT COLOR=red><A NAME="1148_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field_Option_Set</A>
+   <b>is</b>
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#666_13">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A>);
+   <b>end</b> Default_Field_Options;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#127_13">Default_Form_Options</A><FONT COLOR=red><A NAME="1154_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form_Option_Set</A>
+   <b>is</b>
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#666_13">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#60_4">Null_Form</A>);
+   <b>end</b> Default_Form_Options;
+
+<b>end</b> Terminal_Interface.Curses.Forms;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/terminal_interface-curses-forms__ads.htm b/doc/html/ada/terminal_interface-curses-forms__ads.htm
new file mode 100644 (file)
index 0000000..7ce679c
--- /dev/null
@@ -0,0 +1,784 @@
+<HTML><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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 1996</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.23 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</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> System;
+<b>with</b> <A HREF="interfac__ads.htm#23_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 ("-lncurses");
+
+   Space : Character <b>renames</b> Ada.Characters.Latin_1.Space;
+
+   <b>type</b> <FONT COLOR=red><A NAME="57_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="60_4">Null_Field</A></FONT>        : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_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>
+         <FONT COLOR=red><A NAME="71_10">Visible</A></FONT>     : Boolean;
+         <FONT COLOR=red><A NAME="72_10">Active</A></FONT>      : Boolean;
+         <FONT COLOR=red><A NAME="73_10">Public</A></FONT>      : Boolean;
+         <FONT COLOR=red><A NAME="74_10">Edit</A></FONT>        : Boolean;
+         <FONT COLOR=red><A NAME="75_10">Wrap</A></FONT>        : Boolean;
+         <FONT COLOR=red><A NAME="76_10">Blank</A></FONT>       : Boolean;
+         <FONT COLOR=red><A NAME="77_10">Auto_Skip</A></FONT>   : Boolean;
+         <FONT COLOR=red><A NAME="78_10">Null_Ok</A></FONT>     : Boolean;
+         <FONT COLOR=red><A NAME="79_10">Pass_Ok</A></FONT>     : Boolean;
+         Static      : Boolean;
+      <b>end</b> <b>record</b><A HREF="terminal_interface-curses-forms__ads.htm#68_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>
+         <FONT COLOR=red><A NAME="111_10">NL_Overload</A></FONT> : Boolean;
+         BS_Overload : Boolean;
+      <b>end</b> <b>record</b><A HREF="terminal_interface-curses-forms__ads.htm#108_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> &lt;&gt;) <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 (<FONT COLOR=red><A NAME="139_20">FA</A></FONT>          : <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>
+   <FONT COLOR=red><A NAME="148_4">F_Next_Page</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 1;
+   <FONT COLOR=red><A NAME="149_4">F_Previous_Page</A></FONT>            : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 2;
+   <FONT COLOR=red><A NAME="150_4">F_First_Page</A></FONT>               : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 3;
+   F_Last_Page                : <b>constant</b> Form_Request_Code := Key_Max + 4;
+
+   <FONT COLOR=red><A NAME="153_4">F_Next_Field</A></FONT>               : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 5;
+   <FONT COLOR=red><A NAME="154_4">F_Previous_Field</A></FONT>           : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 6;
+   <FONT COLOR=red><A NAME="155_4">F_First_Field</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 7;
+   <FONT COLOR=red><A NAME="156_4">F_Last_Field</A></FONT>               : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 8;
+   <FONT COLOR=red><A NAME="157_4">F_Sorted_Next_Field</A></FONT>        : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 9;
+   <FONT COLOR=red><A NAME="158_4">F_Sorted_Previous_Field</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 10;
+   <FONT COLOR=red><A NAME="159_4">F_Sorted_First_Field</A></FONT>       : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 11;
+   <FONT COLOR=red><A NAME="160_4">F_Sorted_Last_Field</A></FONT>        : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 12;
+   <FONT COLOR=red><A NAME="161_4">F_Left_Field</A></FONT>               : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 13;
+   <FONT COLOR=red><A NAME="162_4">F_Right_Field</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 14;
+   <FONT COLOR=red><A NAME="163_4">F_Up_Field</A></FONT>                 : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 15;
+   F_Down_Field               : <b>constant</b> Form_Request_Code := Key_Max + 16;
+
+   <FONT COLOR=red><A NAME="166_4">F_Next_Char</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 17;
+   <FONT COLOR=red><A NAME="167_4">F_Previous_Char</A></FONT>            : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 18;
+   <FONT COLOR=red><A NAME="168_4">F_Next_Line</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 19;
+   <FONT COLOR=red><A NAME="169_4">F_Previous_Line</A></FONT>            : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 20;
+   <FONT COLOR=red><A NAME="170_4">F_Next_Word</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 21;
+   <FONT COLOR=red><A NAME="171_4">F_Previous_Word</A></FONT>            : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 22;
+   <FONT COLOR=red><A NAME="172_4">F_Begin_Field</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 23;
+   <FONT COLOR=red><A NAME="173_4">F_End_Field</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 24;
+   <FONT COLOR=red><A NAME="174_4">F_Begin_Line</A></FONT>               : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 25;
+   <FONT COLOR=red><A NAME="175_4">F_End_Line</A></FONT>                 : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 26;
+   <FONT COLOR=red><A NAME="176_4">F_Left_Char</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 27;
+   <FONT COLOR=red><A NAME="177_4">F_Right_Char</A></FONT>               : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 28;
+   <FONT COLOR=red><A NAME="178_4">F_Up_Char</A></FONT>                  : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 29;
+   F_Down_Char                : <b>constant</b> Form_Request_Code := Key_Max + 30;
+
+   <FONT COLOR=red><A NAME="181_4">F_New_Line</A></FONT>                 : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 31;
+   <FONT COLOR=red><A NAME="182_4">F_Insert_Char</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 32;
+   <FONT COLOR=red><A NAME="183_4">F_Insert_Line</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 33;
+   <FONT COLOR=red><A NAME="184_4">F_Delete_Char</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 34;
+   <FONT COLOR=red><A NAME="185_4">F_Delete_Previous</A></FONT>          : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 35;
+   <FONT COLOR=red><A NAME="186_4">F_Delete_Line</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 36;
+   <FONT COLOR=red><A NAME="187_4">F_Delete_Word</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 37;
+   <FONT COLOR=red><A NAME="188_4">F_Clear_EOL</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 38;
+   <FONT COLOR=red><A NAME="189_4">F_Clear_EOF</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 39;
+   <FONT COLOR=red><A NAME="190_4">F_Clear_Field</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 40;
+   <FONT COLOR=red><A NAME="191_4">F_Overlay_Mode</A></FONT>             : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 41;
+   F_Insert_Mode              : <b>constant</b> Form_Request_Code := Key_Max + 42;
+
+   <FONT COLOR=green><EM>--  Vertical Scrolling</EM></FONT>
+   <FONT COLOR=red><A NAME="195_4">F_ScrollForward_Line</A></FONT>       : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 43;
+   <FONT COLOR=red><A NAME="196_4">F_ScrollBackward_Line</A></FONT>      : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 44;
+   <FONT COLOR=red><A NAME="197_4">F_ScrollForward_Page</A></FONT>       : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 45;
+   <FONT COLOR=red><A NAME="198_4">F_ScrollBackward_Page</A></FONT>      : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 46;
+   <FONT COLOR=red><A NAME="199_4">F_ScrollForward_HalfPage</A></FONT>   : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 47;
+   F_ScrollBackward_HalfPage  : <b>constant</b> Form_Request_Code := Key_Max + 48;
+
+   <FONT COLOR=green><EM>--  Horizontal Scrolling</EM></FONT>
+   <FONT COLOR=red><A NAME="203_4">F_HScrollForward_Char</A></FONT>      : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 49;
+   <FONT COLOR=red><A NAME="204_4">F_HScrollBackward_Char</A></FONT>     : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 50;
+   <FONT COLOR=red><A NAME="205_4">F_HScrollForward_Line</A></FONT>      : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 51;
+   <FONT COLOR=red><A NAME="206_4">F_HScrollBackward_Line</A></FONT>     : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 52;
+   <FONT COLOR=red><A NAME="207_4">F_HScrollForward_HalfLine</A></FONT>  : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 53;
+   F_HScrollBackward_HalfLine : <b>constant</b> Form_Request_Code := Key_Max + 54;
+
+   <FONT COLOR=red><A NAME="210_4">F_Validate_Field</A></FONT>           : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 55;
+   <FONT COLOR=red><A NAME="211_4">F_Next_Choice</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 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>
+   <FONT COLOR=red><A NAME="215_4">REQ_NEXT_PAGE</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#148_4">F_Next_Page</A>;
+   <FONT COLOR=red><A NAME="216_4">REQ_PREV_PAGE</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#149_4">F_Previous_Page</A>;
+   <FONT COLOR=red><A NAME="217_4">REQ_FIRST_PAGE</A></FONT>   : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#150_4">F_First_Page</A>;
+   REQ_LAST_PAGE    : Form_Request_Code <b>renames</b> F_Last_Page;
+
+   <FONT COLOR=red><A NAME="220_4">REQ_NEXT_FIELD</A></FONT>   : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#153_4">F_Next_Field</A>;
+   <FONT COLOR=red><A NAME="221_4">REQ_PREV_FIELD</A></FONT>   : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#154_4">F_Previous_Field</A>;
+   <FONT COLOR=red><A NAME="222_4">REQ_FIRST_FIELD</A></FONT>  : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#155_4">F_First_Field</A>;
+   <FONT COLOR=red><A NAME="223_4">REQ_LAST_FIELD</A></FONT>   : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#156_4">F_Last_Field</A>;
+   <FONT COLOR=red><A NAME="224_4">REQ_SNEXT_FIELD</A></FONT>  : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#157_4">F_Sorted_Next_Field</A>;
+   <FONT COLOR=red><A NAME="225_4">REQ_SPREV_FIELD</A></FONT>  : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#158_4">F_Sorted_Previous_Field</A>;
+   <FONT COLOR=red><A NAME="226_4">REQ_SFIRST_FIELD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#159_4">F_Sorted_First_Field</A>;
+   <FONT COLOR=red><A NAME="227_4">REQ_SLAST_FIELD</A></FONT>  : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#160_4">F_Sorted_Last_Field</A>;
+   <FONT COLOR=red><A NAME="228_4">REQ_LEFT_FIELD</A></FONT>   : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#161_4">F_Left_Field</A>;
+   <FONT COLOR=red><A NAME="229_4">REQ_RIGHT_FIELD</A></FONT>  : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#162_4">F_Right_Field</A>;
+   <FONT COLOR=red><A NAME="230_4">REQ_UP_FIELD</A></FONT>     : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#163_4">F_Up_Field</A>;
+   REQ_DOWN_FIELD   : Form_Request_Code <b>renames</b> F_Down_Field;
+
+   <FONT COLOR=red><A NAME="233_4">REQ_NEXT_CHAR</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#166_4">F_Next_Char</A>;
+   <FONT COLOR=red><A NAME="234_4">REQ_PREV_CHAR</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#167_4">F_Previous_Char</A>;
+   <FONT COLOR=red><A NAME="235_4">REQ_NEXT_LINE</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#168_4">F_Next_Line</A>;
+   <FONT COLOR=red><A NAME="236_4">REQ_PREV_LINE</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#169_4">F_Previous_Line</A>;
+   <FONT COLOR=red><A NAME="237_4">REQ_NEXT_WORD</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#170_4">F_Next_Word</A>;
+   <FONT COLOR=red><A NAME="238_4">REQ_PREV_WORD</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#171_4">F_Previous_Word</A>;
+   <FONT COLOR=red><A NAME="239_4">REQ_BEG_FIELD</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#172_4">F_Begin_Field</A>;
+   <FONT COLOR=red><A NAME="240_4">REQ_END_FIELD</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#173_4">F_End_Field</A>;
+   <FONT COLOR=red><A NAME="241_4">REQ_BEG_LINE</A></FONT>     : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#174_4">F_Begin_Line</A>;
+   <FONT COLOR=red><A NAME="242_4">REQ_END_LINE</A></FONT>     : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#175_4">F_End_Line</A>;
+   <FONT COLOR=red><A NAME="243_4">REQ_LEFT_CHAR</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#176_4">F_Left_Char</A>;
+   <FONT COLOR=red><A NAME="244_4">REQ_RIGHT_CHAR</A></FONT>   : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#177_4">F_Right_Char</A>;
+   <FONT COLOR=red><A NAME="245_4">REQ_UP_CHAR</A></FONT>      : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#178_4">F_Up_Char</A>;
+   REQ_DOWN_CHAR    : Form_Request_Code <b>renames</b> F_Down_Char;
+
+   <FONT COLOR=red><A NAME="248_4">REQ_NEW_LINE</A></FONT>     : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#181_4">F_New_Line</A>;
+   <FONT COLOR=red><A NAME="249_4">REQ_INS_CHAR</A></FONT>     : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#182_4">F_Insert_Char</A>;
+   <FONT COLOR=red><A NAME="250_4">REQ_INS_LINE</A></FONT>     : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#183_4">F_Insert_Line</A>;
+   <FONT COLOR=red><A NAME="251_4">REQ_DEL_CHAR</A></FONT>     : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#184_4">F_Delete_Char</A>;
+   <FONT COLOR=red><A NAME="252_4">REQ_DEL_PREV</A></FONT>     : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#185_4">F_Delete_Previous</A>;
+   <FONT COLOR=red><A NAME="253_4">REQ_DEL_LINE</A></FONT>     : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#186_4">F_Delete_Line</A>;
+   <FONT COLOR=red><A NAME="254_4">REQ_DEL_WORD</A></FONT>     : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#187_4">F_Delete_Word</A>;
+   <FONT COLOR=red><A NAME="255_4">REQ_CLR_EOL</A></FONT>      : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#188_4">F_Clear_EOL</A>;
+   <FONT COLOR=red><A NAME="256_4">REQ_CLR_EOF</A></FONT>      : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#189_4">F_Clear_EOF</A>;
+   <FONT COLOR=red><A NAME="257_4">REQ_CLR_FIELD</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#190_4">F_Clear_Field</A>;
+   <FONT COLOR=red><A NAME="258_4">REQ_OVL_MODE</A></FONT>     : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#191_4">F_Overlay_Mode</A>;
+   REQ_INS_MODE     : Form_Request_Code <b>renames</b> F_Insert_Mode;
+
+   <FONT COLOR=red><A NAME="261_4">REQ_SCR_FLINE</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#195_4">F_ScrollForward_Line</A>;
+   <FONT COLOR=red><A NAME="262_4">REQ_SCR_BLINE</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#196_4">F_ScrollBackward_Line</A>;
+   <FONT COLOR=red><A NAME="263_4">REQ_SCR_FPAGE</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#197_4">F_ScrollForward_Page</A>;
+   <FONT COLOR=red><A NAME="264_4">REQ_SCR_BPAGE</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#198_4">F_ScrollBackward_Page</A>;
+   <FONT COLOR=red><A NAME="265_4">REQ_SCR_FHPAGE</A></FONT>   : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#199_4">F_ScrollForward_HalfPage</A>;
+   REQ_SCR_BHPAGE   : Form_Request_Code <b>renames</b> F_ScrollBackward_HalfPage;
+
+   <FONT COLOR=red><A NAME="268_4">REQ_SCR_FCHAR</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#203_4">F_HScrollForward_Char</A>;
+   <FONT COLOR=red><A NAME="269_4">REQ_SCR_BCHAR</A></FONT>    : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#204_4">F_HScrollBackward_Char</A>;
+   <FONT COLOR=red><A NAME="270_4">REQ_SCR_HFLINE</A></FONT>   : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#205_4">F_HScrollForward_Line</A>;
+   <FONT COLOR=red><A NAME="271_4">REQ_SCR_HBLINE</A></FONT>   : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#206_4">F_HScrollBackward_Line</A>;
+   <FONT COLOR=red><A NAME="272_4">REQ_SCR_HFHALF</A></FONT>   : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#207_4">F_HScrollForward_HalfLine</A>;
+   REQ_SCR_HBHALF   : Form_Request_Code <b>renames</b> F_HScrollBackward_HalfLine;
+
+   <FONT COLOR=red><A NAME="275_4">REQ_VALIDATION</A></FONT>   : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#210_4">F_Validate_Field</A>;
+   <FONT COLOR=red><A NAME="276_4">REQ_NEXT_CHOICE</A></FONT>  : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#211_4">F_Next_Choice</A>;
+   REQ_PREV_CHOICE  : Form_Request_Code <b>renames</b> F_Previous_Choice;
+
+
+   <b>procedure</b> Request_Name (<FONT COLOR=red><A NAME="280_28">Key</A></FONT>  : <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>--  #1A NAME="AFU_1"#2|</EM></FONT>
+   <b>function</b> Create (<FONT COLOR=red><A NAME="297_21">Height</A></FONT>       : <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+                    <FONT COLOR=red><A NAME="298_21">Width</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Count</A>;
+                    <FONT COLOR=red><A NAME="299_21">Top</A></FONT>          : <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+                    <FONT COLOR=red><A NAME="300_21">Left</A></FONT>         : Column_Position;
+                    <FONT COLOR=red><A NAME="301_21">Off_Screen</A></FONT>   : <A HREF="terminal_interface-curses-forms__ads.htm#131_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>--  #1A NAME="AFU_2"#2|</EM></FONT>
+   <b>function</b> New_Field (<FONT COLOR=red><A NAME="308_24">Height</A></FONT>       : <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+                       <FONT COLOR=red><A NAME="309_24">Width</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Count</A>;
+                       <FONT COLOR=red><A NAME="310_24">Top</A></FONT>          : <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+                       <FONT COLOR=red><A NAME="311_24">Left</A></FONT>         : Column_Position;
+                       <FONT COLOR=red><A NAME="312_24">Off_Screen</A></FONT>   : <A HREF="terminal_interface-curses-forms__ads.htm#131_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>--  #1A NAME="AFU_3"#2|</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>--  #1A NAME="AFU_4"#2|</EM></FONT>
+   <b>function</b> Duplicate (<FONT COLOR=red><A NAME="325_24">Fld</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#59_9">Field</A>;
+                       <FONT COLOR=red><A NAME="326_24">Top</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_5"#2|</EM></FONT>
+   <b>function</b> Link (<FONT COLOR=red><A NAME="332_19">Fld</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#59_9">Field</A>;
+                  <FONT COLOR=red><A NAME="333_19">Top</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_6"#2|</EM></FONT>
+   <b>procedure</b> Set_Justification (<FONT COLOR=red><A NAME="343_33">Fld</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#62_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>--  #1A NAME="AFU_7"#2|</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>--  #1A NAME="AFU_8"#2|</EM></FONT>
+   <b>procedure</b> Set_Buffer
+     (<FONT COLOR=red><A NAME="359_7">Fld</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Field</A>;
+      <FONT COLOR=red><A NAME="360_7">Buffer</A></FONT> : <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>--  #1A NAME="AFU_9"#2|</EM></FONT>
+   <b>procedure</b> Get_Buffer
+     (<FONT COLOR=red><A NAME="367_7">Fld</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Field</A>;
+      <FONT COLOR=red><A NAME="368_7">Buffer</A></FONT> : <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
+     (<FONT COLOR=red><A NAME="373_7">Fld</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#131_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>--  #1A NAME="AFU_10"#2|</EM></FONT>
+   <b>procedure</b> Set_Status (<FONT COLOR=red><A NAME="380_26">Fld</A></FONT>    : <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>--  #1A NAME="AFU_11"#2|</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>--  #1A NAME="AFU_12"#2|</EM></FONT>
+   <b>procedure</b> Set_Maximum_Size (<FONT COLOR=red><A NAME="391_32">Fld</A></FONT> : <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>--  #1A NAME="AFU_13"#2|</EM></FONT>
+   <b>procedure</b> Set_Options (<FONT COLOR=red><A NAME="401_27">Fld</A></FONT>     : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#68_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>--  #1A NAME="AFU_14"#2|</EM></FONT>
+   <b>procedure</b> Switch_Options (<FONT COLOR=red><A NAME="407_30">Fld</A></FONT>     : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field</A>;
+                             <FONT COLOR=red><A NAME="408_30">Options</A></FONT> : <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>--  #1A NAME="AFU_15"#2|</EM></FONT>
+   <b>procedure</b> Get_Options (<FONT COLOR=red><A NAME="415_27">Fld</A></FONT>     : <b>in</b>  <A HREF="terminal_interface-curses-forms__ads.htm#68_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>--  #1A NAME="AFU_16"#2|</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>--  #1A NAME="AFU_17"#2|</EM></FONT>
+   <b>procedure</b> Set_Foreground
+     (<FONT COLOR=red><A NAME="431_7">Fld</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Field</A>;
+      <FONT COLOR=red><A NAME="432_7">Fore</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_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>--  #1A NAME="AFU_18"#2|</EM></FONT>
+   <b>procedure</b> Foreground (<FONT COLOR=red><A NAME="438_26">Fld</A></FONT>  : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#304_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>--  #1A NAME="AFU_19"#2|</EM></FONT>
+   <b>procedure</b> Foreground (<FONT COLOR=red><A NAME="443_26">Fld</A></FONT>   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#304_9">Field</A>;
+                         <FONT COLOR=red><A NAME="444_26">Fore</A></FONT>  : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_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>--  #1A NAME="AFU_20"#2|</EM></FONT>
+   <b>procedure</b> Set_Background
+     (<FONT COLOR=red><A NAME="451_7">Fld</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Field</A>;
+      <FONT COLOR=red><A NAME="452_7">Back</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_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>--  #1A NAME="AFU_21"#2|</EM></FONT>
+   <b>procedure</b> Background (<FONT COLOR=red><A NAME="458_26">Fld</A></FONT>  : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#304_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>--  #1A NAME="AFU_22"#2|</EM></FONT>
+   <b>procedure</b> Background (<FONT COLOR=red><A NAME="463_26">Fld</A></FONT>   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#304_9">Field</A>;
+                         <FONT COLOR=red><A NAME="464_26">Back</A></FONT>  : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_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>--  #1A NAME="AFU_23"#2|</EM></FONT>
+   <b>procedure</b> Set_Pad_Character (<FONT COLOR=red><A NAME="470_33">Fld</A></FONT> : <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>--  #1A NAME="AFU_24"#2|</EM></FONT>
+   <b>procedure</b> Pad_Character (<FONT COLOR=red><A NAME="476_29">Fld</A></FONT> : <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>--  #1A NAME="AFU_25"#2|</EM></FONT>
+   <b>procedure</b> Info (<FONT COLOR=red><A NAME="486_20">Fld</A></FONT>                : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#62_12">Field</A>;
+                   <FONT COLOR=red><A NAME="487_20">Lines</A></FONT>              : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+                   <FONT COLOR=red><A NAME="488_20">Columns</A></FONT>            : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Count</A>;
+                   <FONT COLOR=red><A NAME="489_20">First_Row</A></FONT>          : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+                   <FONT COLOR=red><A NAME="490_20">First_Column</A></FONT>       : <b>out</b> Column_Position;
+                   <FONT COLOR=red><A NAME="491_20">Off_Screen</A></FONT>         : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#131_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>--  #1A NAME="AFU_26"#2|</EM></FONT>
+   <b>procedure</b> Dynamic_Info (<FONT COLOR=red><A NAME="497_28">Fld</A></FONT>     : <b>in</b> Field;
+                           <FONT COLOR=red><A NAME="498_28">Lines</A></FONT>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+                           <FONT COLOR=red><A NAME="499_28">Columns</A></FONT> : <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>--  #1A NAME="AFU_27"#2|</EM></FONT>
+   <b>procedure</b> Set_Window (<FONT COLOR=red><A NAME="509_26">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_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>--  #1A NAME="AFU_28"#2|</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>--  #1A NAME="AFU_29"#2|</EM></FONT>
+   <b>procedure</b> Set_Sub_Window (<FONT COLOR=red><A NAME="520_30">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_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>--  #1A NAME="AFU_30"#2|</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>--  #1A NAME="AFU_31"#2|</EM></FONT>
+   <b>procedure</b> Scale (<FONT COLOR=red><A NAME="531_21">Frm</A></FONT>     : <b>in</b> Form;
+                    <FONT COLOR=red><A NAME="532_21">Lines</A></FONT>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_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>--  #1A NAME="AFU_32"#2|</EM></FONT>
+   <b>procedure</b> Set_Field_Init_Hook (<FONT COLOR=red><A NAME="545_35">Frm</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#540_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>--  #1A NAME="AFU_33"#2|</EM></FONT>
+   <b>procedure</b> Set_Field_Term_Hook (<FONT COLOR=red><A NAME="551_35">Frm</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#540_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>--  #1A NAME="AFU_34"#2|</EM></FONT>
+   <b>procedure</b> Set_Form_Init_Hook (<FONT COLOR=red><A NAME="557_34">Frm</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#540_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>--  #1A NAME="AFU_35"#2|</EM></FONT>
+   <b>procedure</b> Set_Form_Term_Hook (<FONT COLOR=red><A NAME="563_34">Frm</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#540_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>--  #1A NAME="AFU_36"#2|</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>--  #1A NAME="AFU_37"#2|</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>--  #1A NAME="AFU_38"#2|</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>--  #1A NAME="AFU_39"#2|</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>--  #1A NAME="AFU_40"#2|</EM></FONT>
+   <b>procedure</b> Redefine (<FONT COLOR=red><A NAME="593_24">Frm</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#136_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>--  #1A NAME="AFU_41"#2|</EM></FONT>
+   <b>procedure</b> Set_Fields (<FONT COLOR=red><A NAME="599_26">Frm</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#136_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>--  #1A NAME="AFU_42"#2|</EM></FONT>
+   <b>function</b> Fields (<FONT COLOR=red><A NAME="605_21">Frm</A></FONT>   : 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>--  #1A NAME="AFU_43"#2|</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>--  #1A NAME="AFU_44"#2|</EM></FONT>
+   <b>procedure</b> Move (<FONT COLOR=red><A NAME="616_20">Fld</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Field</A>;
+                   <FONT COLOR=red><A NAME="617_20">Line</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_45"#2|</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>--  #1A NAME="AFU_46"#2|</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>--  #1A NAME="AFU_47"#2|</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>--  #1A NAME="AFU_48"#2|</EM></FONT>
+   <b>procedure</b> Set_Options (<FONT COLOR=red><A NAME="648_27">Frm</A></FONT>     : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#108_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>--  #1A NAME="AFU_49"#2|</EM></FONT>
+   <b>procedure</b> Switch_Options (<FONT COLOR=red><A NAME="654_30">Frm</A></FONT>     : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form</A>;
+                             <FONT COLOR=red><A NAME="655_30">Options</A></FONT> : <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>--  #1A NAME="AFU_50"#2|</EM></FONT>
+   <b>procedure</b> Get_Options (<FONT COLOR=red><A NAME="662_27">Frm</A></FONT>     : <b>in</b>  <A HREF="terminal_interface-curses-forms__ads.htm#108_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>--  #1A NAME="AFU_51"#2|</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>--  #1A NAME="AFU_52"#2|</EM></FONT>
+   <b>procedure</b> Post (<FONT COLOR=red><A NAME="676_20">Frm</A></FONT>  : <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>--  #1A NAME="AFU_53"#2|</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>--  #1A NAME="AFU_54"#2|</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>--  #1A NAME="AFU_55"#2|</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="709_27">Form_Ok</A></FONT>,
+                          <FONT COLOR=red><A NAME="710_27">Request_Denied</A></FONT>,
+                          <FONT COLOR=red><A NAME="711_27">Unknown_Request</A></FONT>,
+                          Invalid_Field);
+
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_56"#2|</EM></FONT>
+   <b>function</b> Driver (<FONT COLOR=red><A NAME="715_21">Frm</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#67_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>--  #1A NAME="AFU_57"#2|</EM></FONT>
+   <b>procedure</b> Set_Current (<FONT COLOR=red><A NAME="727_27">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_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>--  #1A NAME="AFU_58"#2|</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>--  #1A NAME="AFU_59"#2|</EM></FONT>
+   <b>procedure</b> Set_Page (<FONT COLOR=red><A NAME="738_24">Frm</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#723_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>--  #1A NAME="AFU_60"#2|</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>--  #1A NAME="AFU_61"#2|</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>--  #1A NAME="AFU_62"#2|</EM></FONT>
+   <b>procedure</b> Set_New_Page (<FONT COLOR=red><A NAME="761_28">Fld</A></FONT>      : <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>--  #1A NAME="AFU_63"#2|</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#57_9">Field</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+   <b>type</b> Form  <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+
+   <A HREF="terminal_interface-curses-forms__ads.htm#60_4">Null_Field</A> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_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/doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm b/doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm
new file mode 100644 (file)
index 0000000..c4912b6
--- /dev/null
@@ -0,0 +1,82 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-menus-item_user_data.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-menus-item_user_data.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>.C;
+<b>with</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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Menus.<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#45_41">Item_User_Data</A> <b>is</b>
+
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#57_14">Set_User_Data</A><FONT COLOR=red><A NAME="48_14"></A></FONT> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#57_29">Itm</A>  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+                            <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#58_29">Data</A> : <b>in</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#44_9">User_Access</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="51_16">Set_Item_Userptr</A></FONT> (<FONT COLOR=red><A NAME="51_34">Itm</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+                                 <FONT COLOR=red><A NAME="52_34">Addr</A></FONT> : <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#44_9">User_Access</A>)  <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#51_16">Set_Item_Userptr</A>, "set_item_userptr");
+
+      <FONT COLOR=red><A NAME="55_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#51_16">Set_Item_Userptr</A> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#57_29">Itm</A>, <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#58_29">Data</A>);
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#55_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#55_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_User_Data;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#68_13">Get_User_Data</A><FONT COLOR=red><A NAME="62_13"></A></FONT> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#68_28">Itm</A>  : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#44_9">User_Access</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="64_16">Item_Userptr</A></FONT> (<FONT COLOR=red><A NAME="64_30">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#44_9">User_Access</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#64_16">Item_Userptr</A>, "item_userptr");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#64_16">Item_Userptr</A> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#68_28">Itm</A>);
+   <b>end</b> Get_User_Data;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#63_14">Get_User_Data</A><FONT COLOR=red><A NAME="70_14"></A></FONT> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#63_29">Itm</A>  : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+                            <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#64_29">Data</A> : <b>out</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#44_9">User_Access</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#64_29">Data</A> := <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#68_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#63_29">Itm</A>);
+   <b>end</b> Get_User_Data;
+
+<b>end</b> Terminal_Interface.Curses.Menus.Item_User_Data;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 71%
rename from Ada95/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm
rename to doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm
index fb485736d594296ea9512e65c0ecab5fea3835fb..c565bc6fbf40c17f90769f6ad8ad7ef6b5b68de8 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-menus-item_user_data.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>--  @Revision: 1.12 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
 <FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
 
 <b>generic</b>
 <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>--  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>;
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_1"#2|</EM></FONT>
+   <b>procedure</b> Set_User_Data (<FONT COLOR=red><A NAME="58_29">Itm</A></FONT>  : <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>
+   <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>;
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_2"#2|</EM></FONT>
+   <b>procedure</b> Get_User_Data (<FONT COLOR=red><A NAME="64_29">Itm</A></FONT>  : <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>--  AKA: <A HREF="../man/mitem_userptr.3x.html">item_userptr</A></EM></FONT>
 
-  <FONT COLOR=green><EM>--  <A NAME="AFU_3">|</EM></FONT>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_3"#2|</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>
+   <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;
diff --git a/doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm b/doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm
new file mode 100644 (file)
index 0000000..e320f42
--- /dev/null
@@ -0,0 +1,81 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-menus-menu_user_data.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-menus-menu_user_data.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>with</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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Menus.<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#45_41">Menu_User_Data</A> <b>is</b>
+
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#53_14">Set_User_Data</A><FONT COLOR=red><A NAME="47_14"></A></FONT> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#53_29">Men</A>  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                            <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#54_29">Data</A> : <b>in</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#44_9">User_Access</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="50_16">Set_Menu_Userptr</A></FONT> (<FONT COLOR=red><A NAME="50_34">Men</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                                 <FONT COLOR=red><A NAME="51_34">Data</A></FONT> : <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#44_9">User_Access</A>)  <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#50_16">Set_Menu_Userptr</A>, "set_menu_userptr");
+
+      <FONT COLOR=red><A NAME="54_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#50_16">Set_Menu_Userptr</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#53_29">Men</A>, <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#54_29">Data</A>);
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#54_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#54_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_User_Data;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#64_13">Get_User_Data</A><FONT COLOR=red><A NAME="61_13"></A></FONT> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#64_28">Men</A>  : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#44_9">User_Access</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="63_16">Menu_Userptr</A></FONT> (<FONT COLOR=red><A NAME="63_30">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#44_9">User_Access</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#63_16">Menu_Userptr</A>, "menu_userptr");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#63_16">Menu_Userptr</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#64_28">Men</A>);
+   <b>end</b> Get_User_Data;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#59_14">Get_User_Data</A><FONT COLOR=red><A NAME="69_14"></A></FONT> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#59_29">Men</A>  : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                            <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#60_29">Data</A> : <b>out</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#44_9">User_Access</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#60_29">Data</A> := <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#64_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#59_29">Men</A>);
+   <b>end</b> Get_User_Data;
+
+<b>end</b> Terminal_Interface.Curses.Menus.Menu_User_Data;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 75%
rename from Ada95/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm
rename to doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm
index b1dc8a0be3a294411922d352a99864ee39110b96..39a55253b5093012e65765a77aa58940afabc55f 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-menus-menu_user_data.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>--  @Revision: 1.12 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
 <FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
 
 <b>generic</b>
 <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>--  |=====================================================================</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>;
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_1"#2|</EM></FONT>
+   <b>procedure</b> Set_User_Data (<FONT COLOR=red><A NAME="54_29">Men</A></FONT>  : <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>
+   <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>;
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_2"#2|</EM></FONT>
+   <b>procedure</b> Get_User_Data (<FONT COLOR=red><A NAME="60_29">Men</A></FONT>  : <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>--  AKA: <A HREF="../man/menu_userptr.3x.html">menu_userptr</A></EM></FONT>
 
-  <FONT COLOR=green><EM>--  <A NAME="AFU_3">|</EM></FONT>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_3"#2|</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>
+   <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;
diff --git a/doc/html/ada/terminal_interface-curses-menus__adb.htm b/doc/html/ada/terminal_interface-curses-menus__adb.htm
new file mode 100644 (file)
index 0000000..1b9c1d0
--- /dev/null
@@ -0,0 +1,1026 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-menus.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-menus.adb </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                     --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Ada.Unchecked_Deallocation;
+<b>with</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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Pointers;
+
+<b>with</b> Ada.Unchecked_Conversion;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.<A HREF="terminal_interface-curses-menus__ads.htm#49_35">Menus</A><FONT COLOR=red><A NAME="50_40"></A></FONT> <b>is</b>
+
+   <b>type</b> <FONT COLOR=red><A NAME="52_9">C_Item_Array</A></FONT> <b>is</b> <b>array</b> (Natural <b>range</b> &lt;&gt;) <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+   <b>package</b> <FONT COLOR=red><A NAME="53_12">I_Array</A></FONT> <b>is</b> <b>new</b>
+     <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Pointers (Natural, <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>, <A HREF="terminal_interface-curses-menus__adb.htm#52_9">C_Item_Array</A>, <A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A>);
+
+   <b>use</b> <b>type</b> System.Bit_Order;
+   <b>subtype</b> <FONT COLOR=red><A NAME="57_12">chars_ptr</A></FONT> <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings.chars_ptr;
+
+   <b>function</b> <FONT COLOR=red><A NAME="59_13">MOS_2_CInt</A></FONT> <b>is</b> <b>new</b>
+     Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu_Option_Set</A>,
+                               <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>);
+
+   <b>function</b> <FONT COLOR=red><A NAME="63_13">CInt_2_MOS</A></FONT> <b>is</b> <b>new</b>
+     Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>,
+                               <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu_Option_Set</A>);
+
+   <b>function</b> <FONT COLOR=red><A NAME="67_13">IOS_2_CInt</A></FONT> <b>is</b> <b>new</b>
+     Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item_Option_Set</A>,
+                               <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>);
+
+   <b>function</b> <FONT COLOR=red><A NAME="71_13">CInt_2_IOS</A></FONT> <b>is</b> <b>new</b>
+     Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>,
+                               <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item_Option_Set</A>);
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#106_14">Request_Name</A><FONT COLOR=red><A NAME="76_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#106_28">Key</A>  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A>;
+                           <A HREF="terminal_interface-curses-menus__ads.htm#107_28">Name</A> : <b>out</b> String)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="79_16">Request_Name</A></FONT> (<FONT COLOR=red><A NAME="79_30">Key</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#79_16">Request_Name</A>, "menu_request_name");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#79_16">Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#106_28">Key</A>)), <A HREF="terminal_interface-curses-menus__ads.htm#107_28">Name</A>);
+   <b>end</b> Request_Name;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#109_14">Request_Name</A><FONT COLOR=red><A NAME="85_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#109_28">Key</A> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A>) <b>return</b> String
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="87_16">Request_Name</A></FONT> (<FONT COLOR=red><A NAME="87_30">Key</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#87_16">Request_Name</A>, "menu_request_name");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#87_16">Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#109_28">Key</A>)));
+   <b>end</b> Request_Name;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#193_13">Create</A><FONT COLOR=red><A NAME="93_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#193_21">Name</A>        : String;
+                    <A HREF="terminal_interface-curses-menus__ads.htm#194_21">Description</A> : String := "") <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>
+   <b>is</b>
+      <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+      <b>function</b> <FONT COLOR=red><A NAME="97_16">Newitem</A></FONT> (Name, Desc : Char_Ptr) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#97_16">Newitem</A>, "new_item");
+
+      <b>type</b> <FONT COLOR=red><A NAME="100_12">Name_String</A></FONT> <b>is</b> <b>new</b> char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#193_21">Name</A>'Length);
+      <b>type</b> <FONT COLOR=red><A NAME="101_12">Name_String_Ptr</A></FONT> <b>is</b> <b>access</b> <A HREF="terminal_interface-curses-menus__adb.htm#100_12">Name_String</A>;
+      <b>pragma</b> Controlled (<A HREF="terminal_interface-curses-menus__adb.htm#101_12">Name_String_Ptr</A>);
+
+      <b>type</b> <FONT COLOR=red><A NAME="104_12">Desc_String</A></FONT> <b>is</b> <b>new</b> char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#194_21">Description</A>'Length);
+      <b>type</b> <FONT COLOR=red><A NAME="105_12">Desc_String_Ptr</A></FONT> <b>is</b> <b>access</b> <A HREF="terminal_interface-curses-menus__adb.htm#104_12">Desc_String</A>;
+      <b>pragma</b> Controlled (<A HREF="terminal_interface-curses-menus__adb.htm#105_12">Desc_String_Ptr</A>);
+
+      <FONT COLOR=red><A NAME="108_7">Name_Str</A></FONT> : <A HREF="terminal_interface-curses-menus__adb.htm#101_12">Name_String_Ptr</A> := <b>new</b> <A HREF="terminal_interface-curses-menus__adb.htm#100_12">Name_String</A>;
+      <FONT COLOR=red><A NAME="109_7">Desc_Str</A></FONT> : <A HREF="terminal_interface-curses-menus__adb.htm#105_12">Desc_String_Ptr</A> := <b>new</b> <A HREF="terminal_interface-curses-menus__adb.htm#104_12">Desc_String</A>;
+      <FONT COLOR=red><A NAME="110_7">Name_Len</A></FONT>, <FONT COLOR=red><A NAME="110_17">Desc_Len</A></FONT> : size_t;
+      <FONT COLOR=red><A NAME="111_7">Result</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+   <b>begin</b>
+      To_C (<A HREF="terminal_interface-curses-menus__ads.htm#193_21">Name</A>, <A HREF="terminal_interface-curses-menus__adb.htm#108_7">Name_Str</A>.<b>all</b>, <A HREF="terminal_interface-curses-menus__adb.htm#110_7">Name_Len</A>);
+      To_C (<A HREF="terminal_interface-curses-menus__ads.htm#194_21">Description</A>, <A HREF="terminal_interface-curses-menus__adb.htm#109_7">Desc_Str</A>.<b>all</b>, <A HREF="terminal_interface-curses-menus__adb.htm#110_17">Desc_Len</A>);
+      <A HREF="terminal_interface-curses-menus__adb.htm#111_7">Result</A> := <A HREF="terminal_interface-curses-menus__adb.htm#97_16">Newitem</A> (<A HREF="terminal_interface-curses-menus__adb.htm#108_7">Name_Str</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__adb.htm#108_7">Name_Str</A>.<b>all</b>'First)'<b>Access</b>,
+                         <A HREF="terminal_interface-curses-menus__adb.htm#109_7">Desc_Str</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__adb.htm#109_7">Desc_Str</A>.<b>all</b>'First)'<b>Access</b>);
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#111_7">Result</A> = <A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#387_4">Eti_System_Error</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#111_7">Result</A>;
+   <b>end</b> Create;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#205_14">Delete</A><FONT COLOR=red><A NAME="123_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#205_22">Itm</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="125_16">Descname</A></FONT> (<FONT COLOR=red><A NAME="125_26">Itm</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#125_16">Descname</A>, "item_description");
+      <b>function</b> <FONT COLOR=red><A NAME="127_16">Itemname</A></FONT> (<FONT COLOR=red><A NAME="127_26">Itm</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#127_16">Itemname</A>, "item_name");
+
+      <b>function</b> <FONT COLOR=red><A NAME="130_16">Freeitem</A></FONT> (<FONT COLOR=red><A NAME="130_26">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#130_16">Freeitem</A>, "free_item");
+
+      <FONT COLOR=red><A NAME="133_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+      <FONT COLOR=red><A NAME="134_7">Ptr</A></FONT> : <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-menus__adb.htm#134_7">Ptr</A> := <A HREF="terminal_interface-curses-menus__adb.htm#125_16">Descname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#205_22">Itm</A>);
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#134_7">Ptr</A> /= Null_Ptr <b>then</b>
+         <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings.Free (<A HREF="terminal_interface-curses-menus__adb.htm#134_7">Ptr</A>);
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-menus__adb.htm#134_7">Ptr</A> := <A HREF="terminal_interface-curses-menus__adb.htm#127_16">Itemname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#205_22">Itm</A>);
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#134_7">Ptr</A> /= Null_Ptr <b>then</b>
+         <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings.Free (<A HREF="terminal_interface-curses-menus__adb.htm#134_7">Ptr</A>);
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-menus__adb.htm#133_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#130_16">Freeitem</A> (<A HREF="terminal_interface-curses-menus__ads.htm#205_22">Itm</A>);
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#133_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#133_7">Res</A>);
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-menus__ads.htm#205_22">Itm</A> := <A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A>;
+   <b>end</b> Delete;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#214_14">Set_Value</A><FONT COLOR=red><A NAME="151_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#214_25">Itm</A>   : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+                        <A HREF="terminal_interface-curses-menus__ads.htm#215_25">Value</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="154_16">Set_Item_Val</A></FONT> (<FONT COLOR=red><A NAME="154_30">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+                             <FONT COLOR=red><A NAME="155_30">Val</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#154_16">Set_Item_Val</A>, "set_item_value");
+
+      <FONT COLOR=red><A NAME="158_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#154_16">Set_Item_Val</A> (<A HREF="terminal_interface-curses-menus__ads.htm#214_25">Itm</A>, Boolean'Pos (<A HREF="terminal_interface-curses-menus__ads.htm#215_25">Value</A>));
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-menus__adb.htm#158_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#158_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Value;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#220_13">Value</A><FONT COLOR=red><A NAME="165_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#220_20">Itm</A> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="167_16">Item_Val</A></FONT> (<FONT COLOR=red><A NAME="167_26">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#167_16">Item_Val</A>, "item_value");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#167_16">Item_Val</A> (<A HREF="terminal_interface-curses-menus__ads.htm#220_20">Itm</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#75_4">Curses_False</A> <b>then</b>
+         <b>return</b> False;
+      <b>else</b>
+         <b>return</b> True;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Value;
+
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#229_13">Visible</A><FONT COLOR=red><A NAME="178_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#229_22">Itm</A> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="180_16">Item_Vis</A></FONT> (<FONT COLOR=red><A NAME="180_26">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#180_16">Item_Vis</A>, "item_visible");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#180_16">Item_Vis</A> (<A HREF="terminal_interface-curses-menus__ads.htm#229_22">Itm</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#75_4">Curses_False</A> <b>then</b>
+         <b>return</b> False;
+      <b>else</b>
+         <b>return</b> True;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Visible;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#238_14">Set_Options</A><FONT COLOR=red><A NAME="190_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#238_27">Itm</A>     : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+                          <A HREF="terminal_interface-curses-menus__ads.htm#239_27">Options</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item_Option_Set</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="193_16">Set_Item_Opts</A></FONT> (<FONT COLOR=red><A NAME="193_31">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+                              <FONT COLOR=red><A NAME="194_31">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#193_16">Set_Item_Opts</A>, "set_item_opts");
+
+      <FONT COLOR=red><A NAME="197_7">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#67_13">IOS_2_CInt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#239_27">Options</A>);
+      <FONT COLOR=red><A NAME="198_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-menus__adb.htm#198_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#193_16">Set_Item_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#238_27">Itm</A>, <A HREF="terminal_interface-curses-menus__adb.htm#197_7">Opt</A>);
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#198_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#198_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Options;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#244_14">Switch_Options</A><FONT COLOR=red><A NAME="206_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#244_30">Itm</A>     : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+                             <A HREF="terminal_interface-curses-menus__ads.htm#245_30">Options</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item_Option_Set</A>;
+                             <A HREF="terminal_interface-curses-menus__ads.htm#246_30">On</A>      : Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="210_16">Item_Opts_On</A></FONT> (<FONT COLOR=red><A NAME="210_30">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+                             <FONT COLOR=red><A NAME="211_30">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#210_16">Item_Opts_On</A>, "item_opts_on");
+      <b>function</b> <FONT COLOR=red><A NAME="213_16">Item_Opts_Off</A></FONT> (<FONT COLOR=red><A NAME="213_31">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+                              <FONT COLOR=red><A NAME="214_31">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#213_16">Item_Opts_Off</A>, "item_opts_off");
+
+      <FONT COLOR=red><A NAME="217_7">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#67_13">IOS_2_CInt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#245_30">Options</A>);
+      <FONT COLOR=red><A NAME="218_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#246_30">On</A> <b>then</b>
+         <A HREF="terminal_interface-curses-menus__adb.htm#218_7">Err</A> := <A HREF="terminal_interface-curses-menus__adb.htm#210_16">Item_Opts_On</A> (<A HREF="terminal_interface-curses-menus__ads.htm#244_30">Itm</A>, <A HREF="terminal_interface-curses-menus__adb.htm#217_7">Opt</A>);
+      <b>else</b>
+         <A HREF="terminal_interface-curses-menus__adb.htm#218_7">Err</A> := <A HREF="terminal_interface-curses-menus__adb.htm#213_16">Item_Opts_Off</A> (<A HREF="terminal_interface-curses-menus__ads.htm#244_30">Itm</A>, <A HREF="terminal_interface-curses-menus__adb.htm#217_7">Opt</A>);
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#218_7">Err</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#218_7">Err</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Switch_Options;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#253_14">Get_Options</A><FONT COLOR=red><A NAME="230_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#253_27">Itm</A>     : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+                          <A HREF="terminal_interface-curses-menus__ads.htm#254_27">Options</A> : <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item_Option_Set</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="233_16">Item_Opts</A></FONT> (<FONT COLOR=red><A NAME="233_27">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#233_16">Item_Opts</A>, "item_opts");
+
+      <FONT COLOR=red><A NAME="236_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#233_16">Item_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#253_27">Itm</A>);
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-menus__ads.htm#254_27">Options</A> := <A HREF="terminal_interface-curses-menus__adb.htm#71_13">CInt_2_IOS</A> (<A HREF="terminal_interface-curses-menus__adb.htm#236_7">Res</A>);
+   <b>end</b> Get_Options;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#258_13">Get_Options</A><FONT COLOR=red><A NAME="241_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#258_26">Itm</A> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A> := <A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item_Option_Set</A>
+   <b>is</b>
+      <FONT COLOR=red><A NAME="243_7">Ios</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item_Option_Set</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-menus__ads.htm#258_13">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#258_26">Itm</A>, <A HREF="terminal_interface-curses-menus__adb.htm#243_7">Ios</A>);
+      <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#243_7">Ios</A>;
+   <b>end</b> Get_Options;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#267_14">Name</A><FONT COLOR=red><A NAME="249_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#267_20">Itm</A>  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+                   <A HREF="terminal_interface-curses-menus__ads.htm#268_20">Name</A> : <b>out</b> String)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="252_16">Itemname</A></FONT> (<FONT COLOR=red><A NAME="252_26">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#252_16">Itemname</A>, "item_name");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#252_16">Itemname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#267_20">Itm</A>), <A HREF="terminal_interface-curses-menus__ads.htm#268_20">Name</A>);
+   <b>end</b> Name;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#270_14">Name</A><FONT COLOR=red><A NAME="258_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#270_20">Itm</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> String
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="260_16">Itemname</A></FONT> (<FONT COLOR=red><A NAME="260_26">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#260_16">Itemname</A>, "item_name");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#260_16">Itemname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#270_20">Itm</A>));
+   <b>end</b> Name;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#276_14">Description</A><FONT COLOR=red><A NAME="266_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#276_27">Itm</A>         : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+                          <A HREF="terminal_interface-curses-menus__ads.htm#277_27">Description</A> : <b>out</b> String)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="269_16">Descname</A></FONT> (<FONT COLOR=red><A NAME="269_26">Itm</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#269_16">Descname</A>, "item_description");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#269_16">Descname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#276_27">Itm</A>), <A HREF="terminal_interface-curses-menus__ads.htm#277_27">Description</A>);
+   <b>end</b> Description;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#280_14">Description</A><FONT COLOR=red><A NAME="275_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#280_27">Itm</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> String
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="277_16">Descname</A></FONT> (<FONT COLOR=red><A NAME="277_26">Itm</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#277_16">Descname</A>, "item_description");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#277_16">Descname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#280_27">Itm</A>));
+   <b>end</b> Description;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#290_14">Set_Current</A><FONT COLOR=red><A NAME="283_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#290_27">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                          <A HREF="terminal_interface-curses-menus__ads.htm#291_27">Itm</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="286_16">Set_Curr_Item</A></FONT> (<FONT COLOR=red><A NAME="286_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                              <FONT COLOR=red><A NAME="287_31">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#286_16">Set_Curr_Item</A>, "set_current_item");
+
+      <FONT COLOR=red><A NAME="290_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#286_16">Set_Curr_Item</A> (<A HREF="terminal_interface-curses-menus__ads.htm#290_27">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#291_27">Itm</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#290_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#290_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Current;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#296_13">Current</A><FONT COLOR=red><A NAME="297_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#296_22">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="299_16">Curr_Item</A></FONT> (<FONT COLOR=red><A NAME="299_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#299_16">Curr_Item</A>, "current_item");
+
+      <FONT COLOR=red><A NAME="302_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A> := <A HREF="terminal_interface-curses-menus__adb.htm#299_16">Curr_Item</A> (<A HREF="terminal_interface-curses-menus__ads.htm#296_22">Men</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#302_7">Res</A> = <A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#116_4">Menu_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#302_7">Res</A>;
+   <b>end</b> Current;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#301_14">Set_Top_Row</A><FONT COLOR=red><A NAME="310_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#301_27">Men</A>  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                          <A HREF="terminal_interface-curses-menus__ads.htm#302_27">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="313_16">Set_Toprow</A></FONT> (<FONT COLOR=red><A NAME="313_28">Men</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                           <FONT COLOR=red><A NAME="314_28">Line</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#313_16">Set_Toprow</A>, "set_top_row");
+
+      <FONT COLOR=red><A NAME="317_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#313_16">Set_Toprow</A> (<A HREF="terminal_interface-curses-menus__ads.htm#301_27">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#302_27">Line</A>));
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-menus__adb.htm#317_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#317_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Top_Row;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#307_13">Top_Row</A><FONT COLOR=red><A NAME="324_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#307_22">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="326_16">Toprow</A></FONT> (<FONT COLOR=red><A NAME="326_24">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#326_16">Toprow</A>, "top_row");
+
+      <FONT COLOR=red><A NAME="329_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#326_16">Toprow</A> (<A HREF="terminal_interface-curses-menus__ads.htm#307_22">Men</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#329_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#116_4">Menu_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#329_7">Res</A>);
+   <b>end</b> Top_Row;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#312_13">Get_Index</A><FONT COLOR=red><A NAME="337_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#312_24">Itm</A> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> Positive
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="339_16">Get_Itemindex</A></FONT> (<FONT COLOR=red><A NAME="339_31">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#339_16">Get_Itemindex</A>, "item_index");
+
+      <FONT COLOR=red><A NAME="342_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#339_16">Get_Itemindex</A> (<A HREF="terminal_interface-curses-menus__ads.htm#312_24">Itm</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#342_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#116_4">Menu_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> Positive (Natural (<A HREF="terminal_interface-curses-menus__adb.htm#342_7">Res</A>) + Positive'First);
+   <b>end</b> Get_Index;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#324_14">Post</A><FONT COLOR=red><A NAME="350_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#324_20">Men</A>  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                   <A HREF="terminal_interface-curses-menus__ads.htm#325_20">Post</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="353_16">M_Post</A></FONT> (<FONT COLOR=red><A NAME="353_24">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#353_16">M_Post</A>, "post_menu");
+      <b>function</b> <FONT COLOR=red><A NAME="355_16">M_Unpost</A></FONT> (<FONT COLOR=red><A NAME="355_26">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#355_16">M_Unpost</A>, "unpost_menu");
+
+      <FONT COLOR=red><A NAME="358_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#325_20">Post</A> <b>then</b>
+         <A HREF="terminal_interface-curses-menus__adb.htm#358_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#353_16">M_Post</A> (<A HREF="terminal_interface-curses-menus__ads.htm#324_20">Men</A>);
+      <b>else</b>
+         <A HREF="terminal_interface-curses-menus__adb.htm#358_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#355_16">M_Unpost</A> (<A HREF="terminal_interface-curses-menus__ads.htm#324_20">Men</A>);
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#358_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#358_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Post;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#335_14">Set_Options</A><FONT COLOR=red><A NAME="370_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#335_27">Men</A>     : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                          <A HREF="terminal_interface-curses-menus__ads.htm#336_27">Options</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu_Option_Set</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="373_16">Set_Menu_Opts</A></FONT> (<FONT COLOR=red><A NAME="373_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                              <FONT COLOR=red><A NAME="374_31">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#373_16">Set_Menu_Opts</A>, "set_menu_opts");
+
+      <FONT COLOR=red><A NAME="377_7">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#59_13">MOS_2_CInt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#336_27">Options</A>);
+      <FONT COLOR=red><A NAME="378_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-menus__adb.htm#378_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#373_16">Set_Menu_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#335_27">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#377_7">Opt</A>);
+      <b>if</b>  <A HREF="terminal_interface-curses-menus__adb.htm#378_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#378_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Options;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#341_14">Switch_Options</A><FONT COLOR=red><A NAME="386_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#341_30">Men</A>     : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                             <A HREF="terminal_interface-curses-menus__ads.htm#342_30">Options</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu_Option_Set</A>;
+                             <A HREF="terminal_interface-curses-menus__ads.htm#343_30">On</A>      : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="390_16">Menu_Opts_On</A></FONT> (<FONT COLOR=red><A NAME="390_30">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                             <FONT COLOR=red><A NAME="391_30">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#390_16">Menu_Opts_On</A>, "menu_opts_on");
+      <b>function</b> <FONT COLOR=red><A NAME="393_16">Menu_Opts_Off</A></FONT> (<FONT COLOR=red><A NAME="393_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                              <FONT COLOR=red><A NAME="394_31">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#393_16">Menu_Opts_Off</A>, "menu_opts_off");
+
+      <FONT COLOR=red><A NAME="397_7">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#59_13">MOS_2_CInt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#342_30">Options</A>);
+      <FONT COLOR=red><A NAME="398_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#343_30">On</A> <b>then</b>
+         <A HREF="terminal_interface-curses-menus__adb.htm#398_7">Err</A> := <A HREF="terminal_interface-curses-menus__adb.htm#390_16">Menu_Opts_On</A>  (<A HREF="terminal_interface-curses-menus__ads.htm#341_30">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#397_7">Opt</A>);
+      <b>else</b>
+         <A HREF="terminal_interface-curses-menus__adb.htm#398_7">Err</A> := <A HREF="terminal_interface-curses-menus__adb.htm#393_16">Menu_Opts_Off</A> (<A HREF="terminal_interface-curses-menus__ads.htm#341_30">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#397_7">Opt</A>);
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#398_7">Err</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#398_7">Err</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Switch_Options;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#349_14">Get_Options</A><FONT COLOR=red><A NAME="410_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#349_27">Men</A>     : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                               <A HREF="terminal_interface-curses-menus__ads.htm#350_27">Options</A> : <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu_Option_Set</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="413_16">Menu_Opts</A></FONT> (<FONT COLOR=red><A NAME="413_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#413_16">Menu_Opts</A>, "menu_opts");
+
+      <FONT COLOR=red><A NAME="416_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#413_16">Menu_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#349_27">Men</A>);
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-menus__ads.htm#350_27">Options</A> := <A HREF="terminal_interface-curses-menus__adb.htm#63_13">CInt_2_MOS</A> (<A HREF="terminal_interface-curses-menus__adb.htm#416_7">Res</A>);
+   <b>end</b> Get_Options;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#354_13">Get_Options</A><FONT COLOR=red><A NAME="421_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#354_26">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A> := <A HREF="terminal_interface-curses-menus__ads.htm#63_4">Null_Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu_Option_Set</A>
+   <b>is</b>
+      <FONT COLOR=red><A NAME="423_7">Mos</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu_Option_Set</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-menus__ads.htm#354_13">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#354_26">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#423_7">Mos</A>);
+      <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#423_7">Mos</A>;
+   <b>end</b> Get_Options;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#363_14">Set_Window</A><FONT COLOR=red><A NAME="429_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#363_26">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                         <A HREF="terminal_interface-curses-menus__ads.htm#364_26">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="432_16">Set_Menu_Win</A></FONT> (<FONT COLOR=red><A NAME="432_30">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                             <FONT COLOR=red><A NAME="433_30">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#432_16">Set_Menu_Win</A>, "set_menu_win");
+
+      <FONT COLOR=red><A NAME="436_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#432_16">Set_Menu_Win</A> (<A HREF="terminal_interface-curses-menus__ads.htm#363_26">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#364_26">Win</A>);
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-menus__adb.htm#436_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#436_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Window;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#369_13">Get_Window</A><FONT COLOR=red><A NAME="443_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#369_25">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="445_16">Menu_Win</A></FONT> (<FONT COLOR=red><A NAME="445_26">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#445_16">Menu_Win</A>, "menu_win");
+
+      <FONT COLOR=red><A NAME="448_7">W</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses-menus__adb.htm#445_16">Menu_Win</A> (<A HREF="terminal_interface-curses-menus__ads.htm#369_25">Men</A>);
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#448_7">W</A>;
+   <b>end</b> Get_Window;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#374_14">Set_Sub_Window</A><FONT COLOR=red><A NAME="453_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#374_30">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                             <A HREF="terminal_interface-curses-menus__ads.htm#375_30">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="456_16">Set_Menu_Sub</A></FONT> (<FONT COLOR=red><A NAME="456_30">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                             <FONT COLOR=red><A NAME="457_30">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#456_16">Set_Menu_Sub</A>, "set_menu_sub");
+
+      <FONT COLOR=red><A NAME="460_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#456_16">Set_Menu_Sub</A> (<A HREF="terminal_interface-curses-menus__ads.htm#374_30">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#375_30">Win</A>);
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-menus__adb.htm#460_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#460_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Sub_Window;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#380_13">Get_Sub_Window</A><FONT COLOR=red><A NAME="467_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#380_29">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="469_16">Menu_Sub</A></FONT> (<FONT COLOR=red><A NAME="469_26">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#469_16">Menu_Sub</A>, "menu_sub");
+
+      <FONT COLOR=red><A NAME="472_7">W</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses-menus__adb.htm#469_16">Menu_Sub</A> (<A HREF="terminal_interface-curses-menus__ads.htm#380_29">Men</A>);
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#472_7">W</A>;
+   <b>end</b> Get_Sub_Window;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#385_14">Scale</A><FONT COLOR=red><A NAME="477_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#385_21">Men</A>     : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                    <A HREF="terminal_interface-curses-menus__ads.htm#386_21">Lines</A>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+                    <A HREF="terminal_interface-curses-menus__ads.htm#387_21">Columns</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>)
+   <b>is</b>
+      <b>type</b> C_Int_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>function</b> <FONT COLOR=red><A NAME="482_16">M_Scale</A></FONT> (<FONT COLOR=red><A NAME="482_25">Men</A></FONT>    : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                        Yp, Xp : C_Int_Access) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#482_16">M_Scale</A>, "scale_menu");
+
+      <FONT COLOR=red><A NAME="486_7">X</A></FONT>, <FONT COLOR=red><A NAME="486_10">Y</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <FONT COLOR=red><A NAME="487_7">Res</A></FONT>  : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#482_16">M_Scale</A> (<A HREF="terminal_interface-curses-menus__ads.htm#385_21">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#486_10">Y</A>'<b>Access</b>, <A HREF="terminal_interface-curses-menus__adb.htm#486_7">X</A>'<b>Access</b>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#487_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#487_7">Res</A>);
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-menus__ads.htm#386_21">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#486_10">Y</A>);
+      <A HREF="terminal_interface-curses-menus__ads.htm#387_21">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#486_7">X</A>);
+   <b>end</b> Scale;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#396_14">Position_Cursor</A><FONT COLOR=red><A NAME="496_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#396_31">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="498_16">Pos_Menu_Cursor</A></FONT> (<FONT COLOR=red><A NAME="498_33">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#498_16">Pos_Menu_Cursor</A>, "pos_menu_cursor");
+
+      <FONT COLOR=red><A NAME="501_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#498_16">Pos_Menu_Cursor</A> (<A HREF="terminal_interface-curses-menus__ads.htm#396_31">Men</A>);
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-menus__adb.htm#501_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#501_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Position_Cursor;
+
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#405_14">Set_Mark</A><FONT COLOR=red><A NAME="509_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#405_24">Men</A>  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                       <A HREF="terminal_interface-curses-menus__ads.htm#406_24">Mark</A> : <b>in</b> String)
+   <b>is</b>
+      <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+      <b>function</b> <FONT COLOR=red><A NAME="513_16">Set_Mark</A></FONT> (<FONT COLOR=red><A NAME="513_26">Men</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                         Mark : Char_Ptr) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#513_16">Set_Mark</A>, "set_menu_mark");
+
+      <FONT COLOR=red><A NAME="517_7">Txt</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#406_24">Mark</A>'Length);
+      <FONT COLOR=red><A NAME="518_7">Len</A></FONT> : size_t;
+      <FONT COLOR=red><A NAME="519_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      To_C (<A HREF="terminal_interface-curses-menus__ads.htm#406_24">Mark</A>, <A HREF="terminal_interface-curses-menus__adb.htm#517_7">Txt</A>, <A HREF="terminal_interface-curses-menus__adb.htm#518_7">Len</A>);
+      <A HREF="terminal_interface-curses-menus__adb.htm#519_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#513_16">Set_Mark</A> (<A HREF="terminal_interface-curses-menus__ads.htm#405_24">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#517_7">Txt</A> (<A HREF="terminal_interface-curses-menus__adb.htm#517_7">Txt</A>'First)'<b>Access</b>);
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#519_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#519_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Mark;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#411_14">Mark</A><FONT COLOR=red><A NAME="528_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#411_20">Men</A>  : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                   <A HREF="terminal_interface-curses-menus__ads.htm#412_20">Mark</A> : <b>out</b> String)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="531_16">Get_Menu_Mark</A></FONT> (<FONT COLOR=red><A NAME="531_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#531_16">Get_Menu_Mark</A>, "menu_mark");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#531_16">Get_Menu_Mark</A> (<A HREF="terminal_interface-curses-menus__ads.htm#411_20">Men</A>), <A HREF="terminal_interface-curses-menus__ads.htm#412_20">Mark</A>);
+   <b>end</b> Mark;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#415_14">Mark</A><FONT COLOR=red><A NAME="537_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#415_20">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> String
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="539_16">Get_Menu_Mark</A></FONT> (<FONT COLOR=red><A NAME="539_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#539_16">Get_Menu_Mark</A>, "menu_mark");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#539_16">Get_Menu_Mark</A> (<A HREF="terminal_interface-curses-menus__ads.htm#415_20">Men</A>));
+   <b>end</b> Mark;
+
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#425_14">Set_Foreground</A><FONT COLOR=red><A NAME="546_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-menus__ads.htm#426_7">Men</A>   : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+      <A HREF="terminal_interface-curses-menus__ads.htm#427_7">Fore</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+      <A HREF="terminal_interface-curses-menus__ads.htm#428_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="551_16">Set_Menu_Fore</A></FONT> (<FONT COLOR=red><A NAME="551_31">Men</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                              <FONT COLOR=red><A NAME="552_31">Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#551_16">Set_Menu_Fore</A>, "set_menu_fore");
+
+      <FONT COLOR=red><A NAME="555_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := (Ch    =&gt; Character'First,
+                                             Color =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#428_7">Color</A>,
+                                             Attr  =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#427_7">Fore</A>);
+      <FONT COLOR=red><A NAME="558_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#551_16">Set_Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#426_7">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses-menus__adb.htm#555_7">Ch</A>));
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-menus__adb.htm#558_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#558_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Foreground;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#433_14">Foreground</A><FONT COLOR=red><A NAME="565_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#433_26">Men</A>  : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                         <A HREF="terminal_interface-curses-menus__ads.htm#434_26">Fore</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="568_16">Menu_Fore</A></FONT> (<FONT COLOR=red><A NAME="568_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#568_16">Menu_Fore</A>, "menu_fore");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-menus__ads.htm#434_26">Fore</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#568_16">Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#433_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+   <b>end</b> Foreground;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#438_14">Foreground</A><FONT COLOR=red><A NAME="574_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#438_26">Men</A>   : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                         <A HREF="terminal_interface-curses-menus__ads.htm#439_26">Fore</A>  : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>;
+                         <A HREF="terminal_interface-curses-menus__ads.htm#440_26">Color</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="578_16">Menu_Fore</A></FONT> (<FONT COLOR=red><A NAME="578_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#578_16">Menu_Fore</A>, "menu_fore");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-menus__ads.htm#439_26">Fore</A>  := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#578_16">Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#438_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+      <A HREF="terminal_interface-curses-menus__ads.htm#440_26">Color</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#578_16">Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#438_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#353_10">Color</A>;
+   <b>end</b> Foreground;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#445_14">Set_Background</A><FONT COLOR=red><A NAME="585_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-menus__ads.htm#446_7">Men</A>   : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+      <A HREF="terminal_interface-curses-menus__ads.htm#447_7">Back</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+      <A HREF="terminal_interface-curses-menus__ads.htm#448_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="590_16">Set_Menu_Back</A></FONT> (<FONT COLOR=red><A NAME="590_31">Men</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                              <FONT COLOR=red><A NAME="591_31">Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#590_16">Set_Menu_Back</A>, "set_menu_back");
+
+      <FONT COLOR=red><A NAME="594_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := (Ch    =&gt; Character'First,
+                                             Color =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#448_7">Color</A>,
+                                             Attr  =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#447_7">Back</A>);
+      <FONT COLOR=red><A NAME="597_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#590_16">Set_Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#446_7">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses-menus__adb.htm#594_7">Ch</A>));
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-menus__adb.htm#597_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#597_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Background;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#453_14">Background</A><FONT COLOR=red><A NAME="604_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#453_26">Men</A>  : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                         <A HREF="terminal_interface-curses-menus__ads.htm#454_26">Back</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="607_16">Menu_Back</A></FONT> (<FONT COLOR=red><A NAME="607_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#607_16">Menu_Back</A>, "menu_back");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-menus__ads.htm#454_26">Back</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#607_16">Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#453_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+   <b>end</b> Background;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#458_14">Background</A><FONT COLOR=red><A NAME="613_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#458_26">Men</A>   : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                         <A HREF="terminal_interface-curses-menus__ads.htm#459_26">Back</A>  : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>;
+                         <A HREF="terminal_interface-curses-menus__ads.htm#460_26">Color</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="617_16">Menu_Back</A></FONT> (<FONT COLOR=red><A NAME="617_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#617_16">Menu_Back</A>, "menu_back");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-menus__ads.htm#459_26">Back</A>  := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#617_16">Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#458_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+      <A HREF="terminal_interface-curses-menus__ads.htm#460_26">Color</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#617_16">Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#458_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#353_10">Color</A>;
+   <b>end</b> Background;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#465_14">Set_Grey</A><FONT COLOR=red><A NAME="624_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#466_7">Men</A>   : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                       <A HREF="terminal_interface-curses-menus__ads.htm#467_7">Grey</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+                       <A HREF="terminal_interface-curses-menus__ads.htm#468_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="628_16">Set_Menu_Grey</A></FONT> (<FONT COLOR=red><A NAME="628_31">Men</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                              <FONT COLOR=red><A NAME="629_31">Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#628_16">Set_Menu_Grey</A>, "set_menu_grey");
+
+      <FONT COLOR=red><A NAME="632_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := (Ch    =&gt; Character'First,
+                                             Color =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#468_7">Color</A>,
+                                             Attr  =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#467_7">Grey</A>);
+
+      <FONT COLOR=red><A NAME="636_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#628_16">Set_Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#466_7">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses-menus__adb.htm#632_7">Ch</A>));
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-menus__adb.htm#636_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#636_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Grey;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#473_14">Grey</A><FONT COLOR=red><A NAME="643_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#473_20">Men</A>  : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                   <A HREF="terminal_interface-curses-menus__ads.htm#474_20">Grey</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="646_16">Menu_Grey</A></FONT> (<FONT COLOR=red><A NAME="646_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#646_16">Menu_Grey</A>, "menu_grey");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-menus__ads.htm#474_20">Grey</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#646_16">Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#473_20">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+   <b>end</b> Grey;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#478_14">Grey</A><FONT COLOR=red><A NAME="652_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#479_7">Men</A>  : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                   <A HREF="terminal_interface-curses-menus__ads.htm#480_7">Grey</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>;
+                   <A HREF="terminal_interface-curses-menus__ads.htm#481_7">Color</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="656_16">Menu_Grey</A></FONT> (<FONT COLOR=red><A NAME="656_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#656_16">Menu_Grey</A>, "menu_grey");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-menus__ads.htm#480_7">Grey</A>  := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#656_16">Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#479_7">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+      <A HREF="terminal_interface-curses-menus__ads.htm#481_7">Color</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#656_16">Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#479_7">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#353_10">Color</A>;
+   <b>end</b> Grey;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#486_14">Set_Pad_Character</A><FONT COLOR=red><A NAME="663_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#486_33">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                                <A HREF="terminal_interface-curses-menus__ads.htm#487_33">Pad</A> : <b>in</b> Character := <A HREF="terminal_interface-curses-menus__ads.htm#54_4">Space</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="666_16">Set_Menu_Pad</A></FONT> (<FONT COLOR=red><A NAME="666_30">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                             <FONT COLOR=red><A NAME="667_30">Ch</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#666_16">Set_Menu_Pad</A>, "set_menu_pad");
+
+      <FONT COLOR=red><A NAME="670_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#666_16">Set_Menu_Pad</A> (<A HREF="terminal_interface-curses-menus__ads.htm#486_33">Men</A>,
+                                                <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (Character'Pos (<A HREF="terminal_interface-curses-menus__ads.htm#487_33">Pad</A>)));
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#670_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#670_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Pad_Character;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#492_14">Pad_Character</A><FONT COLOR=red><A NAME="678_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#492_29">Men</A> : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                            <A HREF="terminal_interface-curses-menus__ads.htm#493_29">Pad</A> : <b>out</b> Character)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="681_16">Menu_Pad</A></FONT> (<FONT COLOR=red><A NAME="681_26">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#681_16">Menu_Pad</A>, "menu_pad");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-menus__ads.htm#493_29">Pad</A> := Character'Val (<A HREF="terminal_interface-curses-menus__adb.htm#681_16">Menu_Pad</A> (<A HREF="terminal_interface-curses-menus__ads.htm#492_29">Men</A>));
+   <b>end</b> Pad_Character;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#502_14">Set_Spacing</A><FONT COLOR=red><A NAME="687_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#502_27">Men</A>   : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                          <A HREF="terminal_interface-curses-menus__ads.htm#503_27">Descr</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> := 0;
+                          <A HREF="terminal_interface-curses-menus__ads.htm#504_27">Row</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>   := 0;
+                          <A HREF="terminal_interface-curses-menus__ads.htm#505_27">Col</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> := 0)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="692_16">Set_Spacing</A></FONT> (<FONT COLOR=red><A NAME="692_29">Men</A></FONT>     : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                            <FONT COLOR=red><A NAME="693_29">D</A></FONT>, <FONT COLOR=red><A NAME="693_32">R</A></FONT>, <FONT COLOR=red><A NAME="693_35">C</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#692_16">Set_Spacing</A>, "set_menu_spacing");
+
+      <FONT COLOR=red><A NAME="696_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#692_16">Set_Spacing</A> (<A HREF="terminal_interface-curses-menus__ads.htm#502_27">Men</A>,
+                                               <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#503_27">Descr</A>),
+                                               <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#504_27">Row</A>),
+                                               <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#505_27">Col</A>));
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#696_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#696_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Spacing;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#510_14">Spacing</A><FONT COLOR=red><A NAME="706_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#510_23">Men</A>   : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                      <A HREF="terminal_interface-curses-menus__ads.htm#511_23">Descr</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+                      <A HREF="terminal_interface-curses-menus__ads.htm#512_23">Row</A>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+                      <A HREF="terminal_interface-curses-menus__ads.htm#513_23">Col</A>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+   <b>is</b>
+      <b>type</b> C_Int_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>function</b> <FONT COLOR=red><A NAME="712_16">Get_Spacing</A></FONT> (<FONT COLOR=red><A NAME="712_29">Men</A></FONT>     : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                            D, R, C : C_Int_Access) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#712_16">Get_Spacing</A>, "menu_spacing");
+
+      <FONT COLOR=red><A NAME="716_7">D</A></FONT>, <FONT COLOR=red><A NAME="716_10">R</A></FONT>, <FONT COLOR=red><A NAME="716_13">C</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <FONT COLOR=red><A NAME="717_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#712_16">Get_Spacing</A> (<A HREF="terminal_interface-curses-menus__ads.htm#510_23">Men</A>,
+                                               <A HREF="terminal_interface-curses-menus__adb.htm#716_7">D</A>'<b>Access</b>,
+                                               <A HREF="terminal_interface-curses-menus__adb.htm#716_10">R</A>'<b>Access</b>,
+                                               <A HREF="terminal_interface-curses-menus__adb.htm#716_13">C</A>'<b>Access</b>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#717_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#717_7">Res</A>);
+      <b>else</b>
+         <A HREF="terminal_interface-curses-menus__ads.htm#511_23">Descr</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#716_7">D</A>);
+         <A HREF="terminal_interface-curses-menus__ads.htm#512_23">Row</A>   := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#716_10">R</A>);
+         <A HREF="terminal_interface-curses-menus__ads.htm#513_23">Col</A>   := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#716_13">C</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Spacing;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#522_13">Set_Pattern</A><FONT COLOR=red><A NAME="731_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#522_26">Men</A>  : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                         <A HREF="terminal_interface-curses-menus__ads.htm#523_26">Text</A> : String) <b>return</b> Boolean
+   <b>is</b>
+      <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+      <b>function</b> <FONT COLOR=red><A NAME="735_16">Set_Pattern</A></FONT> (<FONT COLOR=red><A NAME="735_29">Men</A></FONT>     : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                            Pattern : Char_Ptr) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#735_16">Set_Pattern</A>, "set_menu_pattern");
+
+      <FONT COLOR=red><A NAME="739_7">S</A></FONT>   : char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#523_26">Text</A>'Length);
+      <FONT COLOR=red><A NAME="740_7">L</A></FONT>   : size_t;
+      <FONT COLOR=red><A NAME="741_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      To_C (<A HREF="terminal_interface-curses-menus__ads.htm#523_26">Text</A>, <A HREF="terminal_interface-curses-menus__adb.htm#739_7">S</A>, <A HREF="terminal_interface-curses-menus__adb.htm#740_7">L</A>);
+      <A HREF="terminal_interface-curses-menus__adb.htm#741_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#735_16">Set_Pattern</A> (<A HREF="terminal_interface-curses-menus__ads.htm#522_26">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#739_7">S</A> (<A HREF="terminal_interface-curses-menus__adb.htm#739_7">S</A>'First)'<b>Access</b>);
+      <b>case</b> <A HREF="terminal_interface-curses-menus__adb.htm#741_7">Res</A> <b>is</b>
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#89_4">E_No_Match</A> =&gt; <b>return</b> False;
+         <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A>       =&gt; <b>return</b> True;
+         <b>when</b> <b>others</b> =&gt;
+            <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#741_7">Res</A>);
+            <b>return</b> False;
+      <b>end</b> <b>case</b>;
+   <b>end</b> Set_Pattern;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#529_14">Pattern</A><FONT COLOR=red><A NAME="754_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#529_23">Men</A>  : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                      <A HREF="terminal_interface-curses-menus__ads.htm#530_23">Text</A> : <b>out</b> String)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="757_16">Get_Pattern</A></FONT> (<FONT COLOR=red><A NAME="757_29">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#757_16">Get_Pattern</A>, "menu_pattern");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#757_16">Get_Pattern</A> (<A HREF="terminal_interface-curses-menus__ads.htm#529_23">Men</A>), <A HREF="terminal_interface-curses-menus__ads.htm#530_23">Text</A>);
+   <b>end</b> Pattern;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#539_14">Set_Format</A><FONT COLOR=red><A NAME="763_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#539_26">Men</A>     : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                         <A HREF="terminal_interface-curses-menus__ads.htm#540_26">Lines</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+                         <A HREF="terminal_interface-curses-menus__ads.htm#541_26">Columns</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="767_16">Set_Menu_Fmt</A></FONT> (<FONT COLOR=red><A NAME="767_30">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                             <FONT COLOR=red><A NAME="768_30">Lin</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                             <FONT COLOR=red><A NAME="769_30">Col</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#767_16">Set_Menu_Fmt</A>, "set_menu_format");
+
+      <FONT COLOR=red><A NAME="772_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#767_16">Set_Menu_Fmt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#539_26">Men</A>,
+                                                <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#540_26">Lines</A>),
+                                                <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#541_26">Columns</A>));
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-menus__adb.htm#772_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#772_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Format;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#546_14">Format</A><FONT COLOR=red><A NAME="781_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#546_22">Men</A>     : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                     <A HREF="terminal_interface-curses-menus__ads.htm#547_22">Lines</A>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+                     <A HREF="terminal_interface-curses-menus__ads.htm#548_22">Columns</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>)
+   <b>is</b>
+      <b>type</b> C_Int_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>function</b> <FONT COLOR=red><A NAME="786_16">Menu_Fmt</A></FONT> (<FONT COLOR=red><A NAME="786_26">Men</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                         Y, X : C_Int_Access) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#786_16">Menu_Fmt</A>, "menu_format");
+
+      <FONT COLOR=red><A NAME="790_7">L</A></FONT>, <FONT COLOR=red><A NAME="790_10">C</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <FONT COLOR=red><A NAME="791_7">Res</A></FONT>  : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#786_16">Menu_Fmt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#546_22">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#790_7">L</A>'<b>Access</b>, <A HREF="terminal_interface-curses-menus__adb.htm#790_10">C</A>'<b>Access</b>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#791_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#791_7">Res</A>);
+      <b>else</b>
+         <A HREF="terminal_interface-curses-menus__ads.htm#547_22">Lines</A>   := <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#790_7">L</A>);
+         <A HREF="terminal_interface-curses-menus__ads.htm#548_22">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#790_10">C</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Format;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#560_14">Set_Item_Init_Hook</A><FONT COLOR=red><A NAME="801_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#560_34">Men</A>  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                                 <A HREF="terminal_interface-curses-menus__ads.htm#561_34">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="804_16">Set_Item_Init</A></FONT> (<FONT COLOR=red><A NAME="804_31">Men</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                              <FONT COLOR=red><A NAME="805_31">Proc</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#804_16">Set_Item_Init</A>, "set_item_init");
+
+      <FONT COLOR=red><A NAME="808_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#804_16">Set_Item_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#560_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#561_34">Proc</A>);
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-menus__adb.htm#808_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#808_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Item_Init_Hook;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#566_14">Set_Item_Term_Hook</A><FONT COLOR=red><A NAME="815_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#566_34">Men</A>  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                                 <A HREF="terminal_interface-curses-menus__ads.htm#567_34">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="818_16">Set_Item_Term</A></FONT> (<FONT COLOR=red><A NAME="818_31">Men</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                              <FONT COLOR=red><A NAME="819_31">Proc</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#818_16">Set_Item_Term</A>, "set_item_term");
+
+      <FONT COLOR=red><A NAME="822_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#818_16">Set_Item_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#566_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#567_34">Proc</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#822_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#822_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Item_Term_Hook;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#572_14">Set_Menu_Init_Hook</A><FONT COLOR=red><A NAME="829_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#572_34">Men</A>  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                                 <A HREF="terminal_interface-curses-menus__ads.htm#573_34">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="832_16">Set_Menu_Init</A></FONT> (<FONT COLOR=red><A NAME="832_31">Men</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                              <FONT COLOR=red><A NAME="833_31">Proc</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#832_16">Set_Menu_Init</A>, "set_menu_init");
+
+      <FONT COLOR=red><A NAME="836_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#832_16">Set_Menu_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#572_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#573_34">Proc</A>);
+   <b>begin</b>
+      <b>if</b>  <A HREF="terminal_interface-curses-menus__adb.htm#836_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#836_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Menu_Init_Hook;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#578_14">Set_Menu_Term_Hook</A><FONT COLOR=red><A NAME="843_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#578_34">Men</A>  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                                 <A HREF="terminal_interface-curses-menus__ads.htm#579_34">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="846_16">Set_Menu_Term</A></FONT> (<FONT COLOR=red><A NAME="846_31">Men</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                              <FONT COLOR=red><A NAME="847_31">Proc</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#846_16">Set_Menu_Term</A>, "set_menu_term");
+
+      <FONT COLOR=red><A NAME="850_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#846_16">Set_Menu_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#578_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#579_34">Proc</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#850_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#850_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Menu_Term_Hook;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#584_13">Get_Item_Init_Hook</A><FONT COLOR=red><A NAME="857_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#584_33">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="859_16">Item_Init</A></FONT> (<FONT COLOR=red><A NAME="859_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#859_16">Item_Init</A>, "item_init");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#859_16">Item_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#584_33">Men</A>);
+   <b>end</b> Get_Item_Init_Hook;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#589_13">Get_Item_Term_Hook</A><FONT COLOR=red><A NAME="865_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#589_33">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="867_16">Item_Term</A></FONT> (<FONT COLOR=red><A NAME="867_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#867_16">Item_Term</A>, "item_term");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#867_16">Item_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#589_33">Men</A>);
+   <b>end</b> Get_Item_Term_Hook;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#594_13">Get_Menu_Init_Hook</A><FONT COLOR=red><A NAME="873_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#594_33">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="875_16">Menu_Init</A></FONT> (<FONT COLOR=red><A NAME="875_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#875_16">Menu_Init</A>, "menu_init");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#875_16">Menu_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#594_33">Men</A>);
+   <b>end</b> Get_Menu_Init_Hook;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#599_13">Get_Menu_Term_Hook</A><FONT COLOR=red><A NAME="881_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#599_33">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="883_16">Menu_Term</A></FONT> (<FONT COLOR=red><A NAME="883_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#883_16">Menu_Term</A>, "menu_term");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#883_16">Menu_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#599_33">Men</A>);
+   <b>end</b> Get_Menu_Term_Hook;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#608_14">Redefine</A><FONT COLOR=red><A NAME="889_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#608_24">Men</A>   : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                       <A HREF="terminal_interface-curses-menus__ads.htm#609_24">Items</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#180_9">Item_Array_Access</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="892_16">Set_Items</A></FONT> (<FONT COLOR=red><A NAME="892_27">Men</A></FONT>   : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                          <FONT COLOR=red><A NAME="893_27">Items</A></FONT> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#892_16">Set_Items</A>, "set_menu_items");
+
+      <FONT COLOR=red><A NAME="896_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+   <b>begin</b>
+      <b>pragma</b> Assert (Items (Items'Last) = Null_Item);
+      <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#609_24">Items</A> (<A HREF="terminal_interface-curses-menus__ads.htm#609_24">Items</A>'Last) /= <A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#116_4">Menu_Exception</A>;
+      <b>else</b>
+         <A HREF="terminal_interface-curses-menus__adb.htm#896_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#892_16">Set_Items</A> (<A HREF="terminal_interface-curses-menus__ads.htm#608_24">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#609_24">Items</A>.<b>all</b>'Address);
+         <b>if</b>  <A HREF="terminal_interface-curses-menus__adb.htm#896_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+            <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#896_7">Res</A>);
+         <b>end</b> <b>if</b>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Redefine;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#624_13">Item_Count</A><FONT COLOR=red><A NAME="909_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#624_25">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> Natural
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="911_16">Count</A></FONT> (<FONT COLOR=red><A NAME="911_23">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#911_16">Count</A>, "item_count");
+   <b>begin</b>
+      <b>return</b> Natural (<A HREF="terminal_interface-curses-menus__adb.htm#911_16">Count</A> (<A HREF="terminal_interface-curses-menus__ads.htm#624_25">Men</A>));
+   <b>end</b> Item_Count;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#618_13">Items</A><FONT COLOR=red><A NAME="917_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#618_20">Men</A>   : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                   <A HREF="terminal_interface-curses-menus__ads.htm#619_20">Index</A> : Positive) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>
+   <b>is</b>
+      <b>use</b> <A HREF="terminal_interface-curses-menus__adb.htm#53_12">I_Array</A>;
+
+      <b>function</b> <FONT COLOR=red><A NAME="922_16">C_Mitems</A></FONT> (<FONT COLOR=red><A NAME="922_26">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> Pointer;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#922_16">C_Mitems</A>, "menu_items");
+
+      P : Pointer := <A HREF="terminal_interface-curses-menus__adb.htm#922_16">C_Mitems</A> (<A HREF="terminal_interface-curses-menus__ads.htm#618_20">Men</A>);
+   <b>begin</b>
+      <b>if</b> P = <b>null</b> <b>or</b> <b>else</b> <A HREF="terminal_interface-curses-menus__ads.htm#619_20">Index</A> <b>not</b> <b>in</b> 1 .. <A HREF="terminal_interface-curses-menus__ads.htm#624_13">Item_Count</A> (<A HREF="terminal_interface-curses-menus__ads.htm#618_20">Men</A>) <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#116_4">Menu_Exception</A>;
+      <b>else</b>
+         P := P + ptrdiff_t (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#619_20">Index</A>) - 1);
+         <b>return</b> P.<b>all</b>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Items;
+
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#633_13">Create</A><FONT COLOR=red><A NAME="936_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#633_21">Items</A> : <A HREF="terminal_interface-curses-menus__ads.htm#180_9">Item_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="938_16">Newmenu</A></FONT> (<FONT COLOR=red><A NAME="938_25">Items</A></FONT> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#938_16">Newmenu</A>, "new_menu");
+
+      <FONT COLOR=red><A NAME="941_7">M</A></FONT>   : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+   <b>begin</b>
+      <b>pragma</b> Assert (Items (Items'Last) = Null_Item);
+      <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#633_21">Items</A> (<A HREF="terminal_interface-curses-menus__ads.htm#633_21">Items</A>'Last) /= <A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#116_4">Menu_Exception</A>;
+      <b>else</b>
+         <A HREF="terminal_interface-curses-menus__adb.htm#941_7">M</A> := <A HREF="terminal_interface-curses-menus__adb.htm#938_16">Newmenu</A> (<A HREF="terminal_interface-curses-menus__ads.htm#633_21">Items</A>.<b>all</b>'Address);
+         <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#941_7">M</A> = <A HREF="terminal_interface-curses-menus__ads.htm#63_4">Null_Menu</A> <b>then</b>
+            <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#116_4">Menu_Exception</A>;
+         <b>end</b> <b>if</b>;
+         <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#941_7">M</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Create;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#640_14">Delete</A><FONT COLOR=red><A NAME="955_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#640_22">Men</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="957_16">Free</A></FONT> (<FONT COLOR=red><A NAME="957_22">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#957_16">Free</A>, "free_menu");
+
+      <FONT COLOR=red><A NAME="960_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#957_16">Free</A> (<A HREF="terminal_interface-curses-menus__ads.htm#640_22">Men</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#960_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#960_7">Res</A>);
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-menus__ads.htm#640_22">Men</A> := <A HREF="terminal_interface-curses-menus__ads.htm#63_4">Null_Menu</A>;
+   <b>end</b> Delete;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#655_13">Driver</A><FONT COLOR=red><A NAME="969_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#655_21">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                    <A HREF="terminal_interface-curses-menus__ads.htm#656_21">Key</A> : <A HREF="terminal_interface-curses__ads.htm#67_9">Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#649_9">Driver_Result</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="972_16">Driver</A></FONT> (<FONT COLOR=red><A NAME="972_24">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                       <FONT COLOR=red><A NAME="973_24">Key</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#972_16">Driver</A>, "menu_driver");
+
+      <FONT COLOR=red><A NAME="976_7">R</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#972_16">Driver</A> (<A HREF="terminal_interface-curses-menus__ads.htm#655_21">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#656_21">Key</A>));
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#976_7">R</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+         <b>case</b> <A HREF="terminal_interface-curses-menus__adb.htm#976_7">R</A> <b>is</b>
+            <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#88_4">E_Unknown_Command</A>  =&gt; <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#651_27">Unknown_Request</A>;
+            <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#89_4">E_No_Match</A>         =&gt; <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#652_27">No_Match</A>;
+            <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#92_4">E_Request_Denied</A> |
+                 <A HREF="terminal_interface-curses-aux__ads.htm#90_4">E_Not_Selectable</A>   =&gt; <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#650_27">Request_Denied</A>;
+            <b>when</b> <b>others</b> =&gt;
+               <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#976_7">R</A>);
+         <b>end</b> <b>case</b>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#649_27">Menu_Ok</A>;
+   <b>end</b> Driver;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#182_14">Free</A><FONT COLOR=red><A NAME="991_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#182_20">IA</A>         : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#180_9">Item_Array_Access</A>;
+                   <A HREF="terminal_interface-curses-menus__ads.htm#183_20">Free_Items</A> : <b>in</b> Boolean := False)
+   <b>is</b>
+      <b>procedure</b> <FONT COLOR=red><A NAME="994_17">Release</A></FONT> <b>is</b> <b>new</b> Ada.Unchecked_Deallocation
+        (<A HREF="terminal_interface-curses-menus__ads.htm#177_9">Item_Array</A>, <A HREF="terminal_interface-curses-menus__ads.htm#180_9">Item_Array_Access</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#182_20">IA</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-menus__ads.htm#183_20">Free_Items</A> <b>then</b>
+         <b>for</b> <FONT COLOR=red><A NAME="998_14">I</A></FONT> <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#182_20">IA</A>'First .. (<A HREF="terminal_interface-curses-menus__ads.htm#182_20">IA</A>'Last - 1) <b>loop</b>
+            <b>if</b> (<A HREF="terminal_interface-curses-menus__ads.htm#182_20">IA</A> (<A HREF="terminal_interface-curses-menus__adb.htm#998_14">I</A>) /= <A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A>) <b>then</b>
+               <A HREF="terminal_interface-curses-menus__ads.htm#640_14">Delete</A> (<A HREF="terminal_interface-curses-menus__ads.htm#182_20">IA</A> (<A HREF="terminal_interface-curses-menus__adb.htm#998_14">I</A>));
+            <b>end</b> <b>if</b>;
+         <b>end</b> <b>loop</b>;
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-menus__adb.htm#994_17">Release</A> (<A HREF="terminal_interface-curses-menus__ads.htm#182_20">IA</A>);
+   <b>end</b> Free;
+
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#147_13">Default_Menu_Options</A><FONT COLOR=red><A NAME="1008_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu_Option_Set</A>
+   <b>is</b>
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#354_13">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#63_4">Null_Menu</A>);
+   <b>end</b> Default_Menu_Options;
+
+   <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#170_13">Default_Item_Options</A><FONT COLOR=red><A NAME="1014_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item_Option_Set</A>
+   <b>is</b>
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#354_13">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A>);
+   <b>end</b> Default_Item_Options;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+
+<b>end</b> Terminal_Interface.Curses.Menus;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/terminal_interface-curses-menus__ads.htm b/doc/html/ada/terminal_interface-curses-menus__ads.htm
new file mode 100644 (file)
index 0000000..2258414
--- /dev/null
@@ -0,0 +1,674 @@
+<HTML><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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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 01.00</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#23_9">System</A>;
+<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> Preelaborate (Terminal_Interface.Curses.Menus);
+   <b>pragma</b> Linker_Options ("-lmenu");
+   <b>pragma</b> Linker_Options ("-lncurses");
+
+   Space : Character <b>renames</b> Ada.Characters.Latin_1.Space;
+
+   <b>type</b> <FONT COLOR=red><A NAME="57_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="63_4">Null_Item</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_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>
+   <FONT COLOR=red><A NAME="70_4">M_Left_Item</A></FONT>       : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 1;
+   <FONT COLOR=red><A NAME="71_4">M_Right_Item</A></FONT>      : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 2;
+   <FONT COLOR=red><A NAME="72_4">M_Up_Item</A></FONT>         : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 3;
+   <FONT COLOR=red><A NAME="73_4">M_Down_Item</A></FONT>       : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 4;
+   <FONT COLOR=red><A NAME="74_4">M_ScrollUp_Line</A></FONT>   : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 5;
+   <FONT COLOR=red><A NAME="75_4">M_ScrollDown_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 6;
+   <FONT COLOR=red><A NAME="76_4">M_ScrollDown_Page</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 7;
+   <FONT COLOR=red><A NAME="77_4">M_ScrollUp_Page</A></FONT>   : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 8;
+   <FONT COLOR=red><A NAME="78_4">M_First_Item</A></FONT>      : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 9;
+   <FONT COLOR=red><A NAME="79_4">M_Last_Item</A></FONT>       : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 10;
+   <FONT COLOR=red><A NAME="80_4">M_Next_Item</A></FONT>       : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 11;
+   <FONT COLOR=red><A NAME="81_4">M_Previous_Item</A></FONT>   : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 12;
+   <FONT COLOR=red><A NAME="82_4">M_Toggle_Item</A></FONT>     : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 13;
+   <FONT COLOR=red><A NAME="83_4">M_Clear_Pattern</A></FONT>   : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 14;
+   <FONT COLOR=red><A NAME="84_4">M_Back_Pattern</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 15;
+   <FONT COLOR=red><A NAME="85_4">M_Next_Match</A></FONT>      : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 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>
+   <FONT COLOR=red><A NAME="89_4">REQ_LEFT_ITEM</A></FONT>     : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#70_4">M_Left_Item</A>;
+   <FONT COLOR=red><A NAME="90_4">REQ_RIGHT_ITEM</A></FONT>    : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#71_4">M_Right_Item</A>;
+   <FONT COLOR=red><A NAME="91_4">REQ_UP_ITEM</A></FONT>       : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#72_4">M_Up_Item</A>;
+   <FONT COLOR=red><A NAME="92_4">REQ_DOWN_ITEM</A></FONT>     : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#73_4">M_Down_Item</A>;
+   <FONT COLOR=red><A NAME="93_4">REQ_SCR_ULINE</A></FONT>     : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#74_4">M_ScrollUp_Line</A>;
+   <FONT COLOR=red><A NAME="94_4">REQ_SCR_DLINE</A></FONT>     : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#75_4">M_ScrollDown_Line</A>;
+   <FONT COLOR=red><A NAME="95_4">REQ_SCR_DPAGE</A></FONT>     : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#76_4">M_ScrollDown_Page</A>;
+   <FONT COLOR=red><A NAME="96_4">REQ_SCR_UPAGE</A></FONT>     : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#77_4">M_ScrollUp_Page</A>;
+   <FONT COLOR=red><A NAME="97_4">REQ_FIRST_ITEM</A></FONT>    : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#78_4">M_First_Item</A>;
+   <FONT COLOR=red><A NAME="98_4">REQ_LAST_ITEM</A></FONT>     : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#79_4">M_Last_Item</A>;
+   <FONT COLOR=red><A NAME="99_4">REQ_NEXT_ITEM</A></FONT>     : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#80_4">M_Next_Item</A>;
+   <FONT COLOR=red><A NAME="100_4">REQ_PREV_ITEM</A></FONT>     : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#81_4">M_Previous_Item</A>;
+   <FONT COLOR=red><A NAME="101_4">REQ_TOGGLE_ITEM</A></FONT>   : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#82_4">M_Toggle_Item</A>;
+   <FONT COLOR=red><A NAME="102_4">REQ_CLEAR_PATTERN</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#83_4">M_Clear_Pattern</A>;
+   <FONT COLOR=red><A NAME="103_4">REQ_BACK_PATTERN</A></FONT>  : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#84_4">M_Back_Pattern</A>;
+   <FONT COLOR=red><A NAME="104_4">REQ_NEXT_MATCH</A></FONT>    : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#85_4">M_Next_Match</A>;
+   REQ_PREV_MATCH    : Menu_Request_Code <b>renames</b> M_Previous_Match;
+
+   <b>procedure</b> Request_Name (<FONT COLOR=red><A NAME="107_28">Key</A></FONT>  : <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>
+         <FONT COLOR=red><A NAME="124_10">One_Valued</A></FONT>        : Boolean;
+         <FONT COLOR=red><A NAME="125_10">Show_Descriptions</A></FONT> : Boolean;
+         <FONT COLOR=red><A NAME="126_10">Row_Major_Order</A></FONT>   : Boolean;
+         <FONT COLOR=red><A NAME="127_10">Ignore_Case</A></FONT>       : Boolean;
+         <FONT COLOR=red><A NAME="128_10">Show_Matches</A></FONT>      : Boolean;
+         Non_Cyclic        : Boolean;
+      <b>end</b> <b>record</b><A HREF="terminal_interface-curses-menus__ads.htm#121_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#154_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> &lt;&gt;) <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 (<FONT COLOR=red><A NAME="183_20">IA</A></FONT>         : <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>--  #1A NAME="AFU_1"#2|</EM></FONT>
+   <b>function</b> Create (<FONT COLOR=red><A NAME="194_21">Name</A></FONT>        : 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>--  #1A NAME="AFU_2"#2|</EM></FONT>
+   <b>function</b> New_Item (<FONT COLOR=red><A NAME="200_23">Name</A></FONT>        : String;
+             <A HREF="terminal_interface-curses-menus__ads.htm#193_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>--  #1A NAME="AFU_3"#2|</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>--  #1A NAME="AFU_4"#2|</EM></FONT>
+   <b>procedure</b> Set_Value (<FONT COLOR=red><A NAME="215_25">Itm</A></FONT>   : <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>--  #1A NAME="AFU_5"#2|</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>--  #1A NAME="AFU_6"#2|</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>--  #1A NAME="AFU_7"#2|</EM></FONT>
+   <b>procedure</b> Set_Options (<FONT COLOR=red><A NAME="239_27">Itm</A></FONT>     : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#154_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>--  #1A NAME="AFU_8"#2|</EM></FONT>
+   <b>procedure</b> Switch_Options (<FONT COLOR=red><A NAME="245_30">Itm</A></FONT>     : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item</A>;
+                             <FONT COLOR=red><A NAME="246_30">Options</A></FONT> : <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>--  #1A NAME="AFU_9"#2|</EM></FONT>
+   <b>procedure</b> Get_Options (<FONT COLOR=red><A NAME="254_27">Itm</A></FONT>     : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#154_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>--  #1A NAME="AFU_10"#2|</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>--  #1A NAME="AFU_11"#2|</EM></FONT>
+   <b>procedure</b> Name (<FONT COLOR=red><A NAME="268_20">Itm</A></FONT>  : <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>--  #1A NAME="AFU_12"#2|</EM></FONT>
+   <b>procedure</b> Description (<FONT COLOR=red><A NAME="277_27">Itm</A></FONT>         : <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>--  #1A NAME="AFU_13"#2|</EM></FONT>
+   <b>procedure</b> Set_Current (<FONT COLOR=red><A NAME="291_27">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_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>--  #1A NAME="AFU_14"#2|</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>--  #1A NAME="AFU_15"#2|</EM></FONT>
+   <b>procedure</b> Set_Top_Row (<FONT COLOR=red><A NAME="302_27">Men</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_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>--  #1A NAME="AFU_16"#2|</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>--  #1A NAME="AFU_17"#2|</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>--  #1A NAME="AFU_18"#2|</EM></FONT>
+   <b>procedure</b> Post (<FONT COLOR=red><A NAME="325_20">Men</A></FONT>  : <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>--  #1A NAME="AFU_19"#2|</EM></FONT>
+   <b>procedure</b> Set_Options (<FONT COLOR=red><A NAME="336_27">Men</A></FONT>     : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#121_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>--  #1A NAME="AFU_20"#2|</EM></FONT>
+   <b>procedure</b> Switch_Options (<FONT COLOR=red><A NAME="342_30">Men</A></FONT>     : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu</A>;
+                             <FONT COLOR=red><A NAME="343_30">Options</A></FONT> : <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>--  #1A NAME="AFU_21"#2|</EM></FONT>
+   <b>procedure</b> Get_Options (<FONT COLOR=red><A NAME="350_27">Men</A></FONT>     : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm#121_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>--  #1A NAME="AFU_22"#2|</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>--  #1A NAME="AFU_23"#2|</EM></FONT>
+   <b>procedure</b> Set_Window (<FONT COLOR=red><A NAME="364_26">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_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>--  #1A NAME="AFU_24"#2|</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>--  #1A NAME="AFU_25"#2|</EM></FONT>
+   <b>procedure</b> Set_Sub_Window (<FONT COLOR=red><A NAME="375_30">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_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>--  #1A NAME="AFU_26"#2|</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>--  #1A NAME="AFU_27"#2|</EM></FONT>
+   <b>procedure</b> Scale (<FONT COLOR=red><A NAME="386_21">Men</A></FONT>     : <b>in</b> Menu;
+                    <FONT COLOR=red><A NAME="387_21">Lines</A></FONT>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_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>--  #1A NAME="AFU_28"#2|</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>--  #1A NAME="AFU_29"#2|</EM></FONT>
+   <b>procedure</b> Set_Mark (<FONT COLOR=red><A NAME="406_24">Men</A></FONT>  : <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>--  #1A NAME="AFU_30"#2|</EM></FONT>
+   <b>procedure</b> Mark (<FONT COLOR=red><A NAME="412_20">Men</A></FONT>  : <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>--  #1A NAME="AFU_31"#2|</EM></FONT>
+   <b>procedure</b> Set_Foreground
+     (<FONT COLOR=red><A NAME="427_7">Men</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Menu</A>;
+      <FONT COLOR=red><A NAME="428_7">Fore</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_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>--  #1A NAME="AFU_32"#2|</EM></FONT>
+   <b>procedure</b> Foreground (<FONT COLOR=red><A NAME="434_26">Men</A></FONT>   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#304_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>--  #1A NAME="AFU_33"#2|</EM></FONT>
+   <b>procedure</b> Foreground (<FONT COLOR=red><A NAME="439_26">Men</A></FONT>   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#304_9">Menu</A>;
+                         <FONT COLOR=red><A NAME="440_26">Fore</A></FONT>  : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_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>--  #1A NAME="AFU_34"#2|</EM></FONT>
+   <b>procedure</b> Set_Background
+     (<FONT COLOR=red><A NAME="447_7">Men</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Menu</A>;
+      <FONT COLOR=red><A NAME="448_7">Back</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_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>--  #1A NAME="AFU_35"#2|</EM></FONT>
+   <b>procedure</b> Background (<FONT COLOR=red><A NAME="454_26">Men</A></FONT>  : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#304_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>--  #1A NAME="AFU_36"#2|</EM></FONT>
+
+   <b>procedure</b> Background (<FONT COLOR=red><A NAME="459_26">Men</A></FONT>   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#304_9">Menu</A>;
+                         <FONT COLOR=red><A NAME="460_26">Back</A></FONT>  : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_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>--  #1A NAME="AFU_37"#2|</EM></FONT>
+   <b>procedure</b> Set_Grey
+     (<FONT COLOR=red><A NAME="467_7">Men</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Menu</A>;
+      <FONT COLOR=red><A NAME="468_7">Grey</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_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>--  #1A NAME="AFU_38"#2|</EM></FONT>
+   <b>procedure</b> Grey (<FONT COLOR=red><A NAME="474_20">Men</A></FONT>  : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#304_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>--  #1A NAME="AFU_39"#2|</EM></FONT>
+   <b>procedure</b> Grey
+     (<FONT COLOR=red><A NAME="480_7">Men</A></FONT>   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#304_9">Menu</A>;
+      <FONT COLOR=red><A NAME="481_7">Grey</A></FONT>  : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_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>--  #1A NAME="AFU_40"#2|</EM></FONT>
+   <b>procedure</b> Set_Pad_Character (<FONT COLOR=red><A NAME="487_33">Men</A></FONT> : <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>--  #1A NAME="AFU_41"#2|</EM></FONT>
+   <b>procedure</b> Pad_Character (<FONT COLOR=red><A NAME="493_29">Men</A></FONT> : <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>--  #1A NAME="AFU_42"#2|</EM></FONT>
+   <b>procedure</b> Set_Spacing (<FONT COLOR=red><A NAME="503_27">Men</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Menu</A>;
+                          <FONT COLOR=red><A NAME="504_27">Descr</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Position</A> := 0;
+                          <FONT COLOR=red><A NAME="505_27">Row</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_43"#2|</EM></FONT>
+   <b>procedure</b> Spacing (<FONT COLOR=red><A NAME="511_23">Men</A></FONT>   : <b>in</b> Menu;
+                      <FONT COLOR=red><A NAME="512_23">Descr</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Position</A>;
+                      <FONT COLOR=red><A NAME="513_23">Row</A></FONT>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_44"#2|</EM></FONT>
+   <b>function</b> Set_Pattern (<FONT COLOR=red><A NAME="523_26">Men</A></FONT>  : 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>--  #1A NAME="AFU_45"#2|</EM></FONT>
+   <b>procedure</b> Pattern (<FONT COLOR=red><A NAME="530_23">Men</A></FONT>  : <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>--  #1A NAME="AFU_46"#2|</EM></FONT>
+   <b>procedure</b> Set_Format (<FONT COLOR=red><A NAME="540_26">Men</A></FONT>     : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Menu</A>;
+                         <FONT COLOR=red><A NAME="541_26">Lines</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#64_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>--  #1A NAME="AFU_47"#2|</EM></FONT>
+   <b>procedure</b> Format (<FONT COLOR=red><A NAME="547_22">Men</A></FONT>     : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#62_12">Menu</A>;
+                     <FONT COLOR=red><A NAME="548_22">Lines</A></FONT>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_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>--  #1A NAME="AFU_48"#2|</EM></FONT>
+   <b>procedure</b> Set_Item_Init_Hook (<FONT COLOR=red><A NAME="561_34">Men</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_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>--  #1A NAME="AFU_49"#2|</EM></FONT>
+   <b>procedure</b> Set_Item_Term_Hook (<FONT COLOR=red><A NAME="567_34">Men</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_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>--  #1A NAME="AFU_50"#2|</EM></FONT>
+   <b>procedure</b> Set_Menu_Init_Hook (<FONT COLOR=red><A NAME="573_34">Men</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_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>--  #1A NAME="AFU_51"#2|</EM></FONT>
+   <b>procedure</b> Set_Menu_Term_Hook (<FONT COLOR=red><A NAME="579_34">Men</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_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>--  #1A NAME="AFU_52"#2|</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>--  #1A NAME="AFU_53"#2|</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>--  #1A NAME="AFU_54"#2|</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>--  #1A NAME="AFU_55"#2|</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>--  #1A NAME="AFU_56"#2|</EM></FONT>
+   <b>procedure</b> Redefine (<FONT COLOR=red><A NAME="609_24">Men</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#180_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 (<FONT COLOR=red><A NAME="614_25">Men</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#180_9">Menu</A>;
+                  <A HREF="terminal_interface-curses-menus__ads.htm#613_14"> </A>     Items : <b>in</b> Item_Array_Access) <b>renames</b> Redefine;
+   <b>pragma</b> Inline (Set_Items);
+
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_57"#2|</EM></FONT>
+   <b>function</b> Items (<FONT COLOR=red><A NAME="619_20">Men</A></FONT>   : 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>--  #1A NAME="AFU_58"#2|</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>--  #1A NAME="AFU_59"#2|</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>--  #1A NAME="AFU_60"#2|</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="650_27">Menu_Ok</A></FONT>,
+                          <FONT COLOR=red><A NAME="651_27">Request_Denied</A></FONT>,
+                          <FONT COLOR=red><A NAME="652_27">Unknown_Request</A></FONT>,
+                          No_Match);
+
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_61"#2|</EM></FONT>
+   <b>function</b> Driver (<FONT COLOR=red><A NAME="656_21">Men</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#67_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#57_9">Item</A>   <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+   <b>type</b> Menu   <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+
+   <A HREF="terminal_interface-curses-menus__ads.htm#63_4">Null_Item</A> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_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/doc/html/ada/terminal_interface-curses-mouse__adb.htm b/doc/html/ada/terminal_interface-curses-mouse__adb.htm
new file mode 100644 (file)
index 0000000..f6eeaee
--- /dev/null
@@ -0,0 +1,219 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-mouse.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-mouse.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 1996</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.16 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> System;
+
+<b>with</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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.<A HREF="terminal_interface-curses-mouse__ads.htm#47_35">Mouse</A><FONT COLOR=red><A NAME="47_40"></A></FONT> <b>is</b>
+
+   <b>use</b> <b>type</b> System.Bit_Order;
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+   <b>function</b> <A HREF="terminal_interface-curses-mouse__ads.htm#91_13">Has_Mouse</A><FONT COLOR=red><A NAME="52_13"></A></FONT> <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="54_16">Mouse_Avail</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-mouse__adb.htm#54_16">Mouse_Avail</A>, "_nc_has_mouse");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__ads.htm#737_13">Has_Key</A> (<A HREF="terminal_interface-curses__ads.htm#202_4">Key_Mouse</A>) <b>or</b> <b>else</b> <A HREF="terminal_interface-curses-mouse__adb.htm#54_16">Mouse_Avail</A> /= 0 <b>then</b>
+         <b>return</b> True;
+      <b>else</b>
+         <b>return</b> False;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Has_Mouse;
+
+   <b>function</b> <A HREF="terminal_interface-curses-mouse__ads.htm#124_13">Get_Mouse</A><FONT COLOR=red><A NAME="64_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#85_9">Mouse_Event</A>
+   <b>is</b>
+      <b>type</b> Event_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-mouse__ads.htm#85_9">Mouse_Event</A>;
+
+      <b>function</b> <FONT COLOR=red><A NAME="68_16">Getmouse</A></FONT> (Ev : Event_Access) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-mouse__adb.htm#68_16">Getmouse</A>, "getmouse");
+
+      <FONT COLOR=red><A NAME="71_7">Event</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-mouse__ads.htm#85_9">Mouse_Event</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#68_16">Getmouse</A> (<A HREF="terminal_interface-curses-mouse__adb.htm#71_7">Event</A>'<b>Access</b>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses-mouse__adb.htm#71_7">Event</A>;
+   <b>end</b> Get_Mouse;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-mouse__ads.htm#94_14">Register_Reportable_Event</A><FONT COLOR=red><A NAME="79_14"></A></FONT> (<A HREF="terminal_interface-curses-mouse__ads.htm#95_7">Button</A> : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Mouse_Button</A>;
+                                        <A HREF="terminal_interface-curses-mouse__ads.htm#96_7">State</A>  : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Button_State</A>;
+                                        <A HREF="terminal_interface-curses-mouse__ads.htm#97_7">Mask</A>   : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="83_7">Button_Nr</A></FONT> : <b>constant</b> Natural := <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Mouse_Button</A>'Pos (<A HREF="terminal_interface-curses-mouse__ads.htm#95_7">Button</A>);
+      <FONT COLOR=red><A NAME="84_7">State_Nr</A></FONT>  : <b>constant</b> Natural := <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Button_State</A>'Pos (<A HREF="terminal_interface-curses-mouse__ads.htm#96_7">State</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#95_7">Button</A> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#70_12">Modifier_Keys</A> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-mouse__ads.htm#96_7">State</A> /= <A HREF="terminal_interface-curses-mouse__ads.htm#73_26">Pressed</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>else</b>
+         <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#95_7">Button</A> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#69_12">Real_Buttons</A> <b>then</b>
+            <A HREF="terminal_interface-curses-mouse__ads.htm#97_7">Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#97_7">Mask</A> <b>or</b> ((2 ** (6 * <A HREF="terminal_interface-curses-mouse__adb.htm#83_7">Button_Nr</A>)) ** <A HREF="terminal_interface-curses-mouse__adb.htm#84_7">State_Nr</A>);
+         <b>else</b>
+            <A HREF="terminal_interface-curses-mouse__ads.htm#97_7">Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#97_7">Mask</A> <b>or</b> (<A HREF="terminal_interface-curses-mouse__ads.htm#206_4">BUTTON_CTRL</A> ** (<A HREF="terminal_interface-curses-mouse__adb.htm#83_7">Button_Nr</A> - 4));
+         <b>end</b> <b>if</b>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Register_Reportable_Event;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-mouse__ads.htm#103_14">Register_Reportable_Events</A><FONT COLOR=red><A NAME="97_14"></A></FONT> (<A HREF="terminal_interface-curses-mouse__ads.htm#104_7">Button</A> : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Mouse_Button</A>;
+                                         <A HREF="terminal_interface-curses-mouse__ads.htm#105_7">State</A>  : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#78_9">Button_States</A>;
+                                         <A HREF="terminal_interface-curses-mouse__ads.htm#106_7">Mask</A>   : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>)
+   <b>is</b>
+   <b>begin</b>
+      <b>for</b> <FONT COLOR=red><A NAME="102_11">S</A></FONT> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#78_9">Button_States</A>'<b>Range</b> <b>loop</b>
+         <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#105_7">State</A> (<A HREF="terminal_interface-curses-mouse__adb.htm#102_11">S</A>) <b>then</b>
+            <A HREF="terminal_interface-curses-mouse__ads.htm#94_14">Register_Reportable_Event</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#104_7">Button</A>, <A HREF="terminal_interface-curses-mouse__adb.htm#102_11">S</A>, <A HREF="terminal_interface-curses-mouse__ads.htm#106_7">Mask</A>);
+         <b>end</b> <b>if</b>;
+      <b>end</b> <b>loop</b>;
+   <b>end</b> Register_Reportable_Events;
+
+   <b>function</b> <A HREF="terminal_interface-curses-mouse__ads.htm#114_13">Start_Mouse</A><FONT COLOR=red><A NAME="109_13"></A></FONT> (<A HREF="terminal_interface-curses-mouse__ads.htm#114_26">Mask</A> : <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#59_4">All_Events</A>)
+                         <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="112_16">MMask</A></FONT> (<FONT COLOR=red><A NAME="112_23">M</A></FONT> : <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>;
+                      O : <b>access</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>) <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-mouse__adb.htm#112_16">MMask</A>, "mousemask");
+      <FONT COLOR=red><A NAME="115_7">R</A></FONT>   : <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>;
+      <FONT COLOR=red><A NAME="116_7">Old</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-mouse__adb.htm#115_7">R</A> := <A HREF="terminal_interface-curses-mouse__adb.htm#112_16">MMask</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#114_26">Mask</A>, <A HREF="terminal_interface-curses-mouse__adb.htm#116_7">Old</A>'<b>Access</b>);
+      <b>return</b> <A HREF="terminal_interface-curses-mouse__adb.htm#116_7">Old</A>;
+   <b>end</b> Start_Mouse;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-mouse__ads.htm#119_14">End_Mouse</A><FONT COLOR=red><A NAME="122_14"></A></FONT> (<A HREF="terminal_interface-curses-mouse__ads.htm#119_25">Mask</A> : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#58_4">No_Events</A>)
+   <b>is</b>
+   <b>begin</b>
+      <b>null</b>;
+   <b>end</b> End_Mouse;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-mouse__adb.htm#132_14">Dispatch_Event</A><FONT COLOR=red><A NAME="128_14"></A></FONT> (<FONT COLOR=red><A NAME="128_30">Mask</A></FONT>   : <b>in</b>  <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>;
+                             <FONT COLOR=red><A NAME="129_30">Button</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Mouse_Button</A>;
+                             <FONT COLOR=red><A NAME="130_30">State</A></FONT>  : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Button_State</A>);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-mouse__adb.htm#128_14">Dispatch_Event</A><FONT COLOR=red><A NAME="132_14"></A></FONT> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A>   : <b>in</b>  <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>;
+                             <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Mouse_Button</A>;
+                             <A HREF="terminal_interface-curses-mouse__adb.htm#130_30">State</A>  : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Button_State</A>) <b>is</b>
+      <FONT COLOR=red><A NAME="135_7">L</A></FONT> : <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#67_26">Alt</A>;  <FONT COLOR=green><EM>--  preset to non real button;</EM></FONT>
+      <b>if</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#210_4">BUTTON1_EVENTS</A>) /= 0 <b>then</b>
+         <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#61_26">Left</A>;
+      <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#211_4">BUTTON2_EVENTS</A>) /= 0 <b>then</b>
+         <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#62_26">Middle</A>;
+      <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#212_4">BUTTON3_EVENTS</A>) /= 0 <b>then</b>
+         <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#63_26">Right</A>;
+      <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#213_4">BUTTON4_EVENTS</A>) /= 0 <b>then</b>
+         <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#64_26">Button4</A>;
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#69_12">Real_Buttons</A> <b>then</b>
+         <A HREF="terminal_interface-curses-mouse__adb.htm#135_7">L</A> := 2 ** (6 * <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Mouse_Button</A>'Pos (<A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A>));
+         <b>for</b> <FONT COLOR=red><A NAME="149_14">I</A></FONT> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Button_State</A>'<b>Range</b> <b>loop</b>
+            <b>if</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__adb.htm#135_7">L</A>) /= 0 <b>then</b>
+               <A HREF="terminal_interface-curses-mouse__adb.htm#130_30">State</A> := <A HREF="terminal_interface-curses-mouse__adb.htm#149_14">I</A>;
+               <b>exit</b>;
+            <b>end</b> <b>if</b>;
+            <A HREF="terminal_interface-curses-mouse__adb.htm#135_7">L</A> := 2 * <A HREF="terminal_interface-curses-mouse__adb.htm#135_7">L</A>;
+         <b>end</b> <b>loop</b>;
+      <b>else</b>
+         <A HREF="terminal_interface-curses-mouse__adb.htm#130_30">State</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#73_26">Pressed</A>;
+         <b>if</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#206_4">BUTTON_CTRL</A>) /= 0 <b>then</b>
+            <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#65_26">Control</A>;
+         <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#207_4">BUTTON_SHIFT</A>) /= 0 <b>then</b>
+            <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#66_26">Shift</A>;
+         <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#208_4">BUTTON_ALT</A>) /= 0 <b>then</b>
+            <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#67_26">Alt</A>;
+         <b>end</b> <b>if</b>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Dispatch_Event;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-mouse__ads.htm#128_14">Get_Event</A><FONT COLOR=red><A NAME="168_14"></A></FONT> (<A HREF="terminal_interface-curses-mouse__ads.htm#128_25">Event</A>  : <b>in</b>  <A HREF="terminal_interface-curses-mouse__ads.htm#85_9">Mouse_Event</A>;
+                        <A HREF="terminal_interface-curses-mouse__ads.htm#129_25">Y</A>      : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+                        <A HREF="terminal_interface-curses-mouse__ads.htm#130_25">X</A>      : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+                        <A HREF="terminal_interface-curses-mouse__ads.htm#131_25">Button</A> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Mouse_Button</A>;
+                        <A HREF="terminal_interface-curses-mouse__ads.htm#132_25">State</A>  : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Button_State</A>)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="174_7">Mask</A></FONT>  : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#128_25">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#163_10">Bstate</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-mouse__ads.htm#130_25">X</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#128_25">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#161_10">X</A>);
+      <A HREF="terminal_interface-curses-mouse__ads.htm#129_25">Y</A> := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>   (<A HREF="terminal_interface-curses-mouse__ads.htm#128_25">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#161_13">Y</A>);
+      <A HREF="terminal_interface-curses-mouse__adb.htm#128_14">Dispatch_Event</A> (<A HREF="terminal_interface-curses-mouse__adb.htm#174_7">Mask</A>, <A HREF="terminal_interface-curses-mouse__ads.htm#131_25">Button</A>, <A HREF="terminal_interface-curses-mouse__ads.htm#132_25">State</A>);
+   <b>end</b> Get_Event;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-mouse__ads.htm#138_14">Unget_Mouse</A><FONT COLOR=red><A NAME="181_14"></A></FONT> (<A HREF="terminal_interface-curses-mouse__ads.htm#138_27">Event</A> : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#85_9">Mouse_Event</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="183_16">Ungetmouse</A></FONT> (<FONT COLOR=red><A NAME="183_28">Ev</A></FONT> : <A HREF="terminal_interface-curses-mouse__ads.htm#85_9">Mouse_Event</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-mouse__adb.htm#183_16">Ungetmouse</A>, "ungetmouse");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#183_16">Ungetmouse</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#138_27">Event</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Unget_Mouse;
+
+   <b>function</b> <A HREF="terminal_interface-curses-mouse__ads.htm#143_13">Enclosed_In_Window</A><FONT COLOR=red><A NAME="191_13"></A></FONT> (<A HREF="terminal_interface-curses-mouse__ads.htm#143_33">Win</A>    : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                                <A HREF="terminal_interface-curses-mouse__ads.htm#144_33">Event</A>  : <A HREF="terminal_interface-curses-mouse__ads.htm#85_9">Mouse_Event</A>) <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="194_16">Wenclose</A></FONT> (<FONT COLOR=red><A NAME="194_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="194_40">Y</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>; <FONT COLOR=red><A NAME="194_51">X</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>)
+                         <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-mouse__adb.htm#194_16">Wenclose</A>, "wenclose");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#194_16">Wenclose</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#143_33">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#144_33">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#161_13">Y</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#144_33">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#161_10">X</A>))
+        = <A HREF="terminal_interface-curses__ads.htm#1736_4">Curses_Bool_False</A> <b>then</b>
+         <b>return</b> False;
+      <b>else</b>
+         <b>return</b> True;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Enclosed_In_Window;
+
+   <b>function</b> <A HREF="terminal_interface-curses-mouse__ads.htm#150_13">Mouse_Interval</A><FONT COLOR=red><A NAME="206_13"></A></FONT> (<A HREF="terminal_interface-curses-mouse__ads.htm#150_29">Msec</A> : Natural := 200) <b>return</b> Natural
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="208_16">Mouseinterval</A></FONT> (<FONT COLOR=red><A NAME="208_31">Msec</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-mouse__adb.htm#208_16">Mouseinterval</A>, "mouseinterval");
+   <b>begin</b>
+      <b>return</b> Natural (<A HREF="terminal_interface-curses-mouse__adb.htm#208_16">Mouseinterval</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#150_29">Msec</A>)));
+   <b>end</b> Mouse_Interval;
+
+<b>end</b> Terminal_Interface.Curses.Mouse;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 72%
rename from Ada95/html/ada/terminal_interface-curses-mouse__ads.htm
rename to doc/html/ada/terminal_interface-curses-mouse__ads.htm
index 4ebdcd8c8de23748b05dd4b364abd95149aff241..bfd6fe9f880887c4676ddcb6099b2c2517381a67 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-mouse.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>--  @Revision: 1.19 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</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>
 <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>
+   <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>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_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);
+   All_Clicks : <b>constant</b> Button_States := (Clicked .. Triple_Clicked =&gt; True,
+   <FONT COLOR=red><A NAME="83_4"> </A></FONT>                     <A HREF="terminal_interface-curses-mouse__ads.htm#78_9"> </A>                 <b>others</b> =&gt; False);
+   All_States : <b>constant</b> Button_States := (<b>others</b> =&gt; 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>
+   <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>
+   <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="96_7">Button</A></FONT> : <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>
+   <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="105_7">Button</A></FONT> : <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>--  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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_1"#2|</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>
+   <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>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_2"#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>
+   <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>;
+   <b>procedure</b> Get_Event (<FONT COLOR=red><A NAME="129_25">Event</A></FONT>  : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#59_9">Mouse_Event</A>;
+                        <FONT COLOR=red><A NAME="130_25">Y</A></FONT>      : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+                        <FONT COLOR=red><A NAME="131_25">X</A></FONT>      : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Column_Position</A>;
+                        <FONT COLOR=red><A NAME="132_25">Button</A></FONT> : <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>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_3"#2|</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>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_4"#2|</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>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_5"#2|</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>
+   <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> 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) ..
+         Id      : Integer <b>range</b> Integer (<A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.short'First) ..
+         <FONT COLOR=red><A NAME="161_10"> </A></FONT>  <FONT COLOR=red><A NAME="161_13"> </A></FONT>  <FONT COLOR=red><A NAME="161_16"> </A></FONT>                 Integer (<A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.short'Last);
+         X, Y, Z : Integer <b>range</b> Integer (<A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int'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>;
          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>
+      <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=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#;
    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>;
+   <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#209_4">0</A>;
    All_Events : <b>constant</b> Event_Mask := ALL_MOUSE_EVENTS;
 
 <b>end</b> Terminal_Interface.Curses.Mouse;
diff --git a/doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm b/doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm
new file mode 100644 (file)
index 0000000..3e77b2e
--- /dev/null
@@ -0,0 +1,83 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-panels-user_data.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-panels-user_data.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>.C;
+<b>with</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-aux__ads.htm#50_35">Aux</A>;
+<b>use</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-aux__ads.htm#50_35">Aux</A>;
+<b>with</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-panels__ads.htm#43_35">Panels</A>;
+<b>use</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-panels__ads.htm#43_35">Panels</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Panels.<A HREF="terminal_interface-curses-panels-user_data__ads.htm#45_42">User_Data</A> <b>is</b>
+
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#53_14">Set_User_Data</A><FONT COLOR=red><A NAME="51_14"></A></FONT> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#53_29">Pan</A>  : <b>in</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+                            Data : <b>in</b> User_Access)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="54_16">Set_Panel_Userptr</A></FONT> (<FONT COLOR=red><A NAME="54_35">Pan</A></FONT>  : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+                                  Addr : User_Access) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels-user_data__adb.htm#54_16">Set_Panel_Userptr</A>, "set_panel_userptr");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-panels-user_data__adb.htm#54_16">Set_Panel_Userptr</A> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#53_29">Pan</A>, Data) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_User_Data;
+
+   <b>function</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#64_13">Get_User_Data</A><FONT COLOR=red><A NAME="63_13"></A></FONT> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#64_28">Pan</A>  : <b>in</b>  <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> User_Access
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="65_16">Panel_Userptr</A></FONT> (<FONT COLOR=red><A NAME="65_31">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> User_Access;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels-user_data__adb.htm#65_16">Panel_Userptr</A>, "panel_userptr");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-panels-user_data__adb.htm#65_16">Panel_Userptr</A> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#64_28">Pan</A>);
+   <b>end</b> Get_User_Data;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#59_14">Get_User_Data</A><FONT COLOR=red><A NAME="71_14"></A></FONT> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#59_29">Pan</A>  : <b>in</b>  <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+                            Data : <b>out</b> User_Access)
+   <b>is</b>
+   <b>begin</b>
+      Data := <A HREF="terminal_interface-curses-panels-user_data__ads.htm#64_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#59_29">Pan</A>);
+   <b>end</b> Get_User_Data;
+
+<b>end</b> Terminal_Interface.Curses.Panels.User_Data;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 80%
rename from Ada95/html/ada/terminal_interface-curses-panels-user_data__ads.htm
rename to doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm
index e5f370c4ee24f07290b79d61d1a8b9c3bc0d186e..27e8d5b290e898df143bef1bb014a3829e3d2fff 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-panels-user_data.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>--  @Revision: 1.12 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
 <FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
 
 <b>generic</b>
 <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>--  |=====================================================================</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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_1"#2|</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>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_2"#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>--  AKA: <A HREF="../man/panel.3x.html">panel_userptr</A></EM></FONT>
 
-  <FONT COLOR=green><EM>--  <A NAME="AFU_3">|</EM></FONT>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_3"#2|</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>
+   <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;
diff --git a/doc/html/ada/terminal_interface-curses-panels__adb.htm b/doc/html/ada/terminal_interface-curses-panels__adb.htm
new file mode 100644 (file)
index 0000000..e3dca5e
--- /dev/null
@@ -0,0 +1,169 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-panels.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-panels.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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="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-aux__ads.htm#50_35">Aux</A>; <b>use</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-aux__ads.htm#50_35">Aux</A>;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.<A HREF="terminal_interface-curses-panels__ads.htm#43_35">Panels</A><FONT COLOR=red><A NAME="44_40"></A></FONT> <b>is</b>
+
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+   <b>function</b> <A HREF="terminal_interface-curses-panels__ads.htm#66_13">Create</A><FONT COLOR=red><A NAME="48_13"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#66_21">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="50_16">Newpanel</A></FONT> (<FONT COLOR=red><A NAME="50_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#50_16">Newpanel</A>, "new_panel");
+
+      <FONT COLOR=red><A NAME="53_7">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-panels__adb.htm#53_7">Pan</A> := <A HREF="terminal_interface-curses-panels__adb.htm#50_16">Newpanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#66_21">Win</A>);
+      <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#53_7">Pan</A> = <A HREF="terminal_interface-curses-panels__ads.htm#53_4">Null_Panel</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses-panels__adb.htm#53_7">Pan</A>;
+   <b>end</b> Create;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-panels__ads.htm#76_14">Bottom</A><FONT COLOR=red><A NAME="62_14"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#76_22">Pan</A> : <b>in</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="64_16">Bottompanel</A></FONT> (<FONT COLOR=red><A NAME="64_29">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#64_16">Bottompanel</A>, "bottom_panel");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#64_16">Bottompanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#76_22">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Bottom;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-panels__ads.htm#81_14">Top</A><FONT COLOR=red><A NAME="72_14"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#81_19">Pan</A> : <b>in</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="74_16">Toppanel</A></FONT> (<FONT COLOR=red><A NAME="74_26">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#74_16">Toppanel</A>, "top_panel");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#74_16">Toppanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#81_19">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Top;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-panels__ads.htm#86_14">Show</A><FONT COLOR=red><A NAME="82_14"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#86_20">Pan</A> : <b>in</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="84_16">Showpanel</A></FONT> (<FONT COLOR=red><A NAME="84_27">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#84_16">Showpanel</A>, "show_panel");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#84_16">Showpanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#86_20">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Show;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-panels__ads.htm#96_14">Hide</A><FONT COLOR=red><A NAME="92_14"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#96_20">Pan</A> : <b>in</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="94_16">Hidepanel</A></FONT> (<FONT COLOR=red><A NAME="94_27">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#94_16">Hidepanel</A>, "hide_panel");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#94_16">Hidepanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#96_20">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Hide;
+
+   <b>function</b> <A HREF="terminal_interface-curses-panels__ads.htm#101_13">Get_Window</A><FONT COLOR=red><A NAME="102_13"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#101_25">Pan</A> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="104_16">Panel_Win</A></FONT> (<FONT COLOR=red><A NAME="104_27">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#104_16">Panel_Win</A>, "panel_window");
+
+      <FONT COLOR=red><A NAME="107_7">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses-panels__adb.htm#104_16">Panel_Win</A> (<A HREF="terminal_interface-curses-panels__ads.htm#101_25">Pan</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#107_7">Win</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses-panels__adb.htm#107_7">Win</A>;
+   <b>end</b> Get_Window;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-panels__ads.htm#110_14">Replace</A><FONT COLOR=red><A NAME="115_14"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#110_23">Pan</A> : <b>in</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+                      <A HREF="terminal_interface-curses-panels__ads.htm#111_23">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="118_16">Replace_Pan</A></FONT> (<FONT COLOR=red><A NAME="118_29">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+                            <FONT COLOR=red><A NAME="119_29">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#118_16">Replace_Pan</A>, "replace_panel");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#118_16">Replace_Pan</A> (<A HREF="terminal_interface-curses-panels__ads.htm#110_23">Pan</A>, <A HREF="terminal_interface-curses-panels__ads.htm#111_23">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Replace;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-panels__ads.htm#116_14">Move</A><FONT COLOR=red><A NAME="127_14"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#116_20">Pan</A>    : <b>in</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+                   <A HREF="terminal_interface-curses-panels__ads.htm#117_20">Line</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+                   <A HREF="terminal_interface-curses-panels__ads.htm#118_20">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="131_16">Move</A></FONT> (<FONT COLOR=red><A NAME="131_22">Pan</A></FONT>    : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+                     <FONT COLOR=red><A NAME="132_22">Line</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                     <FONT COLOR=red><A NAME="133_22">Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#131_16">Move</A>, "move_panel");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#131_16">Move</A> (<A HREF="terminal_interface-curses-panels__ads.htm#116_20">Pan</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-panels__ads.htm#117_20">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-panels__ads.htm#118_20">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Move;
+
+   <b>function</b> <A HREF="terminal_interface-curses-panels__ads.htm#123_13">Is_Hidden</A><FONT COLOR=red><A NAME="141_13"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#123_24">Pan</A> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="143_16">Panel_Hidden</A></FONT> (<FONT COLOR=red><A NAME="143_30">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#143_16">Panel_Hidden</A>, "panel_hidden");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#143_16">Panel_Hidden</A> (<A HREF="terminal_interface-curses-panels__ads.htm#123_24">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#75_4">Curses_False</A> <b>then</b>
+         <b>return</b> False;
+      <b>else</b>
+         <b>return</b> True;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Is_Hidden;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-panels__ads.htm#138_14">Delete</A><FONT COLOR=red><A NAME="153_14"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#138_22">Pan</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="155_16">Del_Panel</A></FONT> (<FONT COLOR=red><A NAME="155_27">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#155_16">Del_Panel</A>, "del_panel");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#155_16">Del_Panel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#138_22">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-panels__ads.htm#138_22">Pan</A> := <A HREF="terminal_interface-curses-panels__ads.htm#53_4">Null_Panel</A>;
+   <b>end</b> Delete;
+
+<b>end</b> Terminal_Interface.Curses.Panels;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 63%
rename from Ada95/html/ada/terminal_interface-curses-panels__ads.htm
rename to doc/html/ada/terminal_interface-curses-panels__ads.htm
index 2896c40117c464d8a0144aa5324b5479d8024ee2..5e5c6df969d5d050e407d071aabc3da3ac9fcd93 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-panels.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>--  @Revision: 1.15 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</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>
+   <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>
+   <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>--  |=====================================================================</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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_1"#2|</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>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_2"#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>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_3"#2|</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>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_4"#2|</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>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_5"#2|</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>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_6"#2|</EM></FONT>
    <b>procedure</b> Update_Panels;
-  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">update_panels()</A></EM></FONT>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_7"#2|</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>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_8"#2|</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>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_9"#2|</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>;
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_10"#2|</EM></FONT>
+   <b>procedure</b> Replace (<FONT COLOR=red><A NAME="111_23">Pan</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Panel</A>;
                       Win : <b>in</b> Window);
-  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">replace_panel()</A></EM></FONT>
+   <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>;
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_11"#2|</EM></FONT>
+   <b>procedure</b> Move (<FONT COLOR=red><A NAME="117_20">Pan</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Panel</A>;
+                   <FONT COLOR=red><A NAME="118_20">Line</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_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>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_12"#2|</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>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_13"#2|</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>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_14"#2|</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>
+   <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>
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_15"#2|</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>
+   <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>private</b>
       <b>type</b> Panel <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
       Null_Panel : <b>constant</b> Panel := 0;
 
diff --git a/doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm b/doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm
new file mode 100644 (file)
index 0000000..14797f8
--- /dev/null
@@ -0,0 +1,133 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-aux.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-aux.adb </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.Aux                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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> <b>body</b> Terminal_Interface.Curses.Text_IO.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A><FONT COLOR=red><A NAME="41_48"></A></FONT> <b>is</b>
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#47_14">Put_Buf</A><FONT COLOR=red><A NAME="43_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#48_7">Win</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A>    : <b>in</b> String;
+      <A HREF="terminal_interface-curses-text_io-aux__ads.htm#50_7">Width</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>;
+      <A HREF="terminal_interface-curses-text_io-aux__ads.htm#51_7">Signal</A> : <b>in</b> Boolean := True;
+      <A HREF="terminal_interface-curses-text_io-aux__ads.htm#52_7">Ljust</A>  : <b>in</b> Boolean := False)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="50_7">L</A></FONT>   : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>;
+      <FONT COLOR=red><A NAME="51_7">Len</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>;
+      <FONT COLOR=red><A NAME="52_7">W</A></FONT>   : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-aux__ads.htm#50_7">Width</A>;
+      <FONT COLOR=red><A NAME="53_7">LC</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+      <FONT COLOR=red><A NAME="54_7">CC</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+      <FONT COLOR=red><A NAME="55_7">Y</A></FONT>   : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="56_7">X</A></FONT>   : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+
+      <b>procedure</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#60_17">Output</A><FONT COLOR=red><A NAME="58_17"></A></FONT> (<FONT COLOR=red><A NAME="58_25">From</A></FONT>, <FONT COLOR=red><A NAME="58_31">To</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>);
+
+      <b>procedure</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#58_17">Output</A><FONT COLOR=red><A NAME="60_17"></A></FONT> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#58_25">From</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#58_31">To</A> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>)
+      <b>is</b>
+      <b>begin</b>
+         <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A> &gt; 0 <b>then</b>
+            <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#52_7">W</A> = 0 <b>then</b>
+               <A HREF="terminal_interface-curses-text_io-aux__adb.htm#52_7">W</A> := <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A>;
+            <b>end</b> <b>if</b>;
+            <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A> &gt; <A HREF="terminal_interface-curses-text_io-aux__adb.htm#52_7">W</A> <b>then</b>
+               <FONT COLOR=green><EM>--  LRM A10.6 (7) says this</EM></FONT>
+               <A HREF="terminal_interface-curses-text_io-aux__adb.htm#52_7">W</A> := <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A>;
+            <b>end</b> <b>if</b>;
+
+            <b>pragma</b> Assert (Len &lt;= W);
+            <A HREF="terminal_interface-curses__ads.htm#1157_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#48_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#53_7">LC</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#54_7">CC</A>);
+            <b>if</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A>) &gt; <A HREF="terminal_interface-curses-text_io-aux__adb.htm#54_7">CC</A> <b>then</b>
+               <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#51_7">Signal</A> <b>then</b>
+                  <b>raise</b> <A HREF="terminal_interface-curses-text_io__ads.htm#134_4">Layout_Error</A>;
+               <b>else</b>
+                  <b>return</b>;
+               <b>end</b> <b>if</b>;
+            <b>else</b>
+               <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A> &lt; <A HREF="terminal_interface-curses-text_io-aux__adb.htm#52_7">W</A> <b>and</b> <b>then</b> <b>not</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#52_7">Ljust</A> <b>then</b>
+                  <b>declare</b>
+                     <FONT COLOR=red><A NAME="83_22">Filler</A></FONT> : <b>constant</b> String (1 .. (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#52_7">W</A> - <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A>))
+                       := (<b>others</b> =&gt; ' ');
+                  <b>begin</b>
+                     <A HREF="terminal_interface-curses-text_io__ads.htm#116_14">Put</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#48_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#83_22">Filler</A>);
+                  <b>end</b>;
+               <b>end</b> <b>if</b>;
+               <A HREF="terminal_interface-curses__ads.htm#1173_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#48_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#55_7">Y</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#56_7">X</A>);
+               <b>if</b> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#56_7">X</A> + <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A>)) &gt; <A HREF="terminal_interface-curses-text_io-aux__adb.htm#54_7">CC</A> <b>then</b>
+                  <A HREF="terminal_interface-curses-text_io__ads.htm#87_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#48_7">Win</A>);
+               <b>end</b> <b>if</b>;
+               <A HREF="terminal_interface-curses-text_io__ads.htm#116_14">Put</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#48_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#58_25">From</A> .. <A HREF="terminal_interface-curses-text_io-aux__adb.htm#58_31">To</A>));
+               <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A> &lt; <A HREF="terminal_interface-curses-text_io-aux__adb.htm#52_7">W</A> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#52_7">Ljust</A> <b>then</b>
+                  <b>declare</b>
+                     <FONT COLOR=red><A NAME="96_22">Filler</A></FONT> : <b>constant</b> String (1 .. (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#52_7">W</A> - <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A>))
+                       := (<b>others</b> =&gt; ' ');
+                  <b>begin</b>
+                     <A HREF="terminal_interface-curses-text_io__ads.htm#116_14">Put</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#48_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#96_22">Filler</A>);
+                  <b>end</b>;
+               <b>end</b> <b>if</b>;
+            <b>end</b> <b>if</b>;
+         <b>end</b> <b>if</b>;
+      <b>end</b> Output;
+
+   <b>begin</b>
+      <b>pragma</b> Assert (Win /= Null_Window);
+      <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#52_7">Ljust</A> <b>then</b>
+         <A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A> := 1;
+         <b>for</b> <FONT COLOR=red><A NAME="110_14">I</A></FONT> <b>in</b> 1 .. <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A>'Length <b>loop</b>
+            <b>exit</b> <b>when</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A>) = ' ';
+            <A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A> := <A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A> + 1;
+         <b>end</b> <b>loop</b>;
+         <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A> := <A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A> - 1;
+         <A HREF="terminal_interface-curses-text_io-aux__adb.htm#58_17">Output</A> (1, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A>);
+      <b>else</b>  <FONT COLOR=green><EM>-- input buffer is not left justified</EM></FONT>
+         <A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A> := <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A>'Length;
+         <b>for</b> <FONT COLOR=red><A NAME="118_14">I</A></FONT> <b>in</b> 1 .. <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A>'Length <b>loop</b>
+            <b>exit</b> <b>when</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A>) = ' ';
+            <A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A> := <A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A> - 1;
+         <b>end</b> <b>loop</b>;
+         <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A> := <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A>'Length - <A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A>;
+         <A HREF="terminal_interface-curses-text_io-aux__adb.htm#58_17">Output</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A> + 1, <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A>'Length);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Put_Buf;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Aux;
+
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm b/doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm
new file mode 100644 (file)
index 0000000..32e2e74
--- /dev/null
@@ -0,0 +1,60 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-aux.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-aux.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.Aux                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>private</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>.<A HREF="terminal_interface-curses-text_io-aux__adb.htm#41_48">Aux</A><FONT COLOR=red><A NAME="41_51"></A></FONT> <b>is</b>
+   <FONT COLOR=green><EM>--  pragma Preelaborate (Aux);</EM></FONT>
+
+   <FONT COLOR=green><EM>--  This routine is called from the Text_IO output routines for numeric</EM></FONT>
+   <FONT COLOR=green><EM>--  and enumeration types.</EM></FONT>
+   <FONT COLOR=green><EM>--</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#43_14">Put_Buf</A><FONT COLOR=red><A NAME="47_14"></A></FONT>
+     (<FONT COLOR=red><A NAME="48_7">Win</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;               <FONT COLOR=green><EM>-- The output window</EM></FONT>
+      <FONT COLOR=red><A NAME="49_7">Buf</A></FONT>    : <b>in</b> String;               <FONT COLOR=green><EM>-- The buffer containing the text</EM></FONT>
+      <FONT COLOR=red><A NAME="50_7">Width</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>;                <FONT COLOR=green><EM>-- The width of the output field</EM></FONT>
+      <FONT COLOR=red><A NAME="51_7">Signal</A></FONT> : <b>in</b> Boolean := True;      <FONT COLOR=green><EM>-- If true, we raise Layout_Error</EM></FONT>
+      <FONT COLOR=red><A NAME="52_7">Ljust</A></FONT>  : <b>in</b> Boolean := False);    <FONT COLOR=green><EM>-- The Buf is left justified</EM></FONT>
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Aux;
+
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm b/doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm
new file mode 100644 (file)
index 0000000..67b5976
--- /dev/null
@@ -0,0 +1,78 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-complex_io.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-complex_io.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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="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>.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#44_43">Float_IO</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Text_IO.<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#46_43">Complex_IO</A> <b>is</b>
+
+   <b>package</b> <FONT COLOR=red><A NAME="45_12">FIO</A></FONT> <b>is</b> <b>new</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>.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#44_43">Float_IO</A> (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#44_17">Complex_Types</A>.Real'Base);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#54_14">Put</A><FONT COLOR=red><A NAME="48_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#55_7">Win</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#56_7">Item</A> : <b>in</b> Complex;
+      <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#57_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#50_4">Default_Fore</A>;
+      <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#58_7">Aft</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#51_4">Default_Aft</A>;
+      <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#59_7">Exp</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#52_4">Default_Exp</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#54_14">Put</A> (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#55_7">Win</A>, '(');
+      <A HREF="terminal_interface-curses-text_io-complex_io__adb.htm#45_12">FIO</A>.Put (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#55_7">Win</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#56_7">Item</A>.Re, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#57_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#58_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#59_7">Exp</A>);
+      <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#54_14">Put</A> (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#55_7">Win</A>, ',');
+      <A HREF="terminal_interface-curses-text_io-complex_io__adb.htm#45_12">FIO</A>.Put (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#55_7">Win</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#56_7">Item</A>.Im, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#57_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#58_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#59_7">Exp</A>);
+      <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#54_14">Put</A> (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#55_7">Win</A>, ')');
+   <b>end</b> Put;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#61_14">Put</A><FONT COLOR=red><A NAME="63_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#62_7">Item</A> : <b>in</b> Complex;
+      <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#63_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#50_4">Default_Fore</A>;
+      <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#64_7">Aft</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#51_4">Default_Aft</A>;
+      <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#65_7">Exp</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#52_4">Default_Exp</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#61_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#62_7">Item</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#63_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#64_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#65_7">Exp</A>);
+   <b>end</b> Put;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Complex_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 69%
rename from Ada95/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm
rename to doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm
index 43ed85d60411016c179b101daedbc088b3295060..03753a83838ccdf80426ccf01fb3fa2792455f50 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-text_io-complex_io.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>with</b> Ada.Numerics.Generic_Complex_Types;
 
 <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>with</b> <b>package</b> <FONT COLOR=red><A NAME="44_17">Complex_Types</A></FONT> <b>is</b> <b>new</b> Ada.Numerics.Generic_Complex_Types (&lt;&gt;);
 
 <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;
+   <FONT COLOR=red><A NAME="50_4">Default_Fore</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 2;
+   <FONT COLOR=red><A NAME="51_4">Default_Aft</A></FONT>  : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Real'<b>Digits</b> - 1;
+   <FONT COLOR=red><A NAME="52_4">Default_Exp</A></FONT>  : <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);
+     (<FONT COLOR=red><A NAME="55_7">Win</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <FONT COLOR=red><A NAME="56_7">Item</A></FONT> : <b>in</b> Complex;
+      <FONT COLOR=red><A NAME="57_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#50_4">Default_Fore</A>;
+      <FONT COLOR=red><A NAME="58_7">Aft</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#51_4">Default_Aft</A>;
+      <FONT COLOR=red><A NAME="59_7">Exp</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#52_4">Default_Exp</A>);
 
    <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);
+     (<FONT COLOR=red><A NAME="62_7">Item</A></FONT> : <b>in</b> Complex;
+      <FONT COLOR=red><A NAME="63_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#50_4">Default_Fore</A>;
+      <FONT COLOR=red><A NAME="64_7">Aft</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#51_4">Default_Aft</A>;
+      <FONT COLOR=red><A NAME="65_7">Exp</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#52_4">Default_Exp</A>);
 
 <b>private</b>
    <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#61_14">Put</A>);
diff --git a/doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm b/doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm
new file mode 100644 (file)
index 0000000..e458ec2
--- /dev/null
@@ -0,0 +1,80 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-decimal_io.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-decimal_io.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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> Ada.Text_IO;
+<b>with</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>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Text_IO.<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#44_43">Decimal_IO</A> <b>is</b>
+
+   <b>package</b> <FONT COLOR=red><A NAME="46_12">Aux</A></FONT> <b>renames</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>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+   <b>package</b> <FONT COLOR=red><A NAME="47_12">DIO</A></FONT> <b>is</b> <b>new</b> Ada.Text_IO.Decimal_IO (<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#50_14">Put</A><FONT COLOR=red><A NAME="49_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#51_7">Win</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#52_7">Item</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>;
+      <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#53_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#46_4">Default_Fore</A>;
+      <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#54_7">Aft</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#47_4">Default_Aft</A>;
+      <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#55_7">Exp</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#48_4">Default_Exp</A>)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="56_7">Buf</A></FONT> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>'Last);
+      <FONT COLOR=red><A NAME="57_7">Len</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#53_7">Fore</A> + 1 + <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#54_7">Aft</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#55_7">Exp</A> &gt; 0 <b>then</b>
+         <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#57_7">Len</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#57_7">Len</A> + 1 + <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#55_7">Exp</A>;
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#47_12">DIO</A>.Put (<A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#52_7">Item</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#54_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#55_7">Exp</A>);
+      <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#46_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#47_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#51_7">Win</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#57_7">Len</A>, False);
+   <b>end</b> Put;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#57_14">Put</A><FONT COLOR=red><A NAME="66_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#58_7">Item</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>;
+      <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#59_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#46_4">Default_Fore</A>;
+      <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#60_7">Aft</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#47_4">Default_Aft</A>;
+      <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#61_7">Exp</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#48_4">Default_Exp</A>) <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#57_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#58_7">Item</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#59_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#60_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#61_7">Exp</A>);
+   <b>end</b> Put;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Decimal_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 66%
rename from Ada95/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm
rename to doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm
index 1092bcf29242f0a566a9dcfa41c608b41332ff7f..ee9138e956e2353339ea5953024ef6a8f64c8b0b 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-text_io-decimal_io.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>delta</b> &lt;&gt; <b>digits</b> &lt;&gt;;
 
 <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;
+   <FONT COLOR=red><A NAME="46_4">Default_Fore</A></FONT> : <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;
+   <FONT COLOR=red><A NAME="47_4">Default_Aft</A></FONT>  : <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;
+   <FONT COLOR=red><A NAME="48_4">Default_Exp</A></FONT>  : <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);
+     (<FONT COLOR=red><A NAME="51_7">Win</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <FONT COLOR=red><A NAME="52_7">Item</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>;
+      <FONT COLOR=red><A NAME="53_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#46_4">Default_Fore</A>;
+      <FONT COLOR=red><A NAME="54_7">Aft</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#47_4">Default_Aft</A>;
+      <FONT COLOR=red><A NAME="55_7">Exp</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#48_4">Default_Exp</A>);
 
    <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);
+     (<FONT COLOR=red><A NAME="58_7">Item</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>;
+      <FONT COLOR=red><A NAME="59_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#46_4">Default_Fore</A>;
+      <FONT COLOR=red><A NAME="60_7">Aft</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#47_4">Default_Aft</A>;
+      <FONT COLOR=red><A NAME="61_7">Exp</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#48_4">Default_Exp</A>);
 
 <b>private</b>
    <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#57_14">Put</A>);
diff --git a/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm b/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm
new file mode 100644 (file)
index 0000000..14d2332
--- /dev/null
@@ -0,0 +1,85 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-enumeration_io.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-enumeration_io.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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> Ada.Text_IO;
+<b>with</b> Ada.Characters.Handling; <b>use</b> Ada.Characters.Handling;
+<b>with</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>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Text_IO.<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#44_43">Enumeration_IO</A> <b>is</b>
+
+   <b>package</b> <FONT COLOR=red><A NAME="47_12">Aux</A></FONT> <b>renames</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>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+   <b>package</b> <FONT COLOR=red><A NAME="48_12">EIO</A></FONT> <b>is</b> <b>new</b> Ada.Text_IO.Enumeration_IO (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#42_9">Enum</A>);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#49_14">Put</A><FONT COLOR=red><A NAME="50_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#50_7">Win</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#51_7">Item</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#42_9">Enum</A>;
+      <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#52_7">Width</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#46_4">Default_Width</A>;
+      <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#53_7">Set</A>   : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#47_4">Default_Setting</A>)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="56_7">Buf</A></FONT>  : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>'Last);
+      <FONT COLOR=red><A NAME="57_7">Tset</A></FONT> : Ada.Text_IO.Type_Set;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#53_7">Set</A> /= <A HREF="terminal_interface-curses-text_io__ads.htm#53_46">Mixed_Case</A> <b>then</b>
+         <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#57_7">Tset</A> := Ada.Text_IO.Type_Set'Val (<A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A>'Pos (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#53_7">Set</A>));
+      <b>else</b>
+         <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#57_7">Tset</A> := Ada.Text_IO.Lower_Case;
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#48_12">EIO</A>.Put (<A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#51_7">Item</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#57_7">Tset</A>);
+      <b>if</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#53_7">Set</A> = <A HREF="terminal_interface-curses-text_io__ads.htm#53_46">Mixed_Case</A> <b>then</b>
+         <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#56_7">Buf</A> (<A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#56_7">Buf</A>'First) := To_Upper (<A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#56_7">Buf</A> (<A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#56_7">Buf</A>'First));
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#47_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#47_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#50_7">Win</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#52_7">Width</A>, True, True);
+   <b>end</b> Put;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#55_14">Put</A><FONT COLOR=red><A NAME="71_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#56_7">Item</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#42_9">Enum</A>;
+      <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#57_7">Width</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#46_4">Default_Width</A>;
+      <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#58_7">Set</A>   : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#47_4">Default_Setting</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#55_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#56_7">Item</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#57_7">Width</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#58_7">Set</A>);
+   <b>end</b> Put;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Enumeration_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 73%
rename from Ada95/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm
rename to doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm
index 7bb5955f5b419b4574ae724f173e2ad362185a89..8bb95d8c6741dbe72c440876e6199c3133f6fb57 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-text_io-enumeration_io.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>type</b> <FONT COLOR=red><A NAME="42_9">Enum</A></FONT> <b>is</b> (&lt;&gt;);
 
 <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>;
+   <FONT COLOR=red><A NAME="46_4">Default_Width</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 0;
+   <FONT COLOR=red><A NAME="47_4">Default_Setting</A></FONT> : <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);
+     (<FONT COLOR=red><A NAME="50_7">Win</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <FONT COLOR=red><A NAME="51_7">Item</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#42_9">Enum</A>;
+      <FONT COLOR=red><A NAME="52_7">Width</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#46_4">Default_Width</A>;
+      <FONT COLOR=red><A NAME="53_7">Set</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#47_4">Default_Setting</A>);
 
    <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);
+     (<FONT COLOR=red><A NAME="56_7">Item</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#42_9">Enum</A>;
+      <FONT COLOR=red><A NAME="57_7">Width</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#46_4">Default_Width</A>;
+      <FONT COLOR=red><A NAME="58_7">Set</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#47_4">Default_Setting</A>);
 
 <b>private</b>
    <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#55_14">Put</A>);
diff --git a/doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm b/doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm
new file mode 100644 (file)
index 0000000..7e81c22
--- /dev/null
@@ -0,0 +1,80 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-fixed_io.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-fixed_io.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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> Ada.Text_IO;
+<b>with</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>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Text_IO.<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#44_43">Fixed_IO</A> <b>is</b>
+
+   <b>package</b> <FONT COLOR=red><A NAME="46_12">Aux</A></FONT> <b>renames</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>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+   <b>package</b> <FONT COLOR=red><A NAME="47_12">FIXIO</A></FONT> <b>is</b> <b>new</b> Ada.Text_IO.Fixed_IO (<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#50_14">Put</A><FONT COLOR=red><A NAME="49_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#51_7">Win</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#52_7">Item</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>;
+      <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#53_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#46_4">Default_Fore</A>;
+      <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#54_7">Aft</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#47_4">Default_Aft</A>;
+      <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#55_7">Exp</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#48_4">Default_Exp</A>)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="56_7">Buf</A></FONT> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>'Last);
+      <FONT COLOR=red><A NAME="57_7">Len</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#53_7">Fore</A> + 1 + <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#54_7">Aft</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#55_7">Exp</A> &gt; 0 <b>then</b>
+         <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#57_7">Len</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#57_7">Len</A> + 1 + <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#55_7">Exp</A>;
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#47_12">FIXIO</A>.Put (<A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#52_7">Item</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#54_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#55_7">Exp</A>);
+      <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#46_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#47_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#51_7">Win</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#57_7">Len</A>, False);
+   <b>end</b> Put;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#57_14">Put</A><FONT COLOR=red><A NAME="66_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#58_7">Item</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>;
+      <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#59_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#46_4">Default_Fore</A>;
+      <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#60_7">Aft</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#47_4">Default_Aft</A>;
+      <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#61_7">Exp</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#48_4">Default_Exp</A>) <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#57_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#58_7">Item</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#59_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#60_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#61_7">Exp</A>);
+   <b>end</b> Put;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Fixed_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 67%
rename from Ada95/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm
rename to doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm
index 550a3ffe7aa40787e929d1b5a07cad5b73535745..f5ac1251cf23bb408b36397c04a15c3a800c9b0e 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-text_io-fixed_io.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>delta</b> &lt;&gt;;
 
 <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;
+   <FONT COLOR=red><A NAME="46_4">Default_Fore</A></FONT> : <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;
+   <FONT COLOR=red><A NAME="47_4">Default_Aft</A></FONT>  : <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;
+   <FONT COLOR=red><A NAME="48_4">Default_Exp</A></FONT>  : <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);
+     (<FONT COLOR=red><A NAME="51_7">Win</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <FONT COLOR=red><A NAME="52_7">Item</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>;
+      <FONT COLOR=red><A NAME="53_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#46_4">Default_Fore</A>;
+      <FONT COLOR=red><A NAME="54_7">Aft</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#47_4">Default_Aft</A>;
+      <FONT COLOR=red><A NAME="55_7">Exp</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#48_4">Default_Exp</A>);
 
    <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);
+     (<FONT COLOR=red><A NAME="58_7">Item</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>;
+      <FONT COLOR=red><A NAME="59_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#46_4">Default_Fore</A>;
+      <FONT COLOR=red><A NAME="60_7">Aft</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#47_4">Default_Aft</A>;
+      <FONT COLOR=red><A NAME="61_7">Exp</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#48_4">Default_Exp</A>);
 
 <b>private</b>
    <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#57_14">Put</A>);
diff --git a/doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm b/doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm
new file mode 100644 (file)
index 0000000..d344cec
--- /dev/null
@@ -0,0 +1,81 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-float_io.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-float_io.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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> Ada.Text_IO;
+<b>with</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>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Text_IO.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#44_43">Float_IO</A> <b>is</b>
+
+   <b>package</b> <FONT COLOR=red><A NAME="46_12">Aux</A></FONT> <b>renames</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>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+   <b>package</b> <FONT COLOR=red><A NAME="47_12">FIO</A></FONT> <b>is</b> <b>new</b> Ada.Text_IO.Float_IO (<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#50_14">Put</A><FONT COLOR=red><A NAME="49_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#51_7">Win</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#52_7">Item</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>;
+      <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#53_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#46_4">Default_Fore</A>;
+      <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#54_7">Aft</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#47_4">Default_Aft</A>;
+      <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#55_7">Exp</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#48_4">Default_Exp</A>)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="56_7">Buf</A></FONT> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>'Last);
+      <FONT COLOR=red><A NAME="57_7">Len</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#53_7">Fore</A> + 1 + <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#54_7">Aft</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#55_7">Exp</A> &gt; 0 <b>then</b>
+         <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#57_7">Len</A> := <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#57_7">Len</A> + 1 + <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#55_7">Exp</A>;
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#47_12">FIO</A>.Put (<A HREF="terminal_interface-curses-text_io-float_io__adb.htm#56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#52_7">Item</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#54_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#55_7">Exp</A>);
+      <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#46_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#47_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#51_7">Win</A>, <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#57_7">Len</A>, False);
+   <b>end</b> Put;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#57_14">Put</A><FONT COLOR=red><A NAME="66_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#58_7">Item</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>;
+      <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#59_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#46_4">Default_Fore</A>;
+      <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#60_7">Aft</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#47_4">Default_Aft</A>;
+      <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#61_7">Exp</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#48_4">Default_Exp</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#57_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#58_7">Item</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#59_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#60_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#61_7">Exp</A>);
+   <b>end</b> Put;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Float_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 67%
rename from Ada95/html/ada/terminal_interface-curses-text_io-float_io__ads.htm
rename to doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm
index e6e7e215aaba46bc0bd6de66ea303718860b0e0f..3e5a7f091415dd966e8c7288b85217d4cdf7fad5 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-text_io-float_io.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>digits</b> &lt;&gt;;
 
 <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;
+   <FONT COLOR=red><A NAME="46_4">Default_Fore</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 2;
+   <FONT COLOR=red><A NAME="47_4">Default_Aft</A></FONT>  : <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;
+   <FONT COLOR=red><A NAME="48_4">Default_Exp</A></FONT>  : <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);
+     (<FONT COLOR=red><A NAME="51_7">Win</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <FONT COLOR=red><A NAME="52_7">Item</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>;
+      <FONT COLOR=red><A NAME="53_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#46_4">Default_Fore</A>;
+      <FONT COLOR=red><A NAME="54_7">Aft</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#47_4">Default_Aft</A>;
+      <FONT COLOR=red><A NAME="55_7">Exp</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#48_4">Default_Exp</A>);
 
    <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);
+     (<FONT COLOR=red><A NAME="58_7">Item</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>;
+      <FONT COLOR=red><A NAME="59_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#46_4">Default_Fore</A>;
+      <FONT COLOR=red><A NAME="60_7">Aft</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#47_4">Default_Aft</A>;
+      <FONT COLOR=red><A NAME="61_7">Exp</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#48_4">Default_Exp</A>);
 
 <b>private</b>
    <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#57_14">Put</A>);
diff --git a/doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm b/doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm
new file mode 100644 (file)
index 0000000..0264fa5
--- /dev/null
@@ -0,0 +1,75 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-integer_io.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-integer_io.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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> Ada.Text_IO;
+<b>with</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>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Text_IO.<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#44_43">Integer_IO</A> <b>is</b>
+
+   <b>package</b> <FONT COLOR=red><A NAME="46_12">Aux</A></FONT> <b>renames</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>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+   <b>package</b> <FONT COLOR=red><A NAME="47_12">IIO</A></FONT> <b>is</b> <b>new</b> Ada.Text_IO.Integer_IO (<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#49_14">Put</A><FONT COLOR=red><A NAME="49_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#50_7">Win</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#51_7">Item</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>;
+      <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#52_7">Width</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#46_4">Default_Width</A>;
+      <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#53_7">Base</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#47_4">Default_Base</A>)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="55_7">Buf</A></FONT> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>'Last);
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io-integer_io__adb.htm#47_12">IIO</A>.Put (<A HREF="terminal_interface-curses-text_io-integer_io__adb.htm#55_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#51_7">Item</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#53_7">Base</A>);
+      <A HREF="terminal_interface-curses-text_io-integer_io__adb.htm#46_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#47_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#50_7">Win</A>, <A HREF="terminal_interface-curses-text_io-integer_io__adb.htm#55_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#52_7">Width</A>);
+   <b>end</b> Put;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#55_14">Put</A><FONT COLOR=red><A NAME="61_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#56_7">Item</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>;
+      <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#57_7">Width</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#46_4">Default_Width</A>;
+      <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#58_7">Base</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#47_4">Default_Base</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#55_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#56_7">Item</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#57_7">Width</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#58_7">Base</A>);
+   <b>end</b> Put;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Integer_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 73%
rename from Ada95/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm
rename to doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm
index 4d92767540536a5eee1ecd381398c0c1961af974..9816bd2eff2da9bef8d51ccdeb382d92e0115606 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-text_io-integer_io.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>range</b> &lt;&gt;;
 
 <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;
+   <FONT COLOR=red><A NAME="46_4">Default_Width</A></FONT> : <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;
+   <FONT COLOR=red><A NAME="47_4">Default_Base</A></FONT>  : <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);
+     (<FONT COLOR=red><A NAME="50_7">Win</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <FONT COLOR=red><A NAME="51_7">Item</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>;
+      <FONT COLOR=red><A NAME="52_7">Width</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#46_4">Default_Width</A>;
+      <FONT COLOR=red><A NAME="53_7">Base</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#47_4">Default_Base</A>);
 
    <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);
+     (<FONT COLOR=red><A NAME="56_7">Item</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>;
+      <FONT COLOR=red><A NAME="57_7">Width</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#46_4">Default_Width</A>;
+      <FONT COLOR=red><A NAME="58_7">Base</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#47_4">Default_Base</A>);
 
 <b>private</b>
    <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#55_14">Put</A>);
diff --git a/doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm b/doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm
new file mode 100644 (file)
index 0000000..a2535eb
--- /dev/null
@@ -0,0 +1,75 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-modular_io.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-modular_io.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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> Ada.Text_IO;
+<b>with</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>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Text_IO.<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#44_43">Modular_IO</A> <b>is</b>
+
+   <b>package</b> <FONT COLOR=red><A NAME="46_12">Aux</A></FONT> <b>renames</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>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+   <b>package</b> <FONT COLOR=red><A NAME="47_12">MIO</A></FONT> <b>is</b> <b>new</b> Ada.Text_IO.Modular_IO (<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#49_14">Put</A><FONT COLOR=red><A NAME="49_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#50_7">Win</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#51_7">Item</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>;
+      <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#52_7">Width</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#46_4">Default_Width</A>;
+      <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#53_7">Base</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#47_4">Default_Base</A>)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="55_7">Buf</A></FONT> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>'Last);
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io-modular_io__adb.htm#47_12">MIO</A>.Put (<A HREF="terminal_interface-curses-text_io-modular_io__adb.htm#55_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#51_7">Item</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#53_7">Base</A>);
+      <A HREF="terminal_interface-curses-text_io-modular_io__adb.htm#46_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#47_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#50_7">Win</A>, <A HREF="terminal_interface-curses-text_io-modular_io__adb.htm#55_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#52_7">Width</A>);
+   <b>end</b> Put;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#55_14">Put</A><FONT COLOR=red><A NAME="61_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#56_7">Item</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>;
+      <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#57_7">Width</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#46_4">Default_Width</A>;
+      <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#58_7">Base</A>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#47_4">Default_Base</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#55_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#56_7">Item</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#57_7">Width</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#58_7">Base</A>);
+   <b>end</b> Put;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Modular_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 73%
rename from Ada95/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm
rename to doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm
index b652c1bccc5dde5b6aab7d75e7aab38775c5cfc2..84bc5eae17249920c36fd10f1fd1a838ba9e9230 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-text_io-modular_io.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>mod</b> &lt;&gt;;
 
 <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;
+   <FONT COLOR=red><A NAME="46_4">Default_Width</A></FONT> : <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;
+   <FONT COLOR=red><A NAME="47_4">Default_Base</A></FONT>  : <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);
+     (<FONT COLOR=red><A NAME="50_7">Win</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <FONT COLOR=red><A NAME="51_7">Item</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>;
+      <FONT COLOR=red><A NAME="52_7">Width</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#46_4">Default_Width</A>;
+      <FONT COLOR=red><A NAME="53_7">Base</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#47_4">Default_Base</A>);
 
    <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);
+     (<FONT COLOR=red><A NAME="56_7">Item</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>;
+      <FONT COLOR=red><A NAME="57_7">Width</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#46_4">Default_Width</A>;
+      <FONT COLOR=red><A NAME="58_7">Base</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#47_4">Default_Base</A>);
 
 <b>private</b>
    <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#55_14">Put</A>);
diff --git a/doc/html/ada/terminal_interface-curses-text_io__adb.htm b/doc/html/ada/terminal_interface-curses-text_io__adb.htm
new file mode 100644 (file)
index 0000000..b1fe06a
--- /dev/null
@@ -0,0 +1,341 @@
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>package</b> <b>body</b> Terminal_Interface.Curses.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A><FONT COLOR=red><A NAME="41_40"></A></FONT> <b>is</b>
+
+   <FONT COLOR=red><A NAME="43_4">Default_Window</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A>;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#59_14">Set_Window</A><FONT COLOR=red><A NAME="45_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#59_26">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io__adb.htm#43_4">Default_Window</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#59_26">Win</A>;
+   <b>end</b> Set_Window;
+
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A><FONT COLOR=red><A NAME="51_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+   <b>is</b>
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#43_4">Default_Window</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+         <b>return</b> <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <b>else</b>
+         <b>return</b> <A HREF="terminal_interface-curses-text_io__adb.htm#43_4">Default_Window</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Get_Window;
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#65_14">Flush</A><FONT COLOR=red><A NAME="62_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#65_21">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#1212_14">Refresh</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#65_21">Win</A>);
+   <b>end</b> Flush;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#66_14">Flush</A><FONT COLOR=red><A NAME="68_14"></A></FONT>
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io__ads.htm#66_14">Flush</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>);
+   <b>end</b> Flush;
+
+   <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__ads.htm#77_13">Line_Length</A><FONT COLOR=red><A NAME="83_13"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#77_26">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>
+   <b>is</b>
+      <FONT COLOR=red><A NAME="85_7">N_Lines</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+      <FONT COLOR=red><A NAME="86_7">N_Cols</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#1157_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#77_26">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#85_7">N_Lines</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#86_7">N_Cols</A>);
+      <b>if</b> Natural (<A HREF="terminal_interface-curses-text_io__adb.htm#86_7">N_Cols</A>) &gt; Natural (<A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>'Last) <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-text_io__ads.htm#134_4">Layout_Error</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#86_7">N_Cols</A>);
+   <b>end</b> Line_Length;
+
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#78_13">Line_Length</A><FONT COLOR=red><A NAME="95_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>
+   <b>is</b>
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#78_13">Line_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>);
+   <b>end</b> Line_Length;
+
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#80_13">Page_Length</A><FONT COLOR=red><A NAME="101_13"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#80_26">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>
+   <b>is</b>
+      <FONT COLOR=red><A NAME="103_7">N_Lines</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+      <FONT COLOR=red><A NAME="104_7">N_Cols</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__ads.htm#967_13">Scrolling_Allowed</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#80_26">Win</A>) <b>then</b>
+         <b>return</b> 0;
+      <b>else</b>
+         <A HREF="terminal_interface-curses__ads.htm#1157_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#80_26">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#103_7">N_Lines</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#104_7">N_Cols</A>);
+         <b>if</b> Natural (<A HREF="terminal_interface-curses-text_io__adb.htm#103_7">N_Lines</A>) &gt; Natural (<A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>'Last) <b>then</b>
+            <b>raise</b> <A HREF="terminal_interface-curses-text_io__ads.htm#134_4">Layout_Error</A>;
+         <b>end</b> <b>if</b>;
+         <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#103_7">N_Lines</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Page_Length;
+
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#81_13">Page_Length</A><FONT COLOR=red><A NAME="117_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>
+   <b>is</b>
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#81_13">Page_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>);
+   <b>end</b> Page_Length;
+
+   <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__ads.htm#86_14">New_Line</A><FONT COLOR=red><A NAME="126_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#86_24">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <A HREF="terminal_interface-curses-text_io__ads.htm#86_41">Spacing</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> := 1)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="128_7">P_Size</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#81_13">Page_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#86_24">Win</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-text_io__ads.htm#86_41">Spacing</A> <b>not</b> <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> <b>then</b>
+         <b>raise</b> Constraint_Error;
+      <b>end</b> <b>if</b>;
+
+      <b>for</b> <FONT COLOR=red><A NAME="134_11">I</A></FONT> <b>in</b> 1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#86_41">Spacing</A> <b>loop</b>
+         <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#128_7">P_Size</A> &gt; 0 <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-text_io__ads.htm#102_13">Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#86_24">Win</A>) &gt;= <A HREF="terminal_interface-curses-text_io__adb.htm#128_7">P_Size</A> <b>then</b>
+            <A HREF="terminal_interface-curses-text_io__ads.htm#90_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#86_24">Win</A>);
+         <b>else</b>
+            <A HREF="terminal_interface-curses__ads.htm#665_14">Add</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#86_24">Win</A>, Ascii.LF);
+         <b>end</b> <b>if</b>;
+      <b>end</b> <b>loop</b>;
+   <b>end</b> New_Line;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#87_14">New_Line</A><FONT COLOR=red><A NAME="143_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#87_24">Spacing</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> := 1)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io__ads.htm#87_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#87_24">Spacing</A>);
+   <b>end</b> New_Line;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#89_14">New_Page</A><FONT COLOR=red><A NAME="149_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#89_24">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#1022_14">Clear</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#89_24">Win</A>);
+   <b>end</b> New_Page;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#90_14">New_Page</A><FONT COLOR=red><A NAME="155_14"></A></FONT>
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io__ads.htm#90_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>);
+   <b>end</b> New_Page;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#92_14">Set_Col</A><FONT COLOR=red><A NAME="161_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#92_23">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;  <A HREF="terminal_interface-curses-text_io__ads.htm#92_41">To</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="163_7">Y</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="164_7">X1</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <FONT COLOR=red><A NAME="165_7">X2</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <FONT COLOR=red><A NAME="166_7">N</A></FONT>  : Natural;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-text_io__ads.htm#92_41">To</A> <b>not</b> <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> <b>then</b>
+         <b>raise</b> Constraint_Error;
+      <b>end</b> <b>if</b>;
+
+      <A HREF="terminal_interface-curses__ads.htm#1173_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#92_23">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#163_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#164_7">X1</A>);
+      <A HREF="terminal_interface-curses-text_io__adb.htm#166_7">N</A>  := Natural (<A HREF="terminal_interface-curses-text_io__ads.htm#92_41">To</A>); <A HREF="terminal_interface-curses-text_io__adb.htm#166_7">N</A> := <A HREF="terminal_interface-curses-text_io__adb.htm#166_7">N</A> - 1;
+      <A HREF="terminal_interface-curses-text_io__adb.htm#165_7">X2</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#166_7">N</A>);
+      <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#164_7">X1</A> &gt; <A HREF="terminal_interface-curses-text_io__adb.htm#165_7">X2</A> <b>then</b>
+         <A HREF="terminal_interface-curses-text_io__ads.htm#87_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#92_23">Win</A>, 1);
+         <A HREF="terminal_interface-curses-text_io__adb.htm#164_7">X1</A> := 0;
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#164_7">X1</A> &lt; <A HREF="terminal_interface-curses-text_io__adb.htm#165_7">X2</A> <b>then</b>
+         <b>declare</b>
+            <FONT COLOR=red><A NAME="181_13">Filler</A></FONT> : <b>constant</b> String (Integer (<A HREF="terminal_interface-curses-text_io__adb.htm#164_7">X1</A>) .. (Integer (<A HREF="terminal_interface-curses-text_io__adb.htm#165_7">X2</A>) - 1))
+              := (<b>others</b> =&gt; ' ');
+         <b>begin</b>
+            <A HREF="terminal_interface-curses-text_io__ads.htm#116_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#92_23">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#181_13">Filler</A>);
+         <b>end</b>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Col;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#93_14">Set_Col</A><FONT COLOR=red><A NAME="189_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#93_23">To</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io__ads.htm#93_14">Set_Col</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#93_23">To</A>);
+   <b>end</b> Set_Col;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#95_14">Set_Line</A><FONT COLOR=red><A NAME="195_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#95_24">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <A HREF="terminal_interface-curses-text_io__ads.htm#95_41">To</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="197_7">Y1</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="198_7">Y2</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="199_7">X</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <FONT COLOR=red><A NAME="200_7">N</A></FONT>  : Natural;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-text_io__ads.htm#95_41">To</A> <b>not</b> <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> <b>then</b>
+         <b>raise</b> Constraint_Error;
+      <b>end</b> <b>if</b>;
+
+      <A HREF="terminal_interface-curses__ads.htm#1173_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#95_24">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#197_7">Y1</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#199_7">X</A>);
+      <A HREF="terminal_interface-curses-text_io__adb.htm#200_7">N</A>  := Natural (<A HREF="terminal_interface-curses-text_io__ads.htm#95_41">To</A>); <A HREF="terminal_interface-curses-text_io__adb.htm#200_7">N</A> := <A HREF="terminal_interface-curses-text_io__adb.htm#200_7">N</A> - 1;
+      <A HREF="terminal_interface-curses-text_io__adb.htm#198_7">Y2</A> := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#200_7">N</A>);
+      <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#198_7">Y2</A> &lt; <A HREF="terminal_interface-curses-text_io__adb.htm#197_7">Y1</A> <b>then</b>
+         <A HREF="terminal_interface-curses-text_io__ads.htm#90_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#95_24">Win</A>);
+         <A HREF="terminal_interface-curses-text_io__adb.htm#197_7">Y1</A> := 0;
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#197_7">Y1</A> &lt; <A HREF="terminal_interface-curses-text_io__adb.htm#198_7">Y2</A> <b>then</b>
+         <A HREF="terminal_interface-curses-text_io__ads.htm#87_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#95_24">Win</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#198_7">Y2</A> - <A HREF="terminal_interface-curses-text_io__adb.htm#197_7">Y1</A>));
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Line;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#96_14">Set_Line</A><FONT COLOR=red><A NAME="218_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#96_24">To</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io__ads.htm#96_14">Set_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#96_24">To</A>);
+   <b>end</b> Set_Line;
+
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#98_13">Col</A><FONT COLOR=red><A NAME="224_13"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#98_18">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>
+   <b>is</b>
+      <FONT COLOR=red><A NAME="226_7">Y</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="227_7">X</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <FONT COLOR=red><A NAME="228_7">N</A></FONT> : Natural;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#1173_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#98_18">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#226_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#227_7">X</A>);
+      <A HREF="terminal_interface-curses-text_io__adb.htm#228_7">N</A> := Natural (<A HREF="terminal_interface-curses-text_io__adb.htm#227_7">X</A>); <A HREF="terminal_interface-curses-text_io__adb.htm#228_7">N</A> := <A HREF="terminal_interface-curses-text_io__adb.htm#228_7">N</A> + 1;
+      <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#228_7">N</A> &gt; Natural (<A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>'Last) <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-text_io__ads.htm#134_4">Layout_Error</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#228_7">N</A>);
+   <b>end</b> Col;
+
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#99_13">Col</A><FONT COLOR=red><A NAME="238_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>
+   <b>is</b>
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#99_13">Col</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>);
+   <b>end</b> Col;
+
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#101_13">Line</A><FONT COLOR=red><A NAME="244_13"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#101_19">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>
+   <b>is</b>
+      <FONT COLOR=red><A NAME="246_7">Y</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="247_7">X</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <FONT COLOR=red><A NAME="248_7">N</A></FONT> : Natural;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#1173_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#101_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#246_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#247_7">X</A>);
+      <A HREF="terminal_interface-curses-text_io__adb.htm#248_7">N</A> := Natural (<A HREF="terminal_interface-curses-text_io__adb.htm#246_7">Y</A>); <A HREF="terminal_interface-curses-text_io__adb.htm#248_7">N</A> := <A HREF="terminal_interface-curses-text_io__adb.htm#248_7">N</A> + 1;
+      <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#248_7">N</A> &gt; Natural (<A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>'Last) <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses-text_io__ads.htm#134_4">Layout_Error</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#248_7">N</A>);
+   <b>end</b> Line;
+
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#102_13">Line</A><FONT COLOR=red><A NAME="258_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>
+   <b>is</b>
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#102_13">Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>);
+   <b>end</b> Line;
+
+   <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__ads.htm#108_14">Put</A><FONT COLOR=red><A NAME="268_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#108_19">Win</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <A HREF="terminal_interface-curses-text_io__ads.htm#108_37">Item</A> : <b>in</b> Character)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="270_7">P_Size</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#81_13">Page_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#108_19">Win</A>);
+      <FONT COLOR=red><A NAME="271_7">Y</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="272_7">X</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <FONT COLOR=red><A NAME="273_7">L</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+      <FONT COLOR=red><A NAME="274_7">C</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#270_7">P_Size</A> &gt; 0 <b>then</b>
+         <A HREF="terminal_interface-curses__ads.htm#1173_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#108_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#271_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#272_7">X</A>);
+         <A HREF="terminal_interface-curses__ads.htm#1157_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#108_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#273_7">L</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#274_7">C</A>);
+         <b>if</b> (<A HREF="terminal_interface-curses-text_io__adb.htm#271_7">Y</A> + 1) = <A HREF="terminal_interface-curses-text_io__adb.htm#273_7">L</A> <b>and</b> <b>then</b> (<A HREF="terminal_interface-curses-text_io__adb.htm#272_7">X</A> + 1) = <A HREF="terminal_interface-curses-text_io__adb.htm#274_7">C</A> <b>then</b>
+            <A HREF="terminal_interface-curses-text_io__ads.htm#90_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#108_19">Win</A>);
+         <b>end</b> <b>if</b>;
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses__ads.htm#665_14">Add</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#108_19">Win</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#108_37">Item</A>);
+   <b>end</b> Put;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#109_14">Put</A><FONT COLOR=red><A NAME="286_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#109_19">Item</A> : <b>in</b> Character)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io__ads.htm#109_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#109_19">Item</A>);
+   <b>end</b> Put;
+
+   <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__ads.htm#115_14">Put</A><FONT COLOR=red><A NAME="296_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#115_19">Win</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <A HREF="terminal_interface-curses-text_io__ads.htm#115_37">Item</A> : <b>in</b> String)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="298_7">P_Size</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#81_13">Page_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#115_19">Win</A>);
+      <FONT COLOR=red><A NAME="299_7">Y</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="300_7">X</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <FONT COLOR=red><A NAME="301_7">L</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+      <FONT COLOR=red><A NAME="302_7">C</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#298_7">P_Size</A> &gt; 0 <b>then</b>
+         <A HREF="terminal_interface-curses__ads.htm#1173_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#115_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#299_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#300_7">X</A>);
+         <A HREF="terminal_interface-curses__ads.htm#1157_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#115_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#301_7">L</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#302_7">C</A>);
+         <b>if</b> (<A HREF="terminal_interface-curses-text_io__adb.htm#299_7">Y</A> + 1) = <A HREF="terminal_interface-curses-text_io__adb.htm#301_7">L</A> <b>and</b> <b>then</b> (<A HREF="terminal_interface-curses-text_io__adb.htm#300_7">X</A> + 1 + <A HREF="terminal_interface-curses-text_io__ads.htm#115_37">Item</A>'Length) &gt;= <A HREF="terminal_interface-curses-text_io__adb.htm#302_7">C</A> <b>then</b>
+            <A HREF="terminal_interface-curses-text_io__ads.htm#90_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#115_19">Win</A>);
+         <b>end</b> <b>if</b>;
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses__ads.htm#665_14">Add</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#115_19">Win</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#115_37">Item</A>);
+   <b>end</b> Put;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#116_14">Put</A><FONT COLOR=red><A NAME="314_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#116_19">Item</A> : <b>in</b> String)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io__ads.htm#116_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#116_19">Item</A>);
+   <b>end</b> Put;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#118_14">Put_Line</A><FONT COLOR=red><A NAME="320_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io__ads.htm#119_7">Win</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses-text_io__ads.htm#120_7">Item</A> : <b>in</b> String)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io__ads.htm#116_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#119_7">Win</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#120_7">Item</A>);
+      <A HREF="terminal_interface-curses-text_io__ads.htm#87_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#119_7">Win</A>, 1);
+   <b>end</b> Put_Line;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#122_14">Put_Line</A><FONT COLOR=red><A NAME="329_14"></A></FONT>
+     (<A HREF="terminal_interface-curses-text_io__ads.htm#123_7">Item</A> : <b>in</b> String)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-text_io__ads.htm#122_14">Put_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#123_7">Item</A>);
+   <b>end</b> Put_Line;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 65%
rename from Ada95/html/ada/terminal_interface-curses-text_io__ads.htm
rename to doc/html/ada/terminal_interface-curses-text_io__ads.htm
index 6e6d96302c2e4cbb4fc3edb2002607b5c72e7479..4e19b4bca177b8a2d67ddf46bfc9c6da4e24fdb7 100644 (file)
@@ -1,4 +1,4 @@
-<HEAD><TITLE>terminal_interface-curses-text_io.ads</TITLE></HEAD>
+<HTML><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>-- 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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 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>with</b> Ada.Text_IO;
+<b>with</b> Ada.IO_Exceptions;
 
 <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>use</b> <b>type</b> Ada.Text_IO.Count;
+   <b>subtype</b> <FONT COLOR=red><A NAME="47_12">Count</A></FONT> <b>is</b> Ada.Text_IO.Count;
    <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="50_12">Field</A></FONT> <b>is</b> Ada.Text_IO.Field;
    <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>
+   <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>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#56_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>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#56_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#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#56_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>--------------------------------------------</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>
+   <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#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#56_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#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#56_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);
+   <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#56_9">Window</A>; <FONT COLOR=red><A NAME="86_41">Spacing</A></FONT> : <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> (<FONT COLOR=red><A NAME="87_24">Spacing</A></FONT> : <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#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#56_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#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#56_9">Window</A>;  <FONT COLOR=red><A NAME="92_41">To</A></FONT> : <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> (<FONT COLOR=red><A NAME="93_23">To</A></FONT> : <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>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#56_9">Window</A>; <FONT COLOR=red><A NAME="95_41">To</A></FONT> : <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> (<FONT COLOR=red><A NAME="96_24">To</A></FONT> : <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#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#56_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#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#56_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>
+   <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);
+   <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#56_9">Window</A>; <FONT COLOR=red><A NAME="108_37">Item</A></FONT> : <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> (<FONT COLOR=red><A NAME="109_19">Item</A></FONT> : <b>in</b> Character);
 
-  <FONT COLOR=green><EM>--------------------</EM></FONT>
-  <FONT COLOR=green><EM>-- Strings-Output --</EM></FONT>
-  <FONT COLOR=green><EM>--------------------</EM></FONT>
+   <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#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#56_9">Window</A>; <FONT COLOR=red><A NAME="115_37">Item</A></FONT> : <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> (<FONT COLOR=red><A NAME="116_19">Item</A></FONT> : <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);
+     (<FONT COLOR=red><A NAME="119_7">Win</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <FONT COLOR=red><A NAME="120_7">Item</A></FONT> : <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>;
+     (<FONT COLOR=red><A NAME="123_7">Item</A></FONT> : <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> Ada.IO_Exceptions.Status_Error;
+   <FONT COLOR=red><A NAME="128_4">Mode_Error</A></FONT>   : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Mode_Error;
+   <FONT COLOR=red><A NAME="129_4">Name_Error</A></FONT>   : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Name_Error;
+   <FONT COLOR=red><A NAME="130_4">Use_Error</A></FONT>    : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Use_Error;
+   <FONT COLOR=red><A NAME="131_4">Device_Error</A></FONT> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Device_Error;
+   <FONT COLOR=red><A NAME="132_4">End_Error</A></FONT>    : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.End_Error;
+   <FONT COLOR=red><A NAME="133_4">Data_Error</A></FONT>   : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Data_Error;
+   <FONT COLOR=red><A NAME="134_4">Layout_Error</A></FONT> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Layout_Error;
 
 <b>end</b> Terminal_Interface.Curses.Text_IO;
 </PRE></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/terminal_interface-curses__adb.htm b/doc/html/ada/terminal_interface-curses__adb.htm
new file mode 100644 (file)
index 0000000..145e2a3
--- /dev/null
@@ -0,0 +1,2419 @@
+<HTML><HEAD><TITLE>terminal_interface-curses.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses.adb </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>--                                 B O D Y                                  --</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: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 1996</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.25 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> System;
+
+<b>with</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-aux__ads.htm#50_35">Aux</A>;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;                  <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings;          <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Pointers;
+<b>with</b> Ada.Characters.Handling;       <b>use</b> Ada.Characters.Handling;
+<b>with</b> Ada.Strings.Fixed;
+<b>with</b> Ada.Unchecked_Conversion;
+
+<b>package</b> <b>body</b> Terminal_Interface.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A><FONT COLOR=red><A NAME="51_33"></A></FONT> <b>is</b>
+
+   <b>use</b> <A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+   <b>use</b> <b>type</b> System.Bit_Order;
+
+   <b>package</b> <FONT COLOR=red><A NAME="56_12">ASF</A></FONT> <b>renames</b> Ada.Strings.Fixed;
+
+   <b>type</b> <FONT COLOR=red><A NAME="58_9">chtype_array</A></FONT> <b>is</b> <b>array</b> (size_t <b>range</b> &lt;&gt;)
+      <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>;
+   <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses__adb.htm#58_9">chtype_array</A>);
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>generic</b>
+      <b>type</b> <FONT COLOR=red><A NAME="64_12">Element</A></FONT> <b>is</b> (&lt;&gt;);
+   <b>function</b> <FONT COLOR=red><A NAME="65_13">W_Get_Element</A></FONT> (<FONT COLOR=red><A NAME="65_28">Win</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                           <FONT COLOR=red><A NAME="66_28">Offset</A></FONT> : <b>in</b> Natural) <b>return</b> <A HREF="terminal_interface-curses__adb.htm#64_12">Element</A>;
+
+   <b>function</b> <A HREF="terminal_interface-curses__adb.htm#65_13">W_Get_Element</A> (<FONT COLOR=red><A NAME="68_28">Win</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                           <FONT COLOR=red><A NAME="69_28">Offset</A></FONT> : <b>in</b> Natural) <b>return</b> <A HREF="terminal_interface-curses__adb.htm#64_12">Element</A> <b>is</b>
+      <b>type</b> <FONT COLOR=red><A NAME="70_12">E_Array</A></FONT> <b>is</b> <b>array</b> (Natural <b>range</b> &lt;&gt;) <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses__adb.htm#64_12">Element</A>;
+      <b>package</b> <FONT COLOR=red><A NAME="71_15">C_E_Array</A></FONT> <b>is</b> <b>new</b>
+        <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Pointers (Natural, <A HREF="terminal_interface-curses__adb.htm#64_12">Element</A>, <A HREF="terminal_interface-curses__adb.htm#70_12">E_Array</A>, <A HREF="terminal_interface-curses__adb.htm#64_12">Element</A>'Val (0));
+      <b>use</b> <A HREF="terminal_interface-curses__adb.htm#71_15">C_E_Array</A>;
+
+      <b>function</b> <FONT COLOR=red><A NAME="75_16">To_Pointer</A></FONT> <b>is</b> <b>new</b>
+        Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>, Pointer);
+
+      P : Pointer := <A HREF="terminal_interface-curses__adb.htm#75_16">To_Pointer</A> (<A HREF="terminal_interface-curses__adb.htm#65_28">Win</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#65_28">Win</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>else</b>
+         P := P + ptrdiff_t (<A HREF="terminal_interface-curses__adb.htm#66_28">Offset</A>);
+         <b>return</b> P.<b>all</b>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> W_Get_Element;
+
+   <b>function</b> <FONT COLOR=red><A NAME="88_13">W_Get_Int</A></FONT>   <b>is</b> <b>new</b> <A HREF="terminal_interface-curses__adb.htm#65_13">W_Get_Element</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>);
+   <b>function</b> <FONT COLOR=red><A NAME="89_13">W_Get_Short</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses__adb.htm#65_13">W_Get_Element</A> (<A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>);
+   <b>function</b> <FONT COLOR=red><A NAME="90_13">W_Get_Byte</A></FONT>  <b>is</b> <b>new</b> <A HREF="terminal_interface-curses__adb.htm#65_13">W_Get_Element</A> (<A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.unsigned_char);
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1510_13">Key_Name</A><FONT COLOR=red><A NAME="93_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1510_23">Key</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#71_12">Real_Key_Code</A>) <b>return</b> String
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="95_16">Keyname</A></FONT> (<FONT COLOR=red><A NAME="95_25">K</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> chars_ptr;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#95_16">Keyname</A>, "keyname");
+
+      <FONT COLOR=red><A NAME="98_7">Ch</A></FONT> : Character;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__ads.htm#1510_23">Key</A> &lt;= Character'Pos (Character'Last) <b>then</b>
+         <A HREF="terminal_interface-curses__adb.htm#98_7">Ch</A> := Character'Val (<A HREF="terminal_interface-curses__ads.htm#1510_23">Key</A>);
+         <b>if</b> Is_Control (<A HREF="terminal_interface-curses__adb.htm#98_7">Ch</A>) <b>then</b>
+            <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1521_13">Un_Control</A> (<A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>'(Ch    =&gt; <A HREF="terminal_interface-curses__adb.htm#98_7">Ch</A>,
+                                                     Color =&gt; <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First,
+                                                     Attr  =&gt; <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>));
+         <b>elsif</b> Is_Graphic (<A HREF="terminal_interface-curses__adb.htm#98_7">Ch</A>) <b>then</b>
+            <b>declare</b>
+               <FONT COLOR=red><A NAME="108_16">S</A></FONT> : String (1 .. 1);
+            <b>begin</b>
+               <A HREF="terminal_interface-curses__adb.htm#108_16">S</A> (1) := <A HREF="terminal_interface-curses__adb.htm#98_7">Ch</A>;
+               <b>return</b> <A HREF="terminal_interface-curses__adb.htm#108_16">S</A>;
+            <b>end</b>;
+         <b>else</b>
+            <b>return</b> "";
+         <b>end</b> <b>if</b>;
+      <b>else</b>
+         <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#95_16">Keyname</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1510_23">Key</A>)));
+      <b>end</b> <b>if</b>;
+   <b>end</b> Key_Name;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1504_14">Key_Name</A><FONT COLOR=red><A NAME="121_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1504_24">Key</A>  : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#71_12">Real_Key_Code</A>;
+                       <A HREF="terminal_interface-curses__ads.htm#1505_24">Name</A> : <b>out</b> String)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__adb.htm#56_12">ASF</A>.Move (<A HREF="terminal_interface-curses__ads.htm#1510_13">Key_Name</A> (<A HREF="terminal_interface-curses__ads.htm#1504_24">Key</A>), <A HREF="terminal_interface-curses__ads.htm#1505_24">Name</A>);
+   <b>end</b> Key_Name;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#478_14">Init_Screen</A><FONT COLOR=red><A NAME="129_14"></A></FONT>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="131_16">Initscr</A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#131_16">Initscr</A>, "initscr");
+
+      <FONT COLOR=red><A NAME="134_7">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__adb.htm#134_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#131_16">Initscr</A>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#134_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Init_Screen;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#487_14">End_Windows</A><FONT COLOR=red><A NAME="142_14"></A></FONT>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="144_16">Endwin</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#144_16">Endwin</A>, "endwin");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#144_16">Endwin</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> End_Windows;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#494_13">Is_End_Window</A><FONT COLOR=red><A NAME="152_13"></A></FONT> <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="154_16">Isendwin</A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#154_16">Isendwin</A>, "isendwin");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#154_16">Isendwin</A> = <A HREF="terminal_interface-curses__ads.htm#1736_4">Curses_Bool_False</A> <b>then</b>
+         <b>return</b> False;
+      <b>else</b>
+         <b>return</b> True;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Is_End_Window;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#503_14">Move_Cursor</A><FONT COLOR=red><A NAME="164_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#503_27">Win</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                          <A HREF="terminal_interface-curses__ads.htm#504_27">Line</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+                          <A HREF="terminal_interface-curses__ads.htm#505_27">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="168_16">Wmove</A></FONT> (<FONT COLOR=red><A NAME="168_23">Win</A></FONT>    : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                      <FONT COLOR=red><A NAME="169_23">Line</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                      <FONT COLOR=red><A NAME="170_23">Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>
+                     ) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#168_16">Wmove</A>, "wmove");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#168_16">Wmove</A> (<A HREF="terminal_interface-curses__ads.htm#503_27">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#504_27">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#505_27">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Move_Cursor;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#514_14">Add</A><FONT COLOR=red><A NAME="179_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#514_19">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                  <A HREF="terminal_interface-curses__ads.htm#515_19">Ch</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="182_16">Waddch</A></FONT> (<FONT COLOR=red><A NAME="182_24">W</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                       <FONT COLOR=red><A NAME="183_24">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#182_16">Waddch</A>, "waddch");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#182_16">Waddch</A> (<A HREF="terminal_interface-curses__ads.htm#514_19">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#515_19">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Add;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#518_14">Add</A><FONT COLOR=red><A NAME="191_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#518_19">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                  <A HREF="terminal_interface-curses__ads.htm#519_19">Ch</A>  : <b>in</b> Character)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#518_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#518_19">Win</A>,
+           <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>'(Ch    =&gt; <A HREF="terminal_interface-curses__ads.htm#519_19">Ch</A>,
+                                 Color =&gt; <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First,
+                                 Attr  =&gt; <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>));
+   <b>end</b> Add;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#524_14">Add</A><FONT COLOR=red><A NAME="201_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#525_7">Win</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#526_7">Line</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#527_7">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#528_7">Ch</A>     : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="207_16">mvwaddch</A></FONT> (<FONT COLOR=red><A NAME="207_26">W</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                         <FONT COLOR=red><A NAME="208_26">Y</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                         <FONT COLOR=red><A NAME="209_26">X</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                         <FONT COLOR=red><A NAME="210_26">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#207_16">mvwaddch</A>, "mvwaddch");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#207_16">mvwaddch</A> (<A HREF="terminal_interface-curses__ads.htm#525_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#526_7">Line</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#527_7">Column</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#528_7">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Add;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#531_14">Add</A><FONT COLOR=red><A NAME="220_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#532_7">Win</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#533_7">Line</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#534_7">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#535_7">Ch</A>     : <b>in</b> Character)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#531_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#532_7">Win</A>,
+           <A HREF="terminal_interface-curses__ads.htm#533_7">Line</A>,
+           <A HREF="terminal_interface-curses__ads.htm#534_7">Column</A>,
+           <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>'(Ch    =&gt; <A HREF="terminal_interface-curses__ads.htm#535_7">Ch</A>,
+                                 Color =&gt; <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First,
+                                 Attr  =&gt; <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>));
+   <b>end</b> Add;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#540_14">Add_With_Immediate_Echo</A><FONT COLOR=red><A NAME="235_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#541_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#542_7">Ch</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="239_16">Wechochar</A></FONT> (<FONT COLOR=red><A NAME="239_27">W</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                          <FONT COLOR=red><A NAME="240_27">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#239_16">Wechochar</A>, "wechochar");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#239_16">Wechochar</A> (<A HREF="terminal_interface-curses__ads.htm#541_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#542_7">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Add_With_Immediate_Echo;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#545_14">Add_With_Immediate_Echo</A><FONT COLOR=red><A NAME="248_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#546_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#547_7">Ch</A>  : <b>in</b> Character)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#545_14">Add_With_Immediate_Echo</A>
+        (<A HREF="terminal_interface-curses__ads.htm#546_7">Win</A>,
+         <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>'(Ch    =&gt; <A HREF="terminal_interface-curses__ads.htm#547_7">Ch</A>,
+                               Color =&gt; <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First,
+                               Attr  =&gt; <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>));
+   <b>end</b> Add_With_Immediate_Echo;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#556_13">Create</A><FONT COLOR=red><A NAME="260_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#557_7">Number_Of_Lines</A>       : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+                    <A HREF="terminal_interface-curses__ads.htm#558_7">Number_Of_Columns</A>     : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+                    <A HREF="terminal_interface-curses__ads.htm#559_7">First_Line_Position</A>   : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+                    <A HREF="terminal_interface-curses__ads.htm#560_7">First_Column_Position</A> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="265_16">Newwin</A></FONT> (<FONT COLOR=red><A NAME="265_24">Number_Of_Lines</A></FONT>       : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                       <FONT COLOR=red><A NAME="266_24">Number_Of_Columns</A></FONT>     : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                       <FONT COLOR=red><A NAME="267_24">First_Line_Position</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                       <FONT COLOR=red><A NAME="268_24">First_Column_Position</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#265_16">Newwin</A>, "newwin");
+
+      <FONT COLOR=red><A NAME="271_7">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__adb.htm#271_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#265_16">Newwin</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#557_7">Number_Of_Lines</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#558_7">Number_Of_Columns</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#559_7">First_Line_Position</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#560_7">First_Column_Position</A>));
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#271_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses__adb.htm#271_7">W</A>;
+   <b>end</b> Create;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#573_14">Delete</A><FONT COLOR=red><A NAME="283_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#573_22">Win</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="285_16">Wdelwin</A></FONT> (<FONT COLOR=red><A NAME="285_25">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#285_16">Wdelwin</A>, "delwin");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#285_16">Wdelwin</A> (<A HREF="terminal_interface-curses__ads.htm#573_22">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses__ads.htm#573_22">Win</A> := <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A>;
+   <b>end</b> Delete;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#579_13">Sub_Window</A><FONT COLOR=red><A NAME="294_13"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#580_7">Win</A>                   : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#581_7">Number_Of_Lines</A>       : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+      <A HREF="terminal_interface-curses__ads.htm#582_7">Number_Of_Columns</A>     : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+      <A HREF="terminal_interface-curses__ads.htm#583_7">First_Line_Position</A>   : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#584_7">First_Column_Position</A> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="301_16">Subwin</A></FONT>
+        (<FONT COLOR=red><A NAME="302_10">Win</A></FONT>                   : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+         <FONT COLOR=red><A NAME="303_10">Number_Of_Lines</A></FONT>       : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="304_10">Number_Of_Columns</A></FONT>     : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="305_10">First_Line_Position</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="306_10">First_Column_Position</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#301_16">Subwin</A>, "subwin");
+
+      <FONT COLOR=red><A NAME="309_7">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__adb.htm#309_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#301_16">Subwin</A> (<A HREF="terminal_interface-curses__ads.htm#580_7">Win</A>,
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#581_7">Number_Of_Lines</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#582_7">Number_Of_Columns</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#583_7">First_Line_Position</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#584_7">First_Column_Position</A>));
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#309_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses__adb.htm#309_7">W</A>;
+   <b>end</b> Sub_Window;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#589_13">Derived_Window</A><FONT COLOR=red><A NAME="322_13"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#590_7">Win</A>                   : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#591_7">Number_Of_Lines</A>       : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+      <A HREF="terminal_interface-curses__ads.htm#592_7">Number_Of_Columns</A>     : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+      <A HREF="terminal_interface-curses__ads.htm#593_7">First_Line_Position</A>   : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#594_7">First_Column_Position</A> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="329_16">Derwin</A></FONT>
+        (<FONT COLOR=red><A NAME="330_10">Win</A></FONT>                   : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+         <FONT COLOR=red><A NAME="331_10">Number_Of_Lines</A></FONT>       : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="332_10">Number_Of_Columns</A></FONT>     : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="333_10">First_Line_Position</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="334_10">First_Column_Position</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#329_16">Derwin</A>, "derwin");
+
+      <FONT COLOR=red><A NAME="337_7">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__adb.htm#337_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#329_16">Derwin</A> (<A HREF="terminal_interface-curses__ads.htm#590_7">Win</A>,
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#591_7">Number_Of_Lines</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#592_7">Number_Of_Columns</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#593_7">First_Line_Position</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#594_7">First_Column_Position</A>));
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#337_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses__adb.htm#337_7">W</A>;
+   <b>end</b> Derived_Window;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#599_13">Duplicate</A><FONT COLOR=red><A NAME="350_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#599_24">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="352_16">Dupwin</A></FONT> (<FONT COLOR=red><A NAME="352_24">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#352_16">Dupwin</A>, "dupwin");
+
+      <FONT COLOR=red><A NAME="355_7">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__adb.htm#352_16">Dupwin</A> (<A HREF="terminal_interface-curses__ads.htm#599_24">Win</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#355_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses__adb.htm#355_7">W</A>;
+   <b>end</b> Duplicate;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#604_14">Move_Window</A><FONT COLOR=red><A NAME="363_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#604_27">Win</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                          <A HREF="terminal_interface-curses__ads.htm#605_27">Line</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+                          <A HREF="terminal_interface-curses__ads.htm#606_27">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="367_16">Mvwin</A></FONT> (<FONT COLOR=red><A NAME="367_23">Win</A></FONT>    : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                      <FONT COLOR=red><A NAME="368_23">Line</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                      <FONT COLOR=red><A NAME="369_23">Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#367_16">Mvwin</A>, "mvwin");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#367_16">Mvwin</A> (<A HREF="terminal_interface-curses__ads.htm#604_27">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#605_27">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#606_27">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Move_Window;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#611_14">Move_Derived_Window</A><FONT COLOR=red><A NAME="377_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#611_35">Win</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                                  <A HREF="terminal_interface-curses__ads.htm#612_35">Line</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+                                  <A HREF="terminal_interface-curses__ads.htm#613_35">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="381_16">Mvderwin</A></FONT> (<FONT COLOR=red><A NAME="381_26">Win</A></FONT>    : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                         <FONT COLOR=red><A NAME="382_26">Line</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                         <FONT COLOR=red><A NAME="383_26">Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#381_16">Mvderwin</A>, "mvderwin");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#381_16">Mvderwin</A> (<A HREF="terminal_interface-curses__ads.htm#611_35">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#612_35">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#613_35">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Move_Derived_Window;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#628_14">Set_Synch_Mode</A><FONT COLOR=red><A NAME="391_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#628_30">Win</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>  := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                             <A HREF="terminal_interface-curses__ads.htm#629_30">Mode</A> : <b>in</b> Boolean := False)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="394_16">Syncok</A></FONT> (<FONT COLOR=red><A NAME="394_24">Win</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                       <FONT COLOR=red><A NAME="395_24">Mode</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#394_16">Syncok</A>, "syncok");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#394_16">Syncok</A> (<A HREF="terminal_interface-curses__ads.htm#628_30">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#629_30">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Synch_Mode;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#638_14">Add</A><FONT COLOR=red><A NAME="403_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#638_19">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                  <A HREF="terminal_interface-curses__ads.htm#639_19">Str</A> : <b>in</b> String;
+                  <A HREF="terminal_interface-curses__ads.htm#640_19">Len</A> : <b>in</b> Integer := -1)
+   <b>is</b>
+      <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+      <b>function</b> <FONT COLOR=red><A NAME="408_16">Waddnstr</A></FONT> (<FONT COLOR=red><A NAME="408_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                         Str : Char_Ptr;
+                         <FONT COLOR=red><A NAME="410_26">Len</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := -1) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#408_16">Waddnstr</A>, "waddnstr");
+
+      <FONT COLOR=red><A NAME="413_7">Txt</A></FONT>    : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#639_19">Str</A>'Length);
+      <FONT COLOR=red><A NAME="414_7">Length</A></FONT> : size_t;
+   <b>begin</b>
+      To_C (<A HREF="terminal_interface-curses__ads.htm#639_19">Str</A>, <A HREF="terminal_interface-curses__adb.htm#413_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#414_7">Length</A>);
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#408_16">Waddnstr</A> (<A HREF="terminal_interface-curses__ads.htm#638_19">Win</A>, <A HREF="terminal_interface-curses__adb.htm#413_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#413_7">Txt</A>'First)'<b>Access</b>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#640_19">Len</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Add;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#645_14">Add</A><FONT COLOR=red><A NAME="422_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#645_19">Win</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#646_19">Line</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#647_19">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#648_19">Str</A>    : <b>in</b> String;
+      <A HREF="terminal_interface-curses__ads.htm#649_19">Len</A>    : <b>in</b> Integer := -1)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#503_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#645_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#646_19">Line</A>, <A HREF="terminal_interface-curses__ads.htm#647_19">Column</A>);
+      <A HREF="terminal_interface-curses__ads.htm#645_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#645_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#648_19">Str</A>, <A HREF="terminal_interface-curses__ads.htm#649_19">Len</A>);
+   <b>end</b> Add;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#658_14">Add</A><FONT COLOR=red><A NAME="434_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#658_19">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#659_19">Str</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#374_9">Attributed_String</A>;
+      <A HREF="terminal_interface-curses__ads.htm#660_19">Len</A> : <b>in</b> Integer := -1)
+   <b>is</b>
+      <b>type</b> Chtype_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>;
+      <b>function</b> <FONT COLOR=red><A NAME="440_16">Waddchnstr</A></FONT> (<FONT COLOR=red><A NAME="440_28">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                           Str : Chtype_Ptr;
+                           <FONT COLOR=red><A NAME="442_28">Len</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := -1) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#440_16">Waddchnstr</A>, "waddchnstr");
+
+      <FONT COLOR=red><A NAME="445_7">Txt</A></FONT> : <A HREF="terminal_interface-curses__adb.htm#58_9">chtype_array</A> (0 .. <A HREF="terminal_interface-curses__ads.htm#659_19">Str</A>'Length);
+   <b>begin</b>
+      <b>for</b> <FONT COLOR=red><A NAME="447_11">Length</A></FONT> <b>in</b> 1 .. size_t (<A HREF="terminal_interface-curses__ads.htm#659_19">Str</A>'Length) <b>loop</b>
+         <A HREF="terminal_interface-curses__adb.htm#445_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#447_11">Length</A> - 1) := <A HREF="terminal_interface-curses__ads.htm#659_19">Str</A> (Natural (<A HREF="terminal_interface-curses__adb.htm#447_11">Length</A>));
+      <b>end</b> <b>loop</b>;
+      <A HREF="terminal_interface-curses__adb.htm#445_7">Txt</A> (<A HREF="terminal_interface-curses__ads.htm#659_19">Str</A>'Length) := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#440_16">Waddchnstr</A> (<A HREF="terminal_interface-curses__ads.htm#658_19">Win</A>,
+                     <A HREF="terminal_interface-curses__adb.htm#445_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#445_7">Txt</A>'First)'<b>Access</b>,
+                     <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#660_19">Len</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Add;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#665_14">Add</A><FONT COLOR=red><A NAME="458_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#665_19">Win</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#666_19">Line</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#667_19">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#668_19">Str</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#374_9">Attributed_String</A>;
+      <A HREF="terminal_interface-curses__ads.htm#669_19">Len</A>    : <b>in</b> Integer := -1)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#503_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#665_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#666_19">Line</A>, <A HREF="terminal_interface-curses__ads.htm#667_19">Column</A>);
+      <A HREF="terminal_interface-curses__ads.htm#665_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#665_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#668_19">Str</A>, <A HREF="terminal_interface-curses__ads.htm#669_19">Len</A>);
+   <b>end</b> Add;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#679_14">Border</A><FONT COLOR=red><A NAME="470_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#680_7">Win</A>                       : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#681_7">Left_Side_Symbol</A>          : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      <A HREF="terminal_interface-curses__ads.htm#682_7">Right_Side_Symbol</A>         : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      <A HREF="terminal_interface-curses__ads.htm#683_7">Top_Side_Symbol</A>           : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      <A HREF="terminal_interface-curses__ads.htm#684_7">Bottom_Side_Symbol</A>        : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      <A HREF="terminal_interface-curses__ads.htm#685_7">Upper_Left_Corner_Symbol</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      <A HREF="terminal_interface-curses__ads.htm#686_7">Upper_Right_Corner_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      <A HREF="terminal_interface-curses__ads.htm#687_7">Lower_Left_Corner_Symbol</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      <A HREF="terminal_interface-curses__ads.htm#688_7">Lower_Right_Corner_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="481_16">Wborder</A></FONT> (<FONT COLOR=red><A NAME="481_25">W</A></FONT>   : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                        <FONT COLOR=red><A NAME="482_25">LS</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+                        <FONT COLOR=red><A NAME="483_25">RS</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+                        <FONT COLOR=red><A NAME="484_25">TS</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+                        <FONT COLOR=red><A NAME="485_25">BS</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+                        <FONT COLOR=red><A NAME="486_25">ULC</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+                        <FONT COLOR=red><A NAME="487_25">URC</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+                        <FONT COLOR=red><A NAME="488_25">LLC</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+                        <FONT COLOR=red><A NAME="489_25">LRC</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#481_16">Wborder</A>, "wborder");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#481_16">Wborder</A> (<A HREF="terminal_interface-curses__ads.htm#680_7">Win</A>,
+                  <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#681_7">Left_Side_Symbol</A>),
+                  <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#682_7">Right_Side_Symbol</A>),
+                  <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#683_7">Top_Side_Symbol</A>),
+                  <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#684_7">Bottom_Side_Symbol</A>),
+                  <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#685_7">Upper_Left_Corner_Symbol</A>),
+                  <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#686_7">Upper_Right_Corner_Symbol</A>),
+                  <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#687_7">Lower_Left_Corner_Symbol</A>),
+                  <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#688_7">Lower_Right_Corner_Symbol</A>)
+                  ) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A>
+      <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Border;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#694_14">Box</A><FONT COLOR=red><A NAME="507_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#695_7">Win</A>               : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#696_7">Vertical_Symbol</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      <A HREF="terminal_interface-curses__ads.htm#697_7">Horizontal_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#679_14">Border</A> (<A HREF="terminal_interface-curses__ads.htm#695_7">Win</A>,
+              <A HREF="terminal_interface-curses__ads.htm#696_7">Vertical_Symbol</A>, <A HREF="terminal_interface-curses__ads.htm#696_7">Vertical_Symbol</A>,
+              <A HREF="terminal_interface-curses__ads.htm#697_7">Horizontal_Symbol</A>, <A HREF="terminal_interface-curses__ads.htm#697_7">Horizontal_Symbol</A>);
+   <b>end</b> Box;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#702_14">Horizontal_Line</A><FONT COLOR=red><A NAME="518_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#703_7">Win</A>         : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#704_7">Line_Size</A>   : <b>in</b> Natural;
+      <A HREF="terminal_interface-curses__ads.htm#705_7">Line_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="523_16">Whline</A></FONT> (<FONT COLOR=red><A NAME="523_24">W</A></FONT>   : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                       <FONT COLOR=red><A NAME="524_24">Ch</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+                       <FONT COLOR=red><A NAME="525_24">Len</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#523_16">Whline</A>, "whline");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#523_16">Whline</A> (<A HREF="terminal_interface-curses__ads.htm#703_7">Win</A>,
+                 <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#705_7">Line_Symbol</A>),
+                 <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#704_7">Line_Size</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Horizontal_Line;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#710_14">Vertical_Line</A><FONT COLOR=red><A NAME="535_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#711_7">Win</A>         : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#712_7">Line_Size</A>   : <b>in</b> Natural;
+      <A HREF="terminal_interface-curses__ads.htm#713_7">Line_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="540_16">Wvline</A></FONT> (<FONT COLOR=red><A NAME="540_24">W</A></FONT>   : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                       <FONT COLOR=red><A NAME="541_24">Ch</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+                       <FONT COLOR=red><A NAME="542_24">Len</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#540_16">Wvline</A>, "wvline");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#540_16">Wvline</A> (<A HREF="terminal_interface-curses__ads.htm#711_7">Win</A>,
+                 <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#713_7">Line_Symbol</A>),
+                 <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#712_7">Line_Size</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Vertical_Line;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#722_13">Get_Keystroke</A><FONT COLOR=red><A NAME="553_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#722_28">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+     <b>return</b> <A HREF="terminal_interface-curses__ads.htm#71_12">Real_Key_Code</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="556_16">Wgetch</A></FONT> (<FONT COLOR=red><A NAME="556_24">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#556_16">Wgetch</A>, "wgetch");
+
+      <FONT COLOR=red><A NAME="559_7">C</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#556_16">Wgetch</A> (<A HREF="terminal_interface-curses__ads.htm#722_28">Win</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#559_7">C</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>return</b> <A HREF="terminal_interface-curses__ads.htm#86_4">Key_None</A>;
+      <b>else</b>
+         <b>return</b> <A HREF="terminal_interface-curses__ads.htm#71_12">Real_Key_Code</A> (<A HREF="terminal_interface-curses__adb.htm#559_7">C</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Get_Keystroke;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#732_14">Undo_Keystroke</A><FONT COLOR=red><A NAME="568_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#732_30">Key</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#71_12">Real_Key_Code</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="570_16">Ungetch</A></FONT> (<FONT COLOR=red><A NAME="570_25">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#570_16">Ungetch</A>, "ungetch");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#570_16">Ungetch</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#732_30">Key</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Undo_Keystroke;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#737_13">Has_Key</A><FONT COLOR=red><A NAME="578_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#737_22">Key</A> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A>) <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="580_16">Haskey</A></FONT> (<FONT COLOR=red><A NAME="580_24">Key</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#580_16">Haskey</A>, "has_key");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#580_16">Haskey</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#737_22">Key</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#75_4">Curses_False</A> <b>then</b>
+         <b>return</b> False;
+      <b>else</b>
+         <b>return</b> True;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Has_Key;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#744_13">Is_Function_Key</A><FONT COLOR=red><A NAME="590_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#744_30">Key</A> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A>) <b>return</b> Boolean
+   <b>is</b>
+      <FONT COLOR=red><A NAME="592_7">L</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A>  := <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> (Natural (<A HREF="terminal_interface-curses__ads.htm#96_4">Key_F0</A>) +
+        Natural (<A HREF="terminal_interface-curses__ads.htm#748_12">Function_Key_Number</A>'Last));
+   <b>begin</b>
+      <b>if</b> (<A HREF="terminal_interface-curses__ads.htm#744_30">Key</A> &gt;= <A HREF="terminal_interface-curses__ads.htm#96_4">Key_F0</A>) <b>and</b> <b>then</b> (<A HREF="terminal_interface-curses__ads.htm#744_30">Key</A> &lt;= <A HREF="terminal_interface-curses__adb.htm#592_7">L</A>) <b>then</b>
+         <b>return</b> True;
+      <b>else</b>
+         <b>return</b> False;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Is_Function_Key;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#751_13">Function_Key</A><FONT COLOR=red><A NAME="602_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#751_27">Key</A> : <A HREF="terminal_interface-curses__ads.htm#71_12">Real_Key_Code</A>)
+                          <b>return</b> <A HREF="terminal_interface-curses__ads.htm#748_12">Function_Key_Number</A>
+   <b>is</b>
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__ads.htm#744_13">Is_Function_Key</A> (<A HREF="terminal_interface-curses__ads.htm#751_27">Key</A>) <b>then</b>
+         <b>return</b> <A HREF="terminal_interface-curses__ads.htm#748_12">Function_Key_Number</A> (<A HREF="terminal_interface-curses__ads.htm#751_27">Key</A> - <A HREF="terminal_interface-curses__ads.htm#96_4">Key_F0</A>);
+      <b>else</b>
+         <b>raise</b> Constraint_Error;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Function_Key;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#756_13">Function_Key_Code</A><FONT COLOR=red><A NAME="613_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#756_32">Key</A> : <A HREF="terminal_interface-curses__ads.htm#748_12">Function_Key_Number</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#71_12">Real_Key_Code</A>
+   <b>is</b>
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses__ads.htm#71_12">Real_Key_Code</A> (Natural (<A HREF="terminal_interface-curses__ads.htm#96_4">Key_F0</A>) + Natural (<A HREF="terminal_interface-curses__ads.htm#756_32">Key</A>));
+   <b>end</b> Function_Key_Code;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#765_14">Switch_Character_Attribute</A><FONT COLOR=red><A NAME="619_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#766_7">Win</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#767_7">Attr</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+      <A HREF="terminal_interface-curses__ads.htm#768_7">On</A>   : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="624_16">Wattron</A></FONT> (<FONT COLOR=red><A NAME="624_25">Win</A></FONT>    : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                        <FONT COLOR=red><A NAME="625_25">C_Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#64_12">C_AttrType</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#624_16">Wattron</A>, "wattr_on");
+      <b>function</b> <FONT COLOR=red><A NAME="627_16">Wattroff</A></FONT> (<FONT COLOR=red><A NAME="627_26">Win</A></FONT>    : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                         <FONT COLOR=red><A NAME="628_26">C_Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#64_12">C_AttrType</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#627_16">Wattroff</A>, "wattr_off");
+      <FONT COLOR=green><EM>--  In Ada we use the On Boolean to control whether or not we want to</EM></FONT>
+      <FONT COLOR=green><EM>--  switch on or off the attributes in the set.</EM></FONT>
+      <FONT COLOR=red><A NAME="632_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <FONT COLOR=red><A NAME="633_7">AC</A></FONT>  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := (Ch    =&gt; Character'First,
+                                              Color =&gt; <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First,
+                                              Attr  =&gt; <A HREF="terminal_interface-curses__ads.htm#767_7">Attr</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__ads.htm#768_7">On</A> <b>then</b>
+         <A HREF="terminal_interface-curses__adb.htm#632_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#624_16">Wattron</A>  (<A HREF="terminal_interface-curses__ads.htm#766_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#108_13">AttrChar_To_AttrType</A> (<A HREF="terminal_interface-curses__adb.htm#633_7">AC</A>));
+      <b>else</b>
+         <A HREF="terminal_interface-curses__adb.htm#632_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#627_16">Wattroff</A> (<A HREF="terminal_interface-curses__ads.htm#766_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#108_13">AttrChar_To_AttrType</A> (<A HREF="terminal_interface-curses__adb.htm#633_7">AC</A>));
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#632_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Switch_Character_Attribute;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#773_14">Set_Character_Attributes</A><FONT COLOR=red><A NAME="647_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#774_7">Win</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#775_7">Attr</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+      <A HREF="terminal_interface-curses__ads.htm#776_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="652_16">Wattrset</A></FONT> (<FONT COLOR=red><A NAME="652_26">Win</A></FONT>    : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                         <FONT COLOR=red><A NAME="653_26">C_Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#64_12">C_AttrType</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#652_16">Wattrset</A>, "wattrset"); <FONT COLOR=green><EM>-- ??? wattr_set</EM></FONT>
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#652_16">Wattrset</A> (<A HREF="terminal_interface-curses__ads.htm#774_7">Win</A>,
+                   <A HREF="terminal_interface-curses-aux__ads.htm#108_13">AttrChar_To_AttrType</A> (<A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>'
+                                         (Ch    =&gt; Character'First,
+                                          Color =&gt; <A HREF="terminal_interface-curses__ads.htm#776_7">Color</A>,
+                                          Attr  =&gt; <A HREF="terminal_interface-curses__ads.htm#775_7">Attr</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Character_Attributes;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#781_13">Get_Character_Attribute</A><FONT COLOR=red><A NAME="665_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#782_7">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+                                     <b>return</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="668_16">Wattrget</A></FONT> (<FONT COLOR=red><A NAME="668_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                         Atr : <b>access</b> <A HREF="terminal_interface-curses-aux__ads.htm#64_12">C_AttrType</A>;
+                         Col : <b>access</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+                         <FONT COLOR=red><A NAME="671_26">Opt</A></FONT> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#668_16">Wattrget</A>, "wattr_get");
+
+      <FONT COLOR=red><A NAME="674_7">Attr</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#64_12">C_AttrType</A>;
+      <FONT COLOR=red><A NAME="675_7">Col</A></FONT>  : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+      <FONT COLOR=red><A NAME="676_7">Res</A></FONT>  : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#668_16">Wattrget</A> (<A HREF="terminal_interface-curses__ads.htm#782_7">Win</A>, <A HREF="terminal_interface-curses__adb.htm#674_7">Attr</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#675_7">Col</A>'<b>Access</b>,
+                                         System.Null_Address);
+      <FONT COLOR=red><A NAME="678_7">Ch</A></FONT>   : <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#676_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#71_4">Curses_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses__adb.htm#678_7">Ch</A> := <A HREF="terminal_interface-curses-aux__ads.htm#112_13">AttrType_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#674_7">Attr</A>);
+         <b>return</b> <A HREF="terminal_interface-curses__adb.htm#678_7">Ch</A>.<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+      <b>else</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Get_Character_Attribute;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#786_13">Get_Character_Attribute</A><FONT COLOR=red><A NAME="688_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#787_7">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+                                     <b>return</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="691_16">Wattrget</A></FONT> (<FONT COLOR=red><A NAME="691_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                         Atr : <b>access</b> <A HREF="terminal_interface-curses-aux__ads.htm#64_12">C_AttrType</A>;
+                         Col : <b>access</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+                         <FONT COLOR=red><A NAME="694_26">Opt</A></FONT> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#691_16">Wattrget</A>, "wattr_get");
+
+      <FONT COLOR=red><A NAME="697_7">Attr</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#64_12">C_AttrType</A>;
+      <FONT COLOR=red><A NAME="698_7">Col</A></FONT>  : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+      <FONT COLOR=red><A NAME="699_7">Res</A></FONT>  : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#691_16">Wattrget</A> (<A HREF="terminal_interface-curses__ads.htm#787_7">Win</A>, <A HREF="terminal_interface-curses__adb.htm#697_7">Attr</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#698_7">Col</A>'<b>Access</b>,
+                                         System.Null_Address);
+      <FONT COLOR=red><A NAME="701_7">Ch</A></FONT>   : <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#699_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#71_4">Curses_Ok</A> <b>then</b>
+         <A HREF="terminal_interface-curses__adb.htm#701_7">Ch</A> := <A HREF="terminal_interface-curses-aux__ads.htm#112_13">AttrType_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#697_7">Attr</A>);
+         <b>return</b> <A HREF="terminal_interface-curses__adb.htm#701_7">Ch</A>.<A HREF="terminal_interface-curses__ads.htm#353_10">Color</A>;
+      <b>else</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Get_Character_Attribute;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#792_14">Set_Color</A><FONT COLOR=red><A NAME="711_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#792_25">Win</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                        <A HREF="terminal_interface-curses__ads.htm#793_25">Pair</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="714_16">Wset_Color</A></FONT> (<FONT COLOR=red><A NAME="714_28">Win</A></FONT>   : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                           <FONT COLOR=red><A NAME="715_28">Color</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+                           <FONT COLOR=red><A NAME="716_28">Opts</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#62_12">C_Void_Ptr</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#714_16">Wset_Color</A>, "wcolor_set");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#714_16">Wset_Color</A> (<A HREF="terminal_interface-curses__ads.htm#792_25">Win</A>,
+                     <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#793_25">Pair</A>),
+                     <A HREF="terminal_interface-curses-aux__ads.htm#62_12">C_Void_Ptr</A> (System.Null_Address)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Color;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#798_14">Change_Attributes</A><FONT COLOR=red><A NAME="726_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#799_7">Win</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#800_7">Count</A> : <b>in</b> Integer := -1;
+      <A HREF="terminal_interface-curses__ads.htm#801_7">Attr</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+      <A HREF="terminal_interface-curses__ads.htm#802_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="732_16">Wchgat</A></FONT> (<FONT COLOR=red><A NAME="732_24">Win</A></FONT>   : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                       <FONT COLOR=red><A NAME="733_24">Cnt</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                       <FONT COLOR=red><A NAME="734_24">Attr</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#64_12">C_AttrType</A>;
+                       <FONT COLOR=red><A NAME="735_24">Color</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+                       <FONT COLOR=red><A NAME="736_24">Opts</A></FONT>  : System.Address := System.Null_Address)
+                       <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#732_16">Wchgat</A>, "wchgat");
+
+      <FONT COLOR=red><A NAME="740_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> :=
+        (Ch =&gt; Character'First, Color =&gt; <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First, Attr =&gt; <A HREF="terminal_interface-curses__ads.htm#801_7">Attr</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#732_16">Wchgat</A> (<A HREF="terminal_interface-curses__ads.htm#799_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#800_7">Count</A>), <A HREF="terminal_interface-curses-aux__ads.htm#108_13">AttrChar_To_AttrType</A> (<A HREF="terminal_interface-curses__adb.htm#740_7">Ch</A>),
+                 <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#802_7">Color</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Change_Attributes;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#806_14">Change_Attributes</A><FONT COLOR=red><A NAME="749_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#807_7">Win</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#808_7">Line</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>'First;
+      <A HREF="terminal_interface-curses__ads.htm#809_7">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>'First;
+      <A HREF="terminal_interface-curses__ads.htm#810_7">Count</A>  : <b>in</b> Integer := -1;
+      <A HREF="terminal_interface-curses__ads.htm#811_7">Attr</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+      <A HREF="terminal_interface-curses__ads.htm#812_7">Color</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#503_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#807_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#808_7">Line</A>, <A HREF="terminal_interface-curses__ads.htm#809_7">Column</A>);
+      <A HREF="terminal_interface-curses__ads.htm#806_14">Change_Attributes</A> (<A HREF="terminal_interface-curses__ads.htm#807_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#810_7">Count</A>, <A HREF="terminal_interface-curses__ads.htm#811_7">Attr</A>, <A HREF="terminal_interface-curses__ads.htm#812_7">Color</A>);
+   <b>end</b> Change_Attributes;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#821_14">Beep</A><FONT COLOR=red><A NAME="762_14"></A></FONT>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="764_16">Beeper</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#764_16">Beeper</A>, "beep");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#764_16">Beeper</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Beep;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#826_14">Flash_Screen</A><FONT COLOR=red><A NAME="772_14"></A></FONT>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="774_16">Flash</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#774_16">Flash</A>, "flash");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#774_16">Flash</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Flash_Screen;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#837_14">Set_Cbreak_Mode</A><FONT COLOR=red><A NAME="782_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#837_31">SwitchOn</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="784_16">Cbreak</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#784_16">Cbreak</A>, "cbreak");
+      <b>function</b> <FONT COLOR=red><A NAME="786_16">NoCbreak</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#786_16">NoCbreak</A>, "nocbreak");
+
+      <FONT COLOR=red><A NAME="789_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__ads.htm#837_31">SwitchOn</A> <b>then</b>
+         <A HREF="terminal_interface-curses__adb.htm#789_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#784_16">Cbreak</A>;
+      <b>else</b>
+         <A HREF="terminal_interface-curses__adb.htm#789_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#786_16">NoCbreak</A>;
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#789_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Cbreak_Mode;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#843_14">Set_Raw_Mode</A><FONT COLOR=red><A NAME="801_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#843_28">SwitchOn</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="803_16">Raw</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#803_16">Raw</A>, "raw");
+      <b>function</b> <FONT COLOR=red><A NAME="805_16">NoRaw</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#805_16">NoRaw</A>, "noraw");
+
+      <FONT COLOR=red><A NAME="808_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__ads.htm#843_28">SwitchOn</A> <b>then</b>
+         <A HREF="terminal_interface-curses__adb.htm#808_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#803_16">Raw</A>;
+      <b>else</b>
+         <A HREF="terminal_interface-curses__adb.htm#808_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#805_16">NoRaw</A>;
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#808_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Raw_Mode;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#849_14">Set_Echo_Mode</A><FONT COLOR=red><A NAME="820_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#849_29">SwitchOn</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="822_16">Echo</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#822_16">Echo</A>, "echo");
+      <b>function</b> <FONT COLOR=red><A NAME="824_16">NoEcho</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#824_16">NoEcho</A>, "noecho");
+
+      <FONT COLOR=red><A NAME="827_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__ads.htm#849_29">SwitchOn</A> <b>then</b>
+         <A HREF="terminal_interface-curses__adb.htm#827_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#822_16">Echo</A>;
+      <b>else</b>
+         <A HREF="terminal_interface-curses__adb.htm#827_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#824_16">NoEcho</A>;
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#827_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Echo_Mode;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#855_14">Set_Meta_Mode</A><FONT COLOR=red><A NAME="839_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#855_29">Win</A>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                            <A HREF="terminal_interface-curses__ads.htm#856_29">SwitchOn</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="842_16">Meta</A></FONT> (<FONT COLOR=red><A NAME="842_22">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="842_34">Mode</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#842_16">Meta</A>, "meta");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#842_16">Meta</A> (<A HREF="terminal_interface-curses__ads.htm#855_29">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#856_29">SwitchOn</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Meta_Mode;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#861_14">Set_KeyPad_Mode</A><FONT COLOR=red><A NAME="850_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#861_31">Win</A>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                              <A HREF="terminal_interface-curses__ads.htm#862_31">SwitchOn</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="853_16">Keypad</A></FONT> (<FONT COLOR=red><A NAME="853_24">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="853_36">Mode</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#853_16">Keypad</A>, "keypad");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#853_16">Keypad</A> (<A HREF="terminal_interface-curses__ads.htm#861_31">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#862_31">SwitchOn</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_KeyPad_Mode;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#869_14">Half_Delay</A><FONT COLOR=red><A NAME="861_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#869_26">Amount</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#866_9">Half_Delay_Amount</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="863_16">Halfdelay</A></FONT> (<FONT COLOR=red><A NAME="863_27">Amount</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#863_16">Halfdelay</A>, "halfdelay");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#863_16">Halfdelay</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#869_26">Amount</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Half_Delay;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#874_14">Set_Flush_On_Interrupt_Mode</A><FONT COLOR=red><A NAME="871_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#875_7">Win</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#876_7">Mode</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="875_16">Intrflush</A></FONT> (<FONT COLOR=red><A NAME="875_27">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="875_41">Mode</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#875_16">Intrflush</A>, "intrflush");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#875_16">Intrflush</A> (<A HREF="terminal_interface-curses__ads.htm#875_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#876_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Flush_On_Interrupt_Mode;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#881_14">Set_Queue_Interrupt_Mode</A><FONT COLOR=red><A NAME="883_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#882_7">Win</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#883_7">Flush</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>procedure</b> <FONT COLOR=red><A NAME="887_17">Qiflush</A></FONT>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#887_17">Qiflush</A>, "qiflush");
+      <b>procedure</b> <FONT COLOR=red><A NAME="889_17">No_Qiflush</A></FONT>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#889_17">No_Qiflush</A>, "noqiflush");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__ads.htm#883_7">Flush</A> <b>then</b>
+         <A HREF="terminal_interface-curses__adb.htm#887_17">Qiflush</A>;
+      <b>else</b>
+         <A HREF="terminal_interface-curses__adb.htm#889_17">No_Qiflush</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Queue_Interrupt_Mode;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#889_14">Set_NoDelay_Mode</A><FONT COLOR=red><A NAME="899_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#890_7">Win</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#891_7">Mode</A> : <b>in</b> Boolean := False)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="903_16">Nodelay</A></FONT> (<FONT COLOR=red><A NAME="903_25">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="903_39">Mode</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#903_16">Nodelay</A>, "nodelay");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#903_16">Nodelay</A> (<A HREF="terminal_interface-curses__ads.htm#890_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#891_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_NoDelay_Mode;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#898_14">Set_Timeout_Mode</A><FONT COLOR=red><A NAME="911_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#898_32">Win</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                               <A HREF="terminal_interface-curses__ads.htm#899_32">Mode</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#895_9">Timeout_Mode</A>;
+                               <A HREF="terminal_interface-curses__ads.htm#900_32">Amount</A> : <b>in</b> Natural)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="915_16">Wtimeout</A></FONT> (<FONT COLOR=red><A NAME="915_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="915_40">Amount</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#915_16">Wtimeout</A>, "wtimeout");
+
+      <FONT COLOR=red><A NAME="918_7">Time</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+   <b>begin</b>
+      <b>case</b> <A HREF="terminal_interface-curses__ads.htm#899_32">Mode</A> <b>is</b>
+         <b>when</b> <A HREF="terminal_interface-curses__ads.htm#895_26">Blocking</A>     =&gt; <A HREF="terminal_interface-curses__adb.htm#918_7">Time</A> := -1;
+         <b>when</b> <A HREF="terminal_interface-curses__ads.htm#895_36">Non_Blocking</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#918_7">Time</A> := 0;
+         <b>when</b> <A HREF="terminal_interface-curses__ads.htm#895_50">Delayed</A>      =&gt;
+            <b>if</b> <A HREF="terminal_interface-curses__ads.htm#900_32">Amount</A> = 0 <b>then</b>
+               <b>raise</b> CONSTRAINT_ERROR;
+            <b>end</b> <b>if</b>;
+            <A HREF="terminal_interface-curses__adb.htm#918_7">Time</A> := <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#900_32">Amount</A>);
+      <b>end</b> <b>case</b>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#915_16">Wtimeout</A> (<A HREF="terminal_interface-curses__ads.htm#898_32">Win</A>, <A HREF="terminal_interface-curses__adb.htm#918_7">Time</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Timeout_Mode;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#909_14">Set_Escape_Timer_Mode</A><FONT COLOR=red><A NAME="934_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#910_7">Win</A>       : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#911_7">Timer_Off</A> : <b>in</b> Boolean := False)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="938_16">Notimeout</A></FONT> (<FONT COLOR=red><A NAME="938_27">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="938_41">Mode</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#938_16">Notimeout</A>, "notimeout");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#938_16">Notimeout</A> (<A HREF="terminal_interface-curses__ads.htm#910_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#911_7">Timer_Off</A>)))
+        = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Escape_Timer_Mode;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#920_14">Set_NL_Mode</A><FONT COLOR=red><A NAME="948_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#920_27">SwitchOn</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="950_16">NL</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#950_16">NL</A>, "nl");
+      <b>function</b> <FONT COLOR=red><A NAME="952_16">NoNL</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#952_16">NoNL</A>, "nonl");
+
+      <FONT COLOR=red><A NAME="955_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__ads.htm#920_27">SwitchOn</A> <b>then</b>
+         <A HREF="terminal_interface-curses__adb.htm#955_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#950_16">NL</A>;
+      <b>else</b>
+         <A HREF="terminal_interface-curses__adb.htm#955_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#952_16">NoNL</A>;
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#955_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_NL_Mode;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#926_14">Clear_On_Next_Update</A><FONT COLOR=red><A NAME="967_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#927_7">Win</A>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#928_7">Do_Clear</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="971_16">Clear_Ok</A></FONT> (<FONT COLOR=red><A NAME="971_26">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="971_38">Flag</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#971_16">Clear_Ok</A>, "clearok");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#971_16">Clear_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#927_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#928_7">Do_Clear</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Clear_On_Next_Update;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#933_14">Use_Insert_Delete_Line</A><FONT COLOR=red><A NAME="979_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#934_7">Win</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#935_7">Do_Idl</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="983_16">IDL_Ok</A></FONT> (<FONT COLOR=red><A NAME="983_24">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="983_36">Flag</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#983_16">IDL_Ok</A>, "idlok");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#983_16">IDL_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#934_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#935_7">Do_Idl</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Use_Insert_Delete_Line;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#940_14">Use_Insert_Delete_Character</A><FONT COLOR=red><A NAME="991_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#941_7">Win</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#942_7">Do_Idc</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="995_16">IDC_Ok</A></FONT> (<FONT COLOR=red><A NAME="995_24">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="995_36">Flag</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#995_16">IDC_Ok</A>, "idcok");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#995_16">IDC_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#941_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#942_7">Do_Idc</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Use_Insert_Delete_Character;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#947_14">Leave_Cursor_After_Update</A><FONT COLOR=red><A NAME="1003_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#948_7">Win</A>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#949_7">Do_Leave</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1007_16">Leave_Ok</A></FONT> (<FONT COLOR=red><A NAME="1007_26">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1007_38">Flag</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1007_16">Leave_Ok</A>, "leaveok");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1007_16">Leave_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#948_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#949_7">Do_Leave</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Leave_Cursor_After_Update;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#954_14">Immediate_Update_Mode</A><FONT COLOR=red><A NAME="1015_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#955_7">Win</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#956_7">Mode</A> : <b>in</b> Boolean := False)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1019_16">Immedok</A></FONT> (<FONT COLOR=red><A NAME="1019_25">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1019_39">Mode</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1019_16">Immedok</A>, "immedok");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1019_16">Immedok</A> (<A HREF="terminal_interface-curses__ads.htm#955_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#956_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Immediate_Update_Mode;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#961_14">Allow_Scrolling</A><FONT COLOR=red><A NAME="1027_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#962_7">Win</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>  := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#963_7">Mode</A> : <b>in</b> Boolean := False)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1031_16">Scrollok</A></FONT> (<FONT COLOR=red><A NAME="1031_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1031_40">Mode</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1031_16">Scrollok</A>, "scrollok");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1031_16">Scrollok</A> (<A HREF="terminal_interface-curses__ads.htm#962_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#963_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Allow_Scrolling;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#967_13">Scrolling_Allowed</A><FONT COLOR=red><A NAME="1039_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#967_32">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>) <b>return</b> Boolean
+   <b>is</b>
+      <FONT COLOR=red><A NAME="1041_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+   <b>begin</b>
+      <b>case</b> <A HREF="terminal_interface-curses__ads.htm#1732_4">Sizeof_bool</A> <b>is</b>
+         <b>when</b> 1 =&gt; <A HREF="terminal_interface-curses__adb.htm#1041_7">Res</A> := <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#90_13">W_Get_Byte</A>  (<A HREF="terminal_interface-curses__ads.htm#967_32">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1731_4">Offset_scroll</A>));
+         <b>when</b> 2 =&gt; <A HREF="terminal_interface-curses__adb.htm#1041_7">Res</A> := <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#89_13">W_Get_Short</A> (<A HREF="terminal_interface-curses__ads.htm#967_32">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1731_4">Offset_scroll</A>));
+         <b>when</b> 4 =&gt; <A HREF="terminal_interface-curses__adb.htm#1041_7">Res</A> := <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#88_13">W_Get_Int</A>   (<A HREF="terminal_interface-curses__ads.htm#967_32">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1731_4">Offset_scroll</A>));
+         <b>when</b> <b>others</b> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>case</b>;
+
+      <b>case</b> <A HREF="terminal_interface-curses__adb.htm#1041_7">Res</A> <b>is</b>
+         <b>when</b> 0       =&gt; <b>return</b> False;
+         <b>when</b> <b>others</b>  =&gt; <b>return</b> True;
+      <b>end</b> <b>case</b>;
+   <b>end</b> Scrolling_Allowed;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#972_14">Set_Scroll_Region</A><FONT COLOR=red><A NAME="1056_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#973_7">Win</A>         : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#974_7">Top_Line</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#975_7">Bottom_Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1061_16">Wsetscrreg</A></FONT> (<FONT COLOR=red><A NAME="1061_28">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                           <FONT COLOR=red><A NAME="1062_28">Lin</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                           <FONT COLOR=red><A NAME="1063_28">Col</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1061_16">Wsetscrreg</A>, "wsetscrreg");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1061_16">Wsetscrreg</A> (<A HREF="terminal_interface-curses__ads.htm#973_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#974_7">Top_Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#975_7">Bottom_Line</A>))
+        = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Scroll_Region;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#984_14">Update_Screen</A><FONT COLOR=red><A NAME="1072_14"></A></FONT>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1074_16">Do_Update</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1074_16">Do_Update</A>, "doupdate");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1074_16">Do_Update</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Update_Screen;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#989_14">Refresh</A><FONT COLOR=red><A NAME="1082_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#989_23">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1084_16">Wrefresh</A></FONT> (<FONT COLOR=red><A NAME="1084_26">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1084_16">Wrefresh</A>, "wrefresh");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1084_16">Wrefresh</A> (<A HREF="terminal_interface-curses__ads.htm#989_23">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Refresh;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#995_14">Refresh_Without_Update</A><FONT COLOR=red><A NAME="1092_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#996_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1095_16">Wnoutrefresh</A></FONT> (<FONT COLOR=red><A NAME="1095_30">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1095_16">Wnoutrefresh</A>, "wnoutrefresh");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1095_16">Wnoutrefresh</A> (<A HREF="terminal_interface-curses__ads.htm#996_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Refresh_Without_Update;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1002_14">Redraw</A><FONT COLOR=red><A NAME="1103_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1002_22">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1105_16">Redrawwin</A></FONT> (<FONT COLOR=red><A NAME="1105_27">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1105_16">Redrawwin</A>, "redrawwin");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1105_16">Redrawwin</A> (<A HREF="terminal_interface-curses__ads.htm#1002_22">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Redraw;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1006_14">Redraw</A><FONT COLOR=red><A NAME="1113_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1006_22">Win</A>        : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1007_22">Begin_Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1008_22">Line_Count</A> : <b>in</b> Positive)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1118_16">Wredrawln</A></FONT> (<FONT COLOR=red><A NAME="1118_27">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1118_41">First</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>; <FONT COLOR=red><A NAME="1118_56">Cnt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>)
+                          <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1118_16">Wredrawln</A>, "wredrawln");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1118_16">Wredrawln</A> (<A HREF="terminal_interface-curses__ads.htm#1006_22">Win</A>,
+                    <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1007_22">Begin_Line</A>),
+                    <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1008_22">Line_Count</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Redraw;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1017_14">Erase</A><FONT COLOR=red><A NAME="1130_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1017_21">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1132_16">Werase</A></FONT> (<FONT COLOR=red><A NAME="1132_24">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1132_16">Werase</A>, "werase");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1132_16">Werase</A> (<A HREF="terminal_interface-curses__ads.htm#1017_21">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Erase;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1022_14">Clear</A><FONT COLOR=red><A NAME="1140_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1023_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1142_16">Wclear</A></FONT> (<FONT COLOR=red><A NAME="1142_24">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1142_16">Wclear</A>, "wclear");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1142_16">Wclear</A> (<A HREF="terminal_interface-curses__ads.htm#1023_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Clear;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1028_14">Clear_To_End_Of_Screen</A><FONT COLOR=red><A NAME="1150_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1029_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1152_16">Wclearbot</A></FONT> (<FONT COLOR=red><A NAME="1152_27">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1152_16">Wclearbot</A>, "wclrtobot");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1152_16">Wclearbot</A> (<A HREF="terminal_interface-curses__ads.htm#1029_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Clear_To_End_Of_Screen;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1034_14">Clear_To_End_Of_Line</A><FONT COLOR=red><A NAME="1160_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1035_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1162_16">Wcleareol</A></FONT> (<FONT COLOR=red><A NAME="1162_27">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1162_16">Wcleareol</A>, "wclrtoeol");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1162_16">Wcleareol</A> (<A HREF="terminal_interface-curses__ads.htm#1035_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Clear_To_End_Of_Line;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1044_14">Set_Background</A><FONT COLOR=red><A NAME="1170_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1045_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1046_7">Ch</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>)
+   <b>is</b>
+      <b>procedure</b> <FONT COLOR=red><A NAME="1174_17">WBackground</A></FONT> (<FONT COLOR=red><A NAME="1174_30">W</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1174_45">Ch</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>);
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1174_17">WBackground</A>, "wbkgdset");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__adb.htm#1174_17">WBackground</A> (<A HREF="terminal_interface-curses__ads.htm#1045_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#1046_7">Ch</A>));
+   <b>end</b> Set_Background;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1051_14">Change_Background</A><FONT COLOR=red><A NAME="1180_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1052_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1053_7">Ch</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1184_16">WChangeBkgd</A></FONT> (<FONT COLOR=red><A NAME="1184_29">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1184_41">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1184_16">WChangeBkgd</A>, "wbkgd");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1184_16">WChangeBkgd</A> (<A HREF="terminal_interface-curses__ads.htm#1052_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#1053_7">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Change_Background;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1058_13">Get_Background</A><FONT COLOR=red><A NAME="1192_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1058_29">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+     <b>return</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1195_16">Wgetbkgd</A></FONT> (<FONT COLOR=red><A NAME="1195_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1195_16">Wgetbkgd</A>, "getbkgd");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#1195_16">Wgetbkgd</A> (<A HREF="terminal_interface-curses__ads.htm#1058_29">Win</A>));
+   <b>end</b> Get_Background;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1084_14">Change_Lines_Status</A><FONT COLOR=red><A NAME="1201_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1084_35">Win</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                                  <A HREF="terminal_interface-curses__ads.htm#1085_35">Start</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+                                  <A HREF="terminal_interface-curses__ads.htm#1086_35">Count</A> : <b>in</b> Positive;
+                                  <A HREF="terminal_interface-curses__ads.htm#1087_35">State</A> : <b>in</b> Boolean)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1206_16">Wtouchln</A></FONT> (<FONT COLOR=red><A NAME="1206_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                         <FONT COLOR=red><A NAME="1207_26">Sta</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                         <FONT COLOR=red><A NAME="1208_26">Cnt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                         <FONT COLOR=red><A NAME="1209_26">Chg</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1206_16">Wtouchln</A>, "wtouchln");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1206_16">Wtouchln</A> (<A HREF="terminal_interface-curses__ads.htm#1084_35">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1085_35">Start</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1086_35">Count</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#1087_35">State</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Change_Lines_Status;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1073_14">Touch</A><FONT COLOR=red><A NAME="1218_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1073_21">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="1220_7">Y</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="1221_7">X</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#1157_14">Get_Size</A> (<A HREF="terminal_interface-curses__ads.htm#1073_21">Win</A>, <A HREF="terminal_interface-curses__adb.htm#1220_7">Y</A>, <A HREF="terminal_interface-curses__adb.htm#1221_7">X</A>);
+      <A HREF="terminal_interface-curses__ads.htm#1084_14">Change_Lines_Status</A> (<A HREF="terminal_interface-curses__ads.htm#1073_21">Win</A>, 0, Positive (<A HREF="terminal_interface-curses__adb.htm#1220_7">Y</A>), True);
+   <b>end</b> Touch;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1068_14">Untouch</A><FONT COLOR=red><A NAME="1227_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1068_23">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="1229_7">Y</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="1230_7">X</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#1157_14">Get_Size</A> (<A HREF="terminal_interface-curses__ads.htm#1068_23">Win</A>, <A HREF="terminal_interface-curses__adb.htm#1229_7">Y</A>, <A HREF="terminal_interface-curses__adb.htm#1230_7">X</A>);
+      <A HREF="terminal_interface-curses__ads.htm#1084_14">Change_Lines_Status</A> (<A HREF="terminal_interface-curses__ads.htm#1068_23">Win</A>, 0, Positive (<A HREF="terminal_interface-curses__adb.htm#1229_7">Y</A>), False);
+   <b>end</b> Untouch;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1077_14">Touch</A><FONT COLOR=red><A NAME="1236_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1077_21">Win</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                    <A HREF="terminal_interface-curses__ads.htm#1078_21">Start</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+                    <A HREF="terminal_interface-curses__ads.htm#1079_21">Count</A> : <b>in</b> Positive)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#1084_14">Change_Lines_Status</A> (<A HREF="terminal_interface-curses__ads.htm#1077_21">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1078_21">Start</A>, <A HREF="terminal_interface-curses__ads.htm#1079_21">Count</A>, True);
+   <b>end</b> Touch;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1092_13">Is_Touched</A><FONT COLOR=red><A NAME="1244_13"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1092_25">Win</A>  : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1093_25">Line</A> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>) <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1248_16">WLineTouched</A></FONT> (<FONT COLOR=red><A NAME="1248_30">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1248_42">L</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1248_16">WLineTouched</A>, "is_linetouched");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1248_16">WLineTouched</A> (<A HREF="terminal_interface-curses__ads.htm#1092_25">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1093_25">Line</A>)) = <A HREF="terminal_interface-curses__ads.htm#1736_4">Curses_Bool_False</A> <b>then</b>
+         <b>return</b> False;
+      <b>else</b>
+         <b>return</b> True;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Is_Touched;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1097_13">Is_Touched</A><FONT COLOR=red><A NAME="1258_13"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1097_25">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>) <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1261_16">WWinTouched</A></FONT> (<FONT COLOR=red><A NAME="1261_29">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1261_16">WWinTouched</A>, "is_wintouched");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1261_16">WWinTouched</A> (<A HREF="terminal_interface-curses__ads.htm#1097_25">Win</A>) = <A HREF="terminal_interface-curses__ads.htm#1736_4">Curses_Bool_False</A> <b>then</b>
+         <b>return</b> False;
+      <b>else</b>
+         <b>return</b> True;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Is_Touched;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1106_14">Copy</A><FONT COLOR=red><A NAME="1271_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1107_7">Source_Window</A>            : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1108_7">Destination_Window</A>       : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1109_7">Source_Top_Row</A>           : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1110_7">Source_Left_Column</A>       : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1111_7">Destination_Top_Row</A>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1112_7">Destination_Left_Column</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1113_7">Destination_Bottom_Row</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1114_7">Destination_Right_Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1115_7">Non_Destructive_Mode</A>     : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1282_16">Copywin</A></FONT> (<FONT COLOR=red><A NAME="1282_25">Src</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                        <FONT COLOR=red><A NAME="1283_25">Dst</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                        <FONT COLOR=red><A NAME="1284_25">Str</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                        <FONT COLOR=red><A NAME="1285_25">Slc</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                        <FONT COLOR=red><A NAME="1286_25">Dtr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                        <FONT COLOR=red><A NAME="1287_25">Dlc</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                        <FONT COLOR=red><A NAME="1288_25">Dbr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                        <FONT COLOR=red><A NAME="1289_25">Drc</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                        <FONT COLOR=red><A NAME="1290_25">Ndm</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1282_16">Copywin</A>, "copywin");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1282_16">Copywin</A> (<A HREF="terminal_interface-curses__ads.htm#1107_7">Source_Window</A>,
+                  <A HREF="terminal_interface-curses__ads.htm#1108_7">Destination_Window</A>,
+                  <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1109_7">Source_Top_Row</A>),
+                  <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1110_7">Source_Left_Column</A>),
+                  <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1111_7">Destination_Top_Row</A>),
+                  <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1112_7">Destination_Left_Column</A>),
+                  <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1113_7">Destination_Bottom_Row</A>),
+                  <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1114_7">Destination_Right_Column</A>),
+                  Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#1115_7">Non_Destructive_Mode</A>)
+                ) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Copy;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1120_14">Overwrite</A><FONT COLOR=red><A NAME="1307_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1120_25">Source_Window</A>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1121_25">Destination_Window</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1311_16">Overwrite</A></FONT> (<FONT COLOR=red><A NAME="1311_27">Src</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1311_41">Dst</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1311_16">Overwrite</A>, "overwrite");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1311_16">Overwrite</A> (<A HREF="terminal_interface-curses__ads.htm#1120_25">Source_Window</A>, <A HREF="terminal_interface-curses__ads.htm#1121_25">Destination_Window</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Overwrite;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1126_14">Overlay</A><FONT COLOR=red><A NAME="1319_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1126_23">Source_Window</A>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1127_23">Destination_Window</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1323_16">Overlay</A></FONT> (<FONT COLOR=red><A NAME="1323_25">Src</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1323_39">Dst</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1323_16">Overlay</A>, "overlay");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1323_16">Overlay</A> (<A HREF="terminal_interface-curses__ads.htm#1126_23">Source_Window</A>, <A HREF="terminal_interface-curses__ads.htm#1127_23">Destination_Window</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Overlay;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1136_14">Insert_Delete_Lines</A><FONT COLOR=red><A NAME="1332_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1137_7">Win</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1138_7">Lines</A> : <b>in</b> Integer       := 1) <FONT COLOR=green><EM>-- default is to insert one line above</EM></FONT>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1336_16">Winsdelln</A></FONT> (<FONT COLOR=red><A NAME="1336_27">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1336_39">N</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1336_16">Winsdelln</A>, "winsdelln");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1336_16">Winsdelln</A> (<A HREF="terminal_interface-curses__ads.htm#1137_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1138_7">Lines</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Insert_Delete_Lines;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1143_14">Delete_Line</A><FONT COLOR=red><A NAME="1344_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1143_27">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#1136_14">Insert_Delete_Lines</A> (<A HREF="terminal_interface-curses__ads.htm#1143_27">Win</A>, -1);
+   <b>end</b> Delete_Line;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1148_14">Insert_Line</A><FONT COLOR=red><A NAME="1350_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1148_27">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#1136_14">Insert_Delete_Lines</A> (<A HREF="terminal_interface-curses__ads.htm#1148_27">Win</A>, 1);
+   <b>end</b> Insert_Line;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1157_14">Get_Size</A><FONT COLOR=red><A NAME="1358_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1158_7">Win</A>               : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1159_7">Number_Of_Lines</A>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1160_7">Number_Of_Columns</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>)
+   <b>is</b>
+      <FONT COLOR=green><EM>--  Please note: in ncurses they are one off.</EM></FONT>
+      <FONT COLOR=green><EM>--  This might be different in other implementations of curses</EM></FONT>
+      <FONT COLOR=red><A NAME="1365_7">Y</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#89_13">W_Get_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1158_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1722_4">Offset_maxy</A>)) + <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1733_4">Offset_XY</A>);
+      <FONT COLOR=red><A NAME="1366_7">X</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#89_13">W_Get_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1158_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1723_4">Offset_maxx</A>)) + <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1733_4">Offset_XY</A>);
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#1159_7">Number_Of_Lines</A>   := <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A> (<A HREF="terminal_interface-curses__adb.htm#1365_7">Y</A>);
+      <A HREF="terminal_interface-curses__ads.htm#1160_7">Number_Of_Columns</A> := <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A> (<A HREF="terminal_interface-curses__adb.htm#1366_7">X</A>);
+   <b>end</b> Get_Size;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1165_14">Get_Window_Position</A><FONT COLOR=red><A NAME="1372_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1166_7">Win</A>             : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1167_7">Top_Left_Line</A>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1168_7">Top_Left_Column</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="1377_7">Y</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> := <A HREF="terminal_interface-curses__adb.htm#89_13">W_Get_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1166_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1724_4">Offset_begy</A>);
+      <FONT COLOR=red><A NAME="1378_7">X</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> := <A HREF="terminal_interface-curses__adb.htm#89_13">W_Get_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1166_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1725_4">Offset_begx</A>);
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#1167_7">Top_Left_Line</A>   := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#1377_7">Y</A>);
+      <A HREF="terminal_interface-curses__ads.htm#1168_7">Top_Left_Column</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#1378_7">X</A>);
+   <b>end</b> Get_Window_Position;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1173_14">Get_Cursor_Position</A><FONT COLOR=red><A NAME="1384_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1174_7">Win</A>    : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1175_7">Line</A>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1176_7">Column</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="1389_7">Y</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> := <A HREF="terminal_interface-curses__adb.htm#89_13">W_Get_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1174_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1726_4">Offset_cury</A>);
+      <FONT COLOR=red><A NAME="1390_7">X</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> := <A HREF="terminal_interface-curses__adb.htm#89_13">W_Get_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1174_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1727_4">Offset_curx</A>);
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#1175_7">Line</A>   := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#1389_7">Y</A>);
+      <A HREF="terminal_interface-curses__ads.htm#1176_7">Column</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#1390_7">X</A>);
+   <b>end</b> Get_Cursor_Position;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1181_14">Get_Origin_Relative_To_Parent</A><FONT COLOR=red><A NAME="1396_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1182_7">Win</A>                : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1183_7">Top_Left_Line</A>      : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1184_7">Top_Left_Column</A>    : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1185_7">Is_Not_A_Subwindow</A> : <b>out</b> Boolean)
+   <b>is</b>
+      <FONT COLOR=red><A NAME="1402_7">Y</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#88_13">W_Get_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1182_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1729_4">Offset_pary</A>);
+      <FONT COLOR=red><A NAME="1403_7">X</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#88_13">W_Get_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1182_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1730_4">Offset_parx</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1402_7">Y</A> = -1 <b>then</b>
+         <A HREF="terminal_interface-curses__ads.htm#1183_7">Top_Left_Line</A>   := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>'Last;
+         <A HREF="terminal_interface-curses__ads.htm#1184_7">Top_Left_Column</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>'Last;
+         <A HREF="terminal_interface-curses__ads.htm#1185_7">Is_Not_A_Subwindow</A> := True;
+      <b>else</b>
+         <A HREF="terminal_interface-curses__ads.htm#1183_7">Top_Left_Line</A>   := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#1402_7">Y</A>);
+         <A HREF="terminal_interface-curses__ads.htm#1184_7">Top_Left_Column</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#1403_7">X</A>);
+         <A HREF="terminal_interface-curses__ads.htm#1185_7">Is_Not_A_Subwindow</A> := False;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Get_Origin_Relative_To_Parent;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1196_13">New_Pad</A><FONT COLOR=red><A NAME="1416_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1196_22">Lines</A>   : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+                     <A HREF="terminal_interface-curses__ads.htm#1197_22">Columns</A> : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1419_16">Newpad</A></FONT> (<FONT COLOR=red><A NAME="1419_24">Lines</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>; <FONT COLOR=red><A NAME="1419_39">Columns</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1419_16">Newpad</A>, "newpad");
+
+      <FONT COLOR=red><A NAME="1422_7">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__adb.htm#1422_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#1419_16">Newpad</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1196_22">Lines</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1197_22">Columns</A>));
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1422_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses__adb.htm#1422_7">W</A>;
+   <b>end</b> New_Pad;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1202_13">Sub_Pad</A><FONT COLOR=red><A NAME="1431_13"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1203_7">Pad</A>                   : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1204_7">Number_Of_Lines</A>       : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1205_7">Number_Of_Columns</A>     : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1206_7">First_Line_Position</A>   : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1207_7">First_Column_Position</A> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1438_16">Subpad</A></FONT>
+        (<FONT COLOR=red><A NAME="1439_10">Pad</A></FONT>                   : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+         <FONT COLOR=red><A NAME="1440_10">Number_Of_Lines</A></FONT>       : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="1441_10">Number_Of_Columns</A></FONT>     : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="1442_10">First_Line_Position</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="1443_10">First_Column_Position</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1438_16">Subpad</A>, "subpad");
+
+      <FONT COLOR=red><A NAME="1446_7">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__adb.htm#1446_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#1438_16">Subpad</A> (<A HREF="terminal_interface-curses__ads.htm#1203_7">Pad</A>,
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1204_7">Number_Of_Lines</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1205_7">Number_Of_Columns</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1206_7">First_Line_Position</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1207_7">First_Column_Position</A>));
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1446_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>return</b> <A HREF="terminal_interface-curses__adb.htm#1446_7">W</A>;
+   <b>end</b> Sub_Pad;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1212_14">Refresh</A><FONT COLOR=red><A NAME="1459_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1213_7">Pad</A>                      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1214_7">Source_Top_Row</A>           : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1215_7">Source_Left_Column</A>       : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1216_7">Destination_Top_Row</A>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1217_7">Destination_Left_Column</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1218_7">Destination_Bottom_Row</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1219_7">Destination_Right_Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1468_16">Prefresh</A></FONT>
+        (<FONT COLOR=red><A NAME="1469_10">Pad</A></FONT>                      : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+         <FONT COLOR=red><A NAME="1470_10">Source_Top_Row</A></FONT>           : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="1471_10">Source_Left_Column</A></FONT>       : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="1472_10">Destination_Top_Row</A></FONT>      : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="1473_10">Destination_Left_Column</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="1474_10">Destination_Bottom_Row</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="1475_10">Destination_Right_Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1468_16">Prefresh</A>, "prefresh");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1468_16">Prefresh</A> (<A HREF="terminal_interface-curses__ads.htm#1213_7">Pad</A>,
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1214_7">Source_Top_Row</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1215_7">Source_Left_Column</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1216_7">Destination_Top_Row</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1217_7">Destination_Left_Column</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1218_7">Destination_Bottom_Row</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1219_7">Destination_Right_Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Refresh;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1224_14">Refresh_Without_Update</A><FONT COLOR=red><A NAME="1489_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1225_7">Pad</A>                      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1226_7">Source_Top_Row</A>           : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1227_7">Source_Left_Column</A>       : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1228_7">Destination_Top_Row</A>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1229_7">Destination_Left_Column</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1230_7">Destination_Bottom_Row</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1231_7">Destination_Right_Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1498_16">Pnoutrefresh</A></FONT>
+        (<FONT COLOR=red><A NAME="1499_10">Pad</A></FONT>                      : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+         <FONT COLOR=red><A NAME="1500_10">Source_Top_Row</A></FONT>           : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="1501_10">Source_Left_Column</A></FONT>       : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="1502_10">Destination_Top_Row</A></FONT>      : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="1503_10">Destination_Left_Column</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="1504_10">Destination_Bottom_Row</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+         <FONT COLOR=red><A NAME="1505_10">Destination_Right_Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1498_16">Pnoutrefresh</A>, "pnoutrefresh");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1498_16">Pnoutrefresh</A> (<A HREF="terminal_interface-curses__ads.htm#1225_7">Pad</A>,
+                       <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1226_7">Source_Top_Row</A>),
+                       <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1227_7">Source_Left_Column</A>),
+                       <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1228_7">Destination_Top_Row</A>),
+                       <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1229_7">Destination_Left_Column</A>),
+                       <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1230_7">Destination_Bottom_Row</A>),
+                       <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1231_7">Destination_Right_Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Refresh_Without_Update;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1236_14">Add_Character_To_Pad_And_Echo_It</A><FONT COLOR=red><A NAME="1519_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1237_7">Pad</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1238_7">Ch</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1523_16">Pechochar</A></FONT> (<FONT COLOR=red><A NAME="1523_27">Pad</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1523_41">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>)
+                          <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1523_16">Pechochar</A>, "pechochar");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1523_16">Pechochar</A> (<A HREF="terminal_interface-curses__ads.htm#1237_7">Pad</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#1238_7">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Add_Character_To_Pad_And_Echo_It;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1241_14">Add_Character_To_Pad_And_Echo_It</A><FONT COLOR=red><A NAME="1532_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1242_7">Pad</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1243_7">Ch</A>  : <b>in</b> Character)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#1241_14">Add_Character_To_Pad_And_Echo_It</A>
+        (<A HREF="terminal_interface-curses__ads.htm#1242_7">Pad</A>,
+         <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>'(Ch    =&gt; <A HREF="terminal_interface-curses__ads.htm#1243_7">Ch</A>,
+                               Color =&gt; <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First,
+                               Attr  =&gt; <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>));
+   <b>end</b> Add_Character_To_Pad_And_Echo_It;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1251_14">Scroll</A><FONT COLOR=red><A NAME="1544_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1251_22">Win</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                     <A HREF="terminal_interface-curses__ads.htm#1252_22">Amount</A> : <b>in</b> Integer := 1)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1547_16">Wscrl</A></FONT> (<FONT COLOR=red><A NAME="1547_23">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1547_37">N</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1547_16">Wscrl</A>, "wscrl");
+
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1547_16">Wscrl</A> (<A HREF="terminal_interface-curses__ads.htm#1251_22">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1252_22">Amount</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Scroll;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1261_14">Delete_Character</A><FONT COLOR=red><A NAME="1557_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1261_32">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1559_16">Wdelch</A></FONT> (<FONT COLOR=red><A NAME="1559_24">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1559_16">Wdelch</A>, "wdelch");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1559_16">Wdelch</A> (<A HREF="terminal_interface-curses__ads.htm#1261_32">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Delete_Character;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1265_14">Delete_Character</A><FONT COLOR=red><A NAME="1567_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1266_7">Win</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1267_7">Line</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1268_7">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1572_16">Mvwdelch</A></FONT> (<FONT COLOR=red><A NAME="1572_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                         <FONT COLOR=red><A NAME="1573_26">Lin</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                         <FONT COLOR=red><A NAME="1574_26">Col</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1572_16">Mvwdelch</A>, "mvwdelch");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1572_16">Mvwdelch</A> (<A HREF="terminal_interface-curses__ads.htm#1266_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1267_7">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1268_7">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Delete_Character;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1277_13">Peek</A><FONT COLOR=red><A NAME="1582_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1277_19">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+     <b>return</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1585_16">Winch</A></FONT> (<FONT COLOR=red><A NAME="1585_23">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1585_16">Winch</A>, "winch");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#1585_16">Winch</A> (<A HREF="terminal_interface-curses__ads.htm#1277_19">Win</A>));
+   <b>end</b> Peek;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1282_13">Peek</A><FONT COLOR=red><A NAME="1591_13"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1283_7">Win</A>    : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1284_7">Line</A>   : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1285_7">Column</A> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1596_16">Mvwinch</A></FONT> (<FONT COLOR=red><A NAME="1596_25">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                        <FONT COLOR=red><A NAME="1597_25">Lin</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                        <FONT COLOR=red><A NAME="1598_25">Col</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1596_16">Mvwinch</A>, "mvwinch");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#1596_16">Mvwinch</A> (<A HREF="terminal_interface-curses__ads.htm#1283_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1284_7">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1285_7">Column</A>)));
+   <b>end</b> Peek;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1294_14">Insert</A><FONT COLOR=red><A NAME="1604_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1294_22">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                     <A HREF="terminal_interface-curses__ads.htm#1295_22">Ch</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1607_16">Winsch</A></FONT> (<FONT COLOR=red><A NAME="1607_24">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1607_38">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1607_16">Winsch</A>, "winsch");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1607_16">Winsch</A> (<A HREF="terminal_interface-curses__ads.htm#1294_22">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#1295_22">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Insert;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1299_14">Insert</A><FONT COLOR=red><A NAME="1615_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1299_22">Win</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1300_22">Line</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1301_22">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1302_22">Ch</A>     : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1621_16">Mvwinsch</A></FONT> (<FONT COLOR=red><A NAME="1621_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                         <FONT COLOR=red><A NAME="1622_26">Lin</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                         <FONT COLOR=red><A NAME="1623_26">Col</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                         <FONT COLOR=red><A NAME="1624_26">Ch</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1621_16">Mvwinsch</A>, "mvwinsch");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1621_16">Mvwinsch</A> (<A HREF="terminal_interface-curses__ads.htm#1299_22">Win</A>,
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1300_22">Line</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1301_22">Column</A>),
+                   <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#1302_22">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Insert;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1310_14">Insert</A><FONT COLOR=red><A NAME="1635_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1310_22">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                     <A HREF="terminal_interface-curses__ads.htm#1311_22">Str</A> : <b>in</b> String;
+                     <A HREF="terminal_interface-curses__ads.htm#1312_22">Len</A> : <b>in</b> Integer := -1)
+   <b>is</b>
+      <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+      <b>function</b> <FONT COLOR=red><A NAME="1640_16">Winsnstr</A></FONT> (<FONT COLOR=red><A NAME="1640_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                         Str : Char_Ptr;
+                         <FONT COLOR=red><A NAME="1642_26">Len</A></FONT> : Integer := -1) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1640_16">Winsnstr</A>, "winsnstr");
+
+      <FONT COLOR=red><A NAME="1645_7">Txt</A></FONT>    : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#1311_22">Str</A>'Length);
+      <FONT COLOR=red><A NAME="1646_7">Length</A></FONT> : size_t;
+   <b>begin</b>
+      To_C (<A HREF="terminal_interface-curses__ads.htm#1311_22">Str</A>, <A HREF="terminal_interface-curses__adb.htm#1645_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#1646_7">Length</A>);
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1640_16">Winsnstr</A> (<A HREF="terminal_interface-curses__ads.htm#1310_22">Win</A>, <A HREF="terminal_interface-curses__adb.htm#1645_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#1645_7">Txt</A>'First)'<b>Access</b>, <A HREF="terminal_interface-curses__ads.htm#1312_22">Len</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Insert;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1317_14">Insert</A><FONT COLOR=red><A NAME="1654_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1317_22">Win</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1318_22">Line</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1319_22">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1320_22">Str</A>    : <b>in</b> String;
+      <A HREF="terminal_interface-curses__ads.htm#1321_22">Len</A>    : <b>in</b> Integer := -1)
+   <b>is</b>
+      <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+      <b>function</b> <FONT COLOR=red><A NAME="1662_16">Mvwinsnstr</A></FONT> (<FONT COLOR=red><A NAME="1662_28">Win</A></FONT>    : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                           <FONT COLOR=red><A NAME="1663_28">Line</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                           <FONT COLOR=red><A NAME="1664_28">Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                           Str    : Char_Ptr;
+                           <FONT COLOR=red><A NAME="1666_28">Len</A></FONT>    : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1662_16">Mvwinsnstr</A>, "mvwinsnstr");
+
+      <FONT COLOR=red><A NAME="1669_7">Txt</A></FONT>    : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#1320_22">Str</A>'Length);
+      <FONT COLOR=red><A NAME="1670_7">Length</A></FONT> : size_t;
+   <b>begin</b>
+      To_C (<A HREF="terminal_interface-curses__ads.htm#1320_22">Str</A>, <A HREF="terminal_interface-curses__adb.htm#1669_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#1670_7">Length</A>);
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1662_16">Mvwinsnstr</A> (<A HREF="terminal_interface-curses__ads.htm#1317_22">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1318_22">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1319_22">Column</A>),
+                     <A HREF="terminal_interface-curses__adb.htm#1669_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#1669_7">Txt</A>'First)'<b>Access</b>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1321_22">Len</A>))
+        = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Insert;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1331_14">Peek</A><FONT COLOR=red><A NAME="1680_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1331_20">Win</A> : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                   <A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A> : <b>out</b> String;
+                   <A HREF="terminal_interface-curses__ads.htm#1333_20">Len</A> : <b>in</b>  Integer := -1)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1684_16">Winnstr</A></FONT> (<FONT COLOR=red><A NAME="1684_25">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                        <FONT COLOR=red><A NAME="1685_25">Str</A></FONT> : char_array;
+                        <FONT COLOR=red><A NAME="1686_25">Len</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1684_16">Winnstr</A>, "winnstr");
+
+      <FONT COLOR=red><A NAME="1689_7">N</A></FONT>   : Integer := <A HREF="terminal_interface-curses__ads.htm#1333_20">Len</A>;
+      <FONT COLOR=red><A NAME="1690_7">Txt</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A>'Length);
+      <FONT COLOR=red><A NAME="1691_7">Cnt</A></FONT> : Natural;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1689_7">N</A> &lt; 0 <b>then</b>
+         <A HREF="terminal_interface-curses__adb.htm#1689_7">N</A> := <A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A>'Length;
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1689_7">N</A> &gt; <A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A>'Length <b>then</b>
+         <b>raise</b> Constraint_Error;
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses__adb.htm#1690_7">Txt</A> (0) := <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char'First;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1684_16">Winnstr</A> (<A HREF="terminal_interface-curses__ads.htm#1331_20">Win</A>, <A HREF="terminal_interface-curses__adb.htm#1690_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#1689_7">N</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+      To_Ada (<A HREF="terminal_interface-curses__adb.htm#1690_7">Txt</A>, <A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A>, <A HREF="terminal_interface-curses__adb.htm#1691_7">Cnt</A>, True);
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1691_7">Cnt</A> &lt; <A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A>'Length <b>then</b>
+         <A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A> ((<A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A>'First + <A HREF="terminal_interface-curses__adb.htm#1691_7">Cnt</A>) .. <A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A>'Last) := (<b>others</b> =&gt; ' ');
+      <b>end</b> <b>if</b>;
+   <b>end</b> Peek;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1338_14">Peek</A><FONT COLOR=red><A NAME="1709_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1338_20">Win</A>    : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1339_20">Line</A>   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1340_20">Column</A> : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1341_20">Str</A>    : <b>out</b> String;
+      <A HREF="terminal_interface-curses__ads.htm#1342_20">Len</A>    : <b>in</b>  Integer := -1)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#503_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#1338_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1339_20">Line</A>, <A HREF="terminal_interface-curses__ads.htm#1340_20">Column</A>);
+      <A HREF="terminal_interface-curses__ads.htm#1338_14">Peek</A> (<A HREF="terminal_interface-curses__ads.htm#1338_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1341_20">Str</A>, <A HREF="terminal_interface-curses__ads.htm#1342_20">Len</A>);
+   <b>end</b> Peek;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1351_14">Peek</A><FONT COLOR=red><A NAME="1721_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1351_20">Win</A> : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#374_9">Attributed_String</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1353_20">Len</A> : <b>in</b>  Integer := -1)
+   <b>is</b>
+      <b>type</b> Chtype_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>;
+      <b>function</b> <FONT COLOR=red><A NAME="1727_16">Winchnstr</A></FONT> (<FONT COLOR=red><A NAME="1727_27">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                          Str : Chtype_Ptr;
+                          <FONT COLOR=red><A NAME="1729_27">Len</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1727_16">Winchnstr</A>, "winchnstr");
+
+      <FONT COLOR=red><A NAME="1732_7">N</A></FONT>   : Integer := <A HREF="terminal_interface-curses__ads.htm#1353_20">Len</A>;
+      <FONT COLOR=red><A NAME="1733_7">Txt</A></FONT> : <A HREF="terminal_interface-curses__adb.htm#58_9">chtype_array</A> (0 .. <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A>'Length);
+      <FONT COLOR=red><A NAME="1734_7">Cnt</A></FONT> : Natural := 0;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1732_7">N</A> &lt; 0 <b>then</b>
+         <A HREF="terminal_interface-curses__adb.htm#1732_7">N</A> := <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A>'Length;
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1732_7">N</A> &gt; <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A>'Length <b>then</b>
+         <b>raise</b> Constraint_Error;
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1727_16">Winchnstr</A> (<A HREF="terminal_interface-curses__ads.htm#1351_20">Win</A>, <A HREF="terminal_interface-curses__adb.htm#1733_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#1733_7">Txt</A>'First)'<b>Access</b>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#1732_7">N</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+      <b>for</b> <FONT COLOR=red><A NAME="1745_11">To</A></FONT> <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A>'<b>Range</b> <b>loop</b>
+         <b>exit</b> <b>when</b> <A HREF="terminal_interface-curses__adb.htm#1733_7">Txt</A> (size_t (<A HREF="terminal_interface-curses__adb.htm#1734_7">Cnt</A>)) = <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+         <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A> (<A HREF="terminal_interface-curses__adb.htm#1745_11">To</A>) := <A HREF="terminal_interface-curses__adb.htm#1733_7">Txt</A> (size_t (<A HREF="terminal_interface-curses__adb.htm#1734_7">Cnt</A>));
+         <A HREF="terminal_interface-curses__adb.htm#1734_7">Cnt</A> := <A HREF="terminal_interface-curses__adb.htm#1734_7">Cnt</A> + 1;
+      <b>end</b> <b>loop</b>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1734_7">Cnt</A> &lt; <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A>'Length <b>then</b>
+         <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A> ((<A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A>'First + <A HREF="terminal_interface-curses__adb.htm#1734_7">Cnt</A>) .. <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A>'Last) :=
+           (<b>others</b> =&gt; (Ch =&gt; ' ',
+                       Color =&gt; <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First,
+                       Attr =&gt; <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>));
+      <b>end</b> <b>if</b>;
+   <b>end</b> Peek;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1358_14">Peek</A><FONT COLOR=red><A NAME="1758_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1358_20">Win</A>    : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1359_20">Line</A>   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1360_20">Column</A> : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1361_20">Str</A>    : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#374_9">Attributed_String</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1362_20">Len</A>    : <b>in</b> Integer := -1)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#503_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#1358_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1359_20">Line</A>, <A HREF="terminal_interface-curses__ads.htm#1360_20">Column</A>);
+      <A HREF="terminal_interface-curses__ads.htm#1358_14">Peek</A> (<A HREF="terminal_interface-curses__ads.htm#1358_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1361_20">Str</A>, <A HREF="terminal_interface-curses__ads.htm#1362_20">Len</A>);
+   <b>end</b> Peek;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1372_14">Get</A><FONT COLOR=red><A NAME="1770_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1372_19">Win</A> : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+                  <A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A> : <b>out</b> String;
+                  <A HREF="terminal_interface-curses__ads.htm#1374_19">Len</A> : <b>in</b>  Integer := -1)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1774_16">Wgetnstr</A></FONT> (<FONT COLOR=red><A NAME="1774_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                         <FONT COLOR=red><A NAME="1775_26">Str</A></FONT> : char_array;
+                         <FONT COLOR=red><A NAME="1776_26">Len</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1774_16">Wgetnstr</A>, "wgetnstr");
+
+      <FONT COLOR=red><A NAME="1779_7">N</A></FONT>   : Integer := <A HREF="terminal_interface-curses__ads.htm#1374_19">Len</A>;
+      <FONT COLOR=red><A NAME="1780_7">Txt</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A>'Length);
+      <FONT COLOR=red><A NAME="1781_7">Cnt</A></FONT> : Natural;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1779_7">N</A> &lt; 0 <b>then</b>
+         <A HREF="terminal_interface-curses__adb.htm#1779_7">N</A> := <A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A>'Length;
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1779_7">N</A> &gt; <A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A>'Length <b>then</b>
+         <b>raise</b> Constraint_Error;
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses__adb.htm#1780_7">Txt</A> (0) := <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char'First;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1774_16">Wgetnstr</A> (<A HREF="terminal_interface-curses__ads.htm#1372_19">Win</A>, <A HREF="terminal_interface-curses__adb.htm#1780_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#1779_7">N</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+      To_Ada (<A HREF="terminal_interface-curses__adb.htm#1780_7">Txt</A>, <A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A>, <A HREF="terminal_interface-curses__adb.htm#1781_7">Cnt</A>, True);
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1781_7">Cnt</A> &lt; <A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A>'Length <b>then</b>
+         <A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A> ((<A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A>'First + <A HREF="terminal_interface-curses__adb.htm#1781_7">Cnt</A>) .. <A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A>'Last) := (<b>others</b> =&gt; ' ');
+      <b>end</b> <b>if</b>;
+   <b>end</b> Get;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1378_14">Get</A><FONT COLOR=red><A NAME="1799_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1378_19">Win</A>    : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1379_19">Line</A>   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1380_19">Column</A> : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1381_19">Str</A>    : <b>out</b> String;
+      <A HREF="terminal_interface-curses__ads.htm#1382_19">Len</A>    : <b>in</b>  Integer := -1)
+   <b>is</b>
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__ads.htm#503_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#1378_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1379_19">Line</A>, <A HREF="terminal_interface-curses__ads.htm#1380_19">Column</A>);
+      <A HREF="terminal_interface-curses__ads.htm#1378_14">Get</A> (<A HREF="terminal_interface-curses__ads.htm#1378_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1381_19">Str</A>, <A HREF="terminal_interface-curses__ads.htm#1382_19">Len</A>);
+   <b>end</b> Get;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1400_14">Init_Soft_Label_Keys</A><FONT COLOR=red><A NAME="1811_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1401_7">Format</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1392_9">Soft_Label_Key_Format</A> := <A HREF="terminal_interface-curses__ads.htm#1392_35">Three_Two_Three</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1814_16">Slk_Init</A></FONT> (<FONT COLOR=red><A NAME="1814_26">Fmt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1814_16">Slk_Init</A>, "slk_init");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1814_16">Slk_Init</A> (<A HREF="terminal_interface-curses__ads.htm#1392_9">Soft_Label_Key_Format</A>'Pos (<A HREF="terminal_interface-curses__ads.htm#1401_7">Format</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Init_Soft_Label_Keys;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1406_14">Set_Soft_Label_Key</A><FONT COLOR=red><A NAME="1822_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1406_34">Label</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1396_9">Label_Number</A>;
+                                 <A HREF="terminal_interface-curses__ads.htm#1407_34">Text</A>  : <b>in</b> String;
+                                 <A HREF="terminal_interface-curses__ads.htm#1408_34">Fmt</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1397_9">Label_Justification</A> := <A HREF="terminal_interface-curses__ads.htm#1397_33">Left</A>)
+   <b>is</b>
+      <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+      <b>function</b> <FONT COLOR=red><A NAME="1827_16">Slk_Set</A></FONT> (<FONT COLOR=red><A NAME="1827_25">Label</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                        Txt   : Char_Ptr;
+                        <FONT COLOR=red><A NAME="1829_25">Fmt</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1827_16">Slk_Set</A>, "slk_set");
+
+      <FONT COLOR=red><A NAME="1832_7">Txt</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#1407_34">Text</A>'Length);
+      <FONT COLOR=red><A NAME="1833_7">Len</A></FONT> : size_t;
+   <b>begin</b>
+      To_C (<A HREF="terminal_interface-curses__ads.htm#1407_34">Text</A>, <A HREF="terminal_interface-curses__adb.htm#1832_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#1833_7">Len</A>);
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1827_16">Slk_Set</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1406_34">Label</A>),
+                  <A HREF="terminal_interface-curses__adb.htm#1832_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#1832_7">Txt</A>'First)'<b>Access</b>,
+                  <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1397_9">Label_Justification</A>'Pos (<A HREF="terminal_interface-curses__ads.htm#1408_34">Fmt</A>)))
+        = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Soft_Label_Key;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1413_14">Refresh_Soft_Label_Keys</A><FONT COLOR=red><A NAME="1844_14"></A></FONT>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1846_16">Slk_Refresh</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1846_16">Slk_Refresh</A>, "slk_refresh");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1846_16">Slk_Refresh</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Refresh_Soft_Label_Keys;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1418_14">Refresh_Soft_Label_Keys_Without_Update</A><FONT COLOR=red><A NAME="1854_14"></A></FONT>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1856_16">Slk_Noutrefresh</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1856_16">Slk_Noutrefresh</A>, "slk_noutrefresh");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1856_16">Slk_Noutrefresh</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Refresh_Soft_Label_Keys_Without_Update;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1423_14">Get_Soft_Label_Key</A><FONT COLOR=red><A NAME="1864_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1423_34">Label</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1396_9">Label_Number</A>;
+                                 <A HREF="terminal_interface-curses__ads.htm#1424_34">Text</A>  : <b>out</b> String)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1867_16">Slk_Label</A></FONT> (<FONT COLOR=red><A NAME="1867_27">Label</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> chars_ptr;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1867_16">Slk_Label</A>, "slk_label");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#1867_16">Slk_Label</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1423_34">Label</A>)), <A HREF="terminal_interface-curses__ads.htm#1424_34">Text</A>);
+   <b>end</b> Get_Soft_Label_Key;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1428_13">Get_Soft_Label_Key</A><FONT COLOR=red><A NAME="1873_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1428_33">Label</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1396_9">Label_Number</A>) <b>return</b> String
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1875_16">Slk_Label</A></FONT> (<FONT COLOR=red><A NAME="1875_27">Label</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> chars_ptr;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1875_16">Slk_Label</A>, "slk_label");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#1875_16">Slk_Label</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1428_33">Label</A>)));
+   <b>end</b> Get_Soft_Label_Key;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1434_14">Clear_Soft_Label_Keys</A><FONT COLOR=red><A NAME="1881_14"></A></FONT>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1883_16">Slk_Clear</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1883_16">Slk_Clear</A>, "slk_clear");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1883_16">Slk_Clear</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Clear_Soft_Label_Keys;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1439_14">Restore_Soft_Label_Keys</A><FONT COLOR=red><A NAME="1891_14"></A></FONT>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1893_16">Slk_Restore</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1893_16">Slk_Restore</A>, "slk_restore");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1893_16">Slk_Restore</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Restore_Soft_Label_Keys;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1444_14">Touch_Soft_Label_Keys</A><FONT COLOR=red><A NAME="1901_14"></A></FONT>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1903_16">Slk_Touch</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1903_16">Slk_Touch</A>, "slk_touch");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1903_16">Slk_Touch</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Touch_Soft_Label_Keys;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1449_14">Switch_Soft_Label_Key_Attributes</A><FONT COLOR=red><A NAME="1911_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1450_7">Attr</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1451_7">On</A>   : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1915_16">Slk_Attron</A></FONT> (<FONT COLOR=red><A NAME="1915_28">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1915_16">Slk_Attron</A>, "slk_attron");
+      <b>function</b> <FONT COLOR=red><A NAME="1917_16">Slk_Attroff</A></FONT> (<FONT COLOR=red><A NAME="1917_29">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1917_16">Slk_Attroff</A>, "slk_attroff");
+
+      <FONT COLOR=red><A NAME="1920_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <FONT COLOR=red><A NAME="1921_7">Ch</A></FONT>  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := (Ch    =&gt; Character'First,
+                                              Attr  =&gt; <A HREF="terminal_interface-curses__ads.htm#1450_7">Attr</A>,
+                                              Color =&gt; <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__ads.htm#1451_7">On</A> <b>then</b>
+         <A HREF="terminal_interface-curses__adb.htm#1920_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#1915_16">Slk_Attron</A>  (<A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__adb.htm#1921_7">Ch</A>));
+      <b>else</b>
+         <A HREF="terminal_interface-curses__adb.htm#1920_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#1917_16">Slk_Attroff</A> (<A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__adb.htm#1921_7">Ch</A>));
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1920_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Switch_Soft_Label_Key_Attributes;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1457_14">Set_Soft_Label_Key_Attributes</A><FONT COLOR=red><A NAME="1935_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1458_7">Attr</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1459_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1939_16">Slk_Attrset</A></FONT> (<FONT COLOR=red><A NAME="1939_29">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1939_16">Slk_Attrset</A>, "slk_attrset");
+
+      <FONT COLOR=red><A NAME="1942_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := (Ch    =&gt; Character'First,
+                                             Attr  =&gt; <A HREF="terminal_interface-curses__ads.htm#1458_7">Attr</A>,
+                                             Color =&gt; <A HREF="terminal_interface-curses__ads.htm#1459_7">Color</A>);
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1939_16">Slk_Attrset</A> (<A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__adb.htm#1942_7">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Soft_Label_Key_Attributes;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1464_13">Get_Soft_Label_Key_Attributes</A><FONT COLOR=red><A NAME="1951_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1953_16">Slk_Attr</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1953_16">Slk_Attr</A>, "slk_attr");
+
+      <FONT COLOR=red><A NAME="1956_7">Attr</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A> := <A HREF="terminal_interface-curses__adb.htm#1953_16">Slk_Attr</A>;
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#1956_7">Attr</A>).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+   <b>end</b> Get_Soft_Label_Key_Attributes;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1468_13">Get_Soft_Label_Key_Attributes</A><FONT COLOR=red><A NAME="1961_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1963_16">Slk_Attr</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1963_16">Slk_Attr</A>, "slk_attr");
+
+      <FONT COLOR=red><A NAME="1966_7">Attr</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A> := <A HREF="terminal_interface-curses__adb.htm#1963_16">Slk_Attr</A>;
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#1966_7">Attr</A>).<A HREF="terminal_interface-curses__ads.htm#353_10">Color</A>;
+   <b>end</b> Get_Soft_Label_Key_Attributes;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1473_14">Set_Soft_Label_Key_Color</A><FONT COLOR=red><A NAME="1971_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1473_40">Pair</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1973_16">Slk_Color</A></FONT> (<FONT COLOR=red><A NAME="1973_27">Color</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1973_16">Slk_Color</A>, "slk_color");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1973_16">Slk_Color</A> (<A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1473_40">Pair</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Soft_Label_Key_Color;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1482_14">Enable_Key</A><FONT COLOR=red><A NAME="1982_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1482_26">Key</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A>;
+                         <A HREF="terminal_interface-curses__ads.htm#1483_26">Enable</A> : <b>in</b> Boolean := True)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="1985_16">Keyok</A></FONT> (<FONT COLOR=red><A NAME="1985_23">Keycode</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                      <FONT COLOR=red><A NAME="1986_23">On_Off</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1985_16">Keyok</A>, "keyok");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1985_16">Keyok</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1482_26">Key</A>), <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#1483_26">Enable</A>)))
+        = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Enable_Key;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1492_14">Define_Key</A><FONT COLOR=red><A NAME="1995_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1492_26">Definition</A> : <b>in</b> String;
+                         <A HREF="terminal_interface-curses__ads.htm#1493_26">Key</A>        : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A>)
+   <b>is</b>
+      <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+      <b>function</b> <FONT COLOR=red><A NAME="1999_16">Defkey</A></FONT> (Def : Char_Ptr;
+                       <FONT COLOR=red><A NAME="2000_24">Key</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1999_16">Defkey</A>, "define_key");
+
+      <FONT COLOR=red><A NAME="2003_7">Txt</A></FONT>    : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#1492_26">Definition</A>'Length);
+      <FONT COLOR=red><A NAME="2004_7">Length</A></FONT> : size_t;
+   <b>begin</b>
+      To_C (<A HREF="terminal_interface-curses__ads.htm#1492_26">Definition</A>, <A HREF="terminal_interface-curses__adb.htm#2003_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#2004_7">Length</A>);
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1999_16">Defkey</A> (<A HREF="terminal_interface-curses__adb.htm#2003_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#2003_7">Txt</A>'First)'<b>Access</b>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1493_26">Key</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Define_Key;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1516_14">Un_Control</A><FONT COLOR=red><A NAME="2012_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1516_26">Ch</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>;
+                         <A HREF="terminal_interface-curses__ads.htm#1517_26">Str</A> : <b>out</b> String)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2015_16">Unctrl</A></FONT> (<FONT COLOR=red><A NAME="2015_24">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> chars_ptr;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2015_16">Unctrl</A>, "unctrl");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#2015_16">Unctrl</A> (<A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#1516_26">Ch</A>)), <A HREF="terminal_interface-curses__ads.htm#1517_26">Str</A>);
+   <b>end</b> Un_Control;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1521_13">Un_Control</A><FONT COLOR=red><A NAME="2021_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1521_25">Ch</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>) <b>return</b> String
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2023_16">Unctrl</A></FONT> (<FONT COLOR=red><A NAME="2023_24">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> chars_ptr;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2023_16">Unctrl</A>, "unctrl");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#2023_16">Unctrl</A> (<A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#1521_25">Ch</A>)));
+   <b>end</b> Un_Control;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1527_14">Delay_Output</A><FONT COLOR=red><A NAME="2029_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1527_28">Msecs</A> : <b>in</b> Natural)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2031_16">Delayoutput</A></FONT> (<FONT COLOR=red><A NAME="2031_29">Msecs</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2031_16">Delayoutput</A>, "delay_output");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2031_16">Delayoutput</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1527_28">Msecs</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Delay_Output;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1532_14">Flush_Input</A><FONT COLOR=red><A NAME="2039_14"></A></FONT>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2041_16">Flushinp</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2041_16">Flushinp</A>, "flushinp");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2041_16">Flushinp</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>  <FONT COLOR=green><EM>-- docu says that never happens, but...</EM></FONT>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Flush_Input;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1541_13">Baudrate</A><FONT COLOR=red><A NAME="2049_13"></A></FONT> <b>return</b> Natural
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2051_16">Baud</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2051_16">Baud</A>, "baudrate");
+   <b>begin</b>
+      <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#2051_16">Baud</A>);
+   <b>end</b> Baudrate;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1546_13">Erase_Character</A><FONT COLOR=red><A NAME="2057_13"></A></FONT> <b>return</b> Character
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2059_16">Erasechar</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2059_16">Erasechar</A>, "erasechar");
+   <b>begin</b>
+      <b>return</b> Character'Val (<A HREF="terminal_interface-curses__adb.htm#2059_16">Erasechar</A>);
+   <b>end</b> Erase_Character;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1551_13">Kill_Character</A><FONT COLOR=red><A NAME="2065_13"></A></FONT> <b>return</b> Character
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2067_16">Killchar</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2067_16">Killchar</A>, "killchar");
+   <b>begin</b>
+      <b>return</b> Character'Val (<A HREF="terminal_interface-curses__adb.htm#2067_16">Killchar</A>);
+   <b>end</b> Kill_Character;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1556_13">Has_Insert_Character</A><FONT COLOR=red><A NAME="2073_13"></A></FONT> <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2075_16">Has_Ic</A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2075_16">Has_Ic</A>, "has_ic");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2075_16">Has_Ic</A> = <A HREF="terminal_interface-curses__ads.htm#1736_4">Curses_Bool_False</A> <b>then</b>
+         <b>return</b> False;
+      <b>else</b>
+         <b>return</b> True;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Has_Insert_Character;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1561_13">Has_Insert_Line</A><FONT COLOR=red><A NAME="2085_13"></A></FONT> <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2087_16">Has_Il</A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2087_16">Has_Il</A>, "has_il");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2087_16">Has_Il</A> = <A HREF="terminal_interface-curses__ads.htm#1736_4">Curses_Bool_False</A> <b>then</b>
+         <b>return</b> False;
+      <b>else</b>
+         <b>return</b> True;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Has_Insert_Line;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1566_13">Supported_Attributes</A><FONT COLOR=red><A NAME="2097_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2099_16">Termattrs</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2099_16">Termattrs</A>, "termattrs");
+
+      <FONT COLOR=red><A NAME="2102_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#2099_16">Termattrs</A>);
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses__adb.htm#2102_7">Ch</A>.<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+   <b>end</b> Supported_Attributes;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1571_14">Long_Name</A><FONT COLOR=red><A NAME="2107_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1571_25">Name</A> : <b>out</b> String)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2109_16">Longname</A></FONT> <b>return</b> chars_ptr;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2109_16">Longname</A>, "longname");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#2109_16">Longname</A>, <A HREF="terminal_interface-curses__ads.htm#1571_25">Name</A>);
+   <b>end</b> Long_Name;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1575_13">Long_Name</A><FONT COLOR=red><A NAME="2115_13"></A></FONT> <b>return</b> String
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2117_16">Longname</A></FONT> <b>return</b> chars_ptr;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2117_16">Longname</A>, "longname");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#2117_16">Longname</A>);
+   <b>end</b> Long_Name;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1581_14">Terminal_Name</A><FONT COLOR=red><A NAME="2123_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1581_29">Name</A> : <b>out</b> String)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2125_16">Termname</A></FONT> <b>return</b> chars_ptr;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2125_16">Termname</A>, "termname");
+   <b>begin</b>
+      <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#2125_16">Termname</A>, <A HREF="terminal_interface-curses__ads.htm#1581_29">Name</A>);
+   <b>end</b> Terminal_Name;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1585_13">Terminal_Name</A><FONT COLOR=red><A NAME="2131_13"></A></FONT> <b>return</b> String
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2133_16">Termname</A></FONT> <b>return</b> chars_ptr;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2133_16">Termname</A>, "termname");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#2133_16">Termname</A>);
+   <b>end</b> Terminal_Name;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1600_14">Init_Pair</A><FONT COLOR=red><A NAME="2139_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1600_25">Pair</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#298_12">Redefinable_Color_Pair</A>;
+                        <A HREF="terminal_interface-curses__ads.htm#1601_25">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A>;
+                        <A HREF="terminal_interface-curses__ads.htm#1602_25">Back</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2143_16">Initpair</A></FONT> (<FONT COLOR=red><A NAME="2143_26">Pair</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+                         <FONT COLOR=red><A NAME="2144_26">Fore</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+                         <FONT COLOR=red><A NAME="2145_26">Back</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2143_16">Initpair</A>, "init_pair");
+   <b>begin</b>
+      <b>if</b> Integer (<A HREF="terminal_interface-curses__ads.htm#1600_25">Pair</A>) &gt;= <A HREF="terminal_interface-curses__ads.htm#422_13">Number_Of_Color_Pairs</A> <b>then</b>
+         <b>raise</b> Constraint_Error;
+      <b>end</b> <b>if</b>;
+      <b>if</b> Integer (<A HREF="terminal_interface-curses__ads.htm#1601_25">Fore</A>) &gt;= <A HREF="terminal_interface-curses__ads.htm#419_13">Number_Of_Colors</A> <b>or</b> <b>else</b>
+        Integer (<A HREF="terminal_interface-curses__ads.htm#1602_25">Back</A>) &gt;= <A HREF="terminal_interface-curses__ads.htm#419_13">Number_Of_Colors</A> <b>then</b> <b>raise</b> Constraint_Error;
+      <b>end</b> <b>if</b>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2143_16">Initpair</A> (<A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1600_25">Pair</A>), <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1601_25">Fore</A>), <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1602_25">Back</A>))
+        = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Init_Pair;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1607_14">Pair_Content</A><FONT COLOR=red><A NAME="2160_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1607_28">Pair</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>;
+                           <A HREF="terminal_interface-curses__ads.htm#1608_28">Fore</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A>;
+                           <A HREF="terminal_interface-curses__ads.htm#1609_28">Back</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A>)
+   <b>is</b>
+      <b>type</b> C_Short_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+      <b>function</b> <FONT COLOR=red><A NAME="2165_16">Paircontent</A></FONT> (<FONT COLOR=red><A NAME="2165_29">Pair</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+                            Fp   : C_Short_Access;
+                            Bp   : C_Short_Access) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2165_16">Paircontent</A>, "pair_content");
+
+      <FONT COLOR=red><A NAME="2170_7">F</A></FONT>, <FONT COLOR=red><A NAME="2170_10">B</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2165_16">Paircontent</A> (<A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1607_28">Pair</A>), <A HREF="terminal_interface-curses__adb.htm#2170_7">F</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#2170_10">B</A>'<b>Access</b>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>else</b>
+         <A HREF="terminal_interface-curses__ads.htm#1608_28">Fore</A> := <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> (<A HREF="terminal_interface-curses__adb.htm#2170_7">F</A>);
+         <A HREF="terminal_interface-curses__ads.htm#1609_28">Back</A> := <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> (<A HREF="terminal_interface-curses__adb.htm#2170_10">B</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Pair_Content;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1614_13">Has_Colors</A><FONT COLOR=red><A NAME="2180_13"></A></FONT> <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2182_16">Hascolors</A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2182_16">Hascolors</A>, "has_colors");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2182_16">Hascolors</A> = <A HREF="terminal_interface-curses__ads.htm#1736_4">Curses_Bool_False</A> <b>then</b>
+         <b>return</b> False;
+      <b>else</b>
+         <b>return</b> True;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Has_Colors;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1619_14">Init_Color</A><FONT COLOR=red><A NAME="2192_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1619_26">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A>;
+                         <A HREF="terminal_interface-curses__ads.htm#1620_26">Red</A>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>;
+                         <A HREF="terminal_interface-curses__ads.htm#1621_26">Green</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>;
+                         <A HREF="terminal_interface-curses__ads.htm#1622_26">Blue</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2197_16">Initcolor</A></FONT> (<FONT COLOR=red><A NAME="2197_27">Col</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+                          <FONT COLOR=red><A NAME="2198_27">Red</A></FONT>   : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+                          <FONT COLOR=red><A NAME="2199_27">Green</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+                          <FONT COLOR=red><A NAME="2200_27">Blue</A></FONT>  : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2197_16">Initcolor</A>, "init_color");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2197_16">Initcolor</A> (<A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1619_26">Color</A>), <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1620_26">Red</A>), <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1621_26">Green</A>),
+                    <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1622_26">Blue</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+            <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Init_Color;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1627_13">Can_Change_Color</A><FONT COLOR=red><A NAME="2209_13"></A></FONT> <b>return</b> Boolean
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2211_16">Canchangecolor</A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2211_16">Canchangecolor</A>, "can_change_color");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2211_16">Canchangecolor</A> = <A HREF="terminal_interface-curses__ads.htm#1736_4">Curses_Bool_False</A> <b>then</b>
+         <b>return</b> False;
+      <b>else</b>
+         <b>return</b> True;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Can_Change_Color;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1632_14">Color_Content</A><FONT COLOR=red><A NAME="2221_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1632_29">Color</A> : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A>;
+                            <A HREF="terminal_interface-curses__ads.htm#1633_29">Red</A>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>;
+                            <A HREF="terminal_interface-curses__ads.htm#1634_29">Green</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>;
+                            <A HREF="terminal_interface-curses__ads.htm#1635_29">Blue</A>  : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>)
+   <b>is</b>
+      <b>type</b> C_Short_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+
+      <b>function</b> <FONT COLOR=red><A NAME="2228_16">Colorcontent</A></FONT> (<FONT COLOR=red><A NAME="2228_30">Color</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>; R, G, B : C_Short_Access)
+                             <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2228_16">Colorcontent</A>, "color_content");
+
+      <FONT COLOR=red><A NAME="2232_7">R</A></FONT>, <FONT COLOR=red><A NAME="2232_10">G</A></FONT>, <FONT COLOR=red><A NAME="2232_13">B</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2228_16">Colorcontent</A> (<A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1632_29">Color</A>), <A HREF="terminal_interface-curses__adb.htm#2232_7">R</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#2232_10">G</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#2232_13">B</A>'<b>Access</b>) =
+        <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>else</b>
+         <A HREF="terminal_interface-curses__ads.htm#1633_29">Red</A>   := <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A> (<A HREF="terminal_interface-curses__adb.htm#2232_7">R</A>);
+         <A HREF="terminal_interface-curses__ads.htm#1634_29">Green</A> := <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A> (<A HREF="terminal_interface-curses__adb.htm#2232_10">G</A>);
+         <A HREF="terminal_interface-curses__ads.htm#1635_29">Blue</A>  := <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A> (<A HREF="terminal_interface-curses__adb.htm#2232_13">B</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Color_Content;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1648_14">Save_Curses_Mode</A><FONT COLOR=red><A NAME="2245_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1648_32">Mode</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1645_9">Curses_Mode</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2247_16">Def_Prog_Mode</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2247_16">Def_Prog_Mode</A>, "def_prog_mode");
+      <b>function</b> <FONT COLOR=red><A NAME="2249_16">Def_Shell_Mode</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2249_16">Def_Shell_Mode</A>, "def_shell_mode");
+
+      <FONT COLOR=red><A NAME="2252_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+   <b>begin</b>
+      <b>case</b> <A HREF="terminal_interface-curses__ads.htm#1648_32">Mode</A> <b>is</b>
+         <b>when</b> <A HREF="terminal_interface-curses__ads.htm#1645_25">Curses</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#2252_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#2247_16">Def_Prog_Mode</A>;
+         <b>when</b> <A HREF="terminal_interface-curses__ads.htm#1645_33">Shell</A>  =&gt; <A HREF="terminal_interface-curses__adb.htm#2252_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#2249_16">Def_Shell_Mode</A>;
+      <b>end</b> <b>case</b>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2252_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Save_Curses_Mode;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1654_14">Reset_Curses_Mode</A><FONT COLOR=red><A NAME="2263_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1654_33">Mode</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1645_9">Curses_Mode</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2265_16">Reset_Prog_Mode</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2265_16">Reset_Prog_Mode</A>, "reset_prog_mode");
+      <b>function</b> <FONT COLOR=red><A NAME="2267_16">Reset_Shell_Mode</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2267_16">Reset_Shell_Mode</A>, "reset_shell_mode");
+
+      <FONT COLOR=red><A NAME="2270_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+   <b>begin</b>
+      <b>case</b> <A HREF="terminal_interface-curses__ads.htm#1654_33">Mode</A> <b>is</b>
+         <b>when</b> <A HREF="terminal_interface-curses__ads.htm#1645_25">Curses</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#2270_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#2265_16">Reset_Prog_Mode</A>;
+         <b>when</b> <A HREF="terminal_interface-curses__ads.htm#1645_33">Shell</A>  =&gt; <A HREF="terminal_interface-curses__adb.htm#2270_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#2267_16">Reset_Shell_Mode</A>;
+      <b>end</b> <b>case</b>;
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2270_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Reset_Curses_Mode;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1660_14">Save_Terminal_State</A><FONT COLOR=red><A NAME="2281_14"></A></FONT>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2283_16">Savetty</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2283_16">Savetty</A>, "savetty");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2283_16">Savetty</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Save_Terminal_State;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1665_14">Reset_Terminal_State</A><FONT COLOR=red><A NAME="2291_14"></A></FONT>
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2293_16">Resetty</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2293_16">Resetty</A>, "resetty");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2293_16">Resetty</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Reset_Terminal_State;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1678_14">Rip_Off_Lines</A><FONT COLOR=red><A NAME="2301_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1678_29">Lines</A> : <b>in</b> Integer;
+                            <A HREF="terminal_interface-curses__ads.htm#1679_29">Proc</A>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1669_9">Stdscr_Init_Proc</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2304_16">Ripoffline</A></FONT> (<FONT COLOR=red><A NAME="2304_28">Lines</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+                           <FONT COLOR=red><A NAME="2305_28">Proc</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#1669_9">Stdscr_Init_Proc</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2304_16">Ripoffline</A>, "_nc_ripoffline");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2304_16">Ripoffline</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1678_29">Lines</A>), <A HREF="terminal_interface-curses__ads.htm#1679_29">Proc</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Rip_Off_Lines;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1690_14">Set_Cursor_Visibility</A><FONT COLOR=red><A NAME="2313_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1690_37">Visibility</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#1687_9">Cursor_Visibility</A>)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2315_16">Curs_Set</A></FONT> (<FONT COLOR=red><A NAME="2315_26">Curs</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2315_16">Curs_Set</A>, "curs_set");
+
+      <FONT COLOR=red><A NAME="2318_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+   <b>begin</b>
+      <A HREF="terminal_interface-curses__adb.htm#2318_7">Res</A> := <A HREF="terminal_interface-curses__adb.htm#2315_16">Curs_Set</A> (<A HREF="terminal_interface-curses__ads.htm#1687_9">Cursor_Visibility</A>'Pos (<A HREF="terminal_interface-curses__ads.htm#1690_37">Visibility</A>));
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2318_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <A HREF="terminal_interface-curses__ads.htm#1690_37">Visibility</A> := <A HREF="terminal_interface-curses__ads.htm#1687_9">Cursor_Visibility</A>'Val (<A HREF="terminal_interface-curses__adb.htm#2318_7">Res</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Set_Cursor_Visibility;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1695_14">Nap_Milli_Seconds</A><FONT COLOR=red><A NAME="2326_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1695_33">Ms</A> : <b>in</b> Natural)
+   <b>is</b>
+      <b>function</b> <FONT COLOR=red><A NAME="2328_16">Napms</A></FONT> (<FONT COLOR=red><A NAME="2328_23">Ms</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2328_16">Napms</A>, "napms");
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2328_16">Napms</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1695_33">Ms</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>end</b> <b>if</b>;
+   <b>end</b> Nap_Milli_Seconds;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A><FONT COLOR=red><A NAME="2337_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+   <b>is</b>
+      <FONT COLOR=red><A NAME="2339_7">Stdscr</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2339_7">Stdscr</A>, "stdscr");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses__adb.htm#2339_7">Stdscr</A>;
+   <b>end</b> Standard_Window;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#410_13">Lines</A><FONT COLOR=red><A NAME="2345_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>
+   <b>is</b>
+      <FONT COLOR=red><A NAME="2347_7">C_Lines</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2347_7">C_Lines</A>, "LINES");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A> (<A HREF="terminal_interface-curses__adb.htm#2347_7">C_Lines</A>);
+   <b>end</b> Lines;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#413_13">Columns</A><FONT COLOR=red><A NAME="2353_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>
+   <b>is</b>
+      <FONT COLOR=red><A NAME="2355_7">C_Columns</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2355_7">C_Columns</A>, "COLS");
+   <b>begin</b>
+      <b>return</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A> (<A HREF="terminal_interface-curses__adb.htm#2355_7">C_Columns</A>);
+   <b>end</b> Columns;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#416_13">Tab_Size</A><FONT COLOR=red><A NAME="2361_13"></A></FONT> <b>return</b> Natural
+   <b>is</b>
+      <FONT COLOR=red><A NAME="2363_7">C_Tab_Size</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2363_7">C_Tab_Size</A>, "TABSIZE");
+   <b>begin</b>
+      <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#2363_7">C_Tab_Size</A>);
+   <b>end</b> Tab_Size;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#419_13">Number_Of_Colors</A><FONT COLOR=red><A NAME="2369_13"></A></FONT> <b>return</b> Natural
+   <b>is</b>
+      <FONT COLOR=red><A NAME="2371_7">C_Number_Of_Colors</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2371_7">C_Number_Of_Colors</A>, "COLORS");
+   <b>begin</b>
+      <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#2371_7">C_Number_Of_Colors</A>);
+   <b>end</b> Number_Of_Colors;
+
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#422_13">Number_Of_Color_Pairs</A><FONT COLOR=red><A NAME="2377_13"></A></FONT> <b>return</b> Natural
+   <b>is</b>
+      <FONT COLOR=red><A NAME="2379_7">C_Number_Of_Color_Pairs</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2379_7">C_Number_Of_Color_Pairs</A>, "COLOR_PAIRS");
+   <b>begin</b>
+      <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#2379_7">C_Number_Of_Color_Pairs</A>);
+   <b>end</b> Number_Of_Color_Pairs;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1703_14">Transform_Coordinates</A><FONT COLOR=red><A NAME="2385_14"></A></FONT>
+     (<A HREF="terminal_interface-curses__ads.htm#1704_7">W</A>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1705_7">Line</A>   : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1706_7">Column</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      <A HREF="terminal_interface-curses__ads.htm#1707_7">Dir</A>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1702_9">Transform_Direction</A> := <A HREF="terminal_interface-curses__ads.htm#1702_33">From_Screen</A>)
+   <b>is</b>
+      <b>type</b> Int_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>function</b> <FONT COLOR=red><A NAME="2392_16">Transform</A></FONT> (<FONT COLOR=red><A NAME="2392_27">W</A></FONT>    : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+                          Y, X : Int_Access;
+                          <FONT COLOR=red><A NAME="2394_27">Dir</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+      <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2392_16">Transform</A>, "wmouse_trafo");
+
+      <FONT COLOR=red><A NAME="2397_7">X</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1706_7">Column</A>);
+      <FONT COLOR=red><A NAME="2398_7">Y</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1705_7">Line</A>);
+      <FONT COLOR=red><A NAME="2399_7">D</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> := <A HREF="terminal_interface-curses__ads.htm#1736_4">Curses_Bool_False</A>;
+      <FONT COLOR=red><A NAME="2400_7">R</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+   <b>begin</b>
+      <b>if</b> <A HREF="terminal_interface-curses__ads.htm#1707_7">Dir</A> = <A HREF="terminal_interface-curses__ads.htm#1702_46">To_Screen</A> <b>then</b>
+         <A HREF="terminal_interface-curses__adb.htm#2399_7">D</A> := 1;
+      <b>end</b> <b>if</b>;
+      <A HREF="terminal_interface-curses__adb.htm#2400_7">R</A> := <A HREF="terminal_interface-curses__adb.htm#2392_16">Transform</A> (<A HREF="terminal_interface-curses__ads.htm#1704_7">W</A>, <A HREF="terminal_interface-curses__adb.htm#2398_7">Y</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#2397_7">X</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#2399_7">D</A>);
+      <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2400_7">R</A> = <A HREF="terminal_interface-curses-aux__ads.htm#75_4">Curses_False</A> <b>then</b>
+         <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+      <b>else</b>
+         <A HREF="terminal_interface-curses__ads.htm#1705_7">Line</A>   := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#2398_7">Y</A>);
+         <A HREF="terminal_interface-curses__ads.htm#1706_7">Column</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#2397_7">X</A>);
+      <b>end</b> <b>if</b>;
+   <b>end</b> Transform_Coordinates;
+
+<b>end</b> Terminal_Interface.Curses;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/doc/html/ada/terminal_interface-curses__ads.htm b/doc/html/ada/terminal_interface-curses__ads.htm
new file mode 100644 (file)
index 0000000..208b12a
--- /dev/null
@@ -0,0 +1,1744 @@
+<HTML><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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 1996</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.28 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</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#23_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 ("-lncurses");
+
+   <FONT COLOR=red><A NAME="53_4">NC_Major_Version</A></FONT> : <b>constant</b> := 5; <FONT COLOR=green><EM>--  Major version of the library</EM></FONT>
+   <FONT COLOR=red><A NAME="54_4">NC_Minor_Version</A></FONT> : <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="60_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>
+   <FONT COLOR=red><A NAME="87_4">Key_None</A></FONT>                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#400#;
+   <FONT COLOR=red><A NAME="88_4">Key_Code_Yes</A></FONT>                   : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#400#;
+   <FONT COLOR=red><A NAME="89_4">Key_Min</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#401#;
+   <FONT COLOR=red><A NAME="90_4">Key_Break</A></FONT>                      : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#401#;
+   <FONT COLOR=red><A NAME="91_4">Key_Cursor_Down</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#402#;
+   <FONT COLOR=red><A NAME="92_4">Key_Cursor_Up</A></FONT>                  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#403#;
+   <FONT COLOR=red><A NAME="93_4">Key_Cursor_Left</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#404#;
+   <FONT COLOR=red><A NAME="94_4">Key_Cursor_Right</A></FONT>               : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#405#;
+   <FONT COLOR=red><A NAME="95_4">Key_Home</A></FONT>                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#406#;
+   <FONT COLOR=red><A NAME="96_4">Key_Backspace</A></FONT>                  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#407#;
+   <FONT COLOR=red><A NAME="97_4">Key_F0</A></FONT>                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#410#;
+   <FONT COLOR=red><A NAME="98_4">Key_F1</A></FONT>                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#411#;
+   <FONT COLOR=red><A NAME="99_4">Key_F2</A></FONT>                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#412#;
+   <FONT COLOR=red><A NAME="100_4">Key_F3</A></FONT>                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#413#;
+   <FONT COLOR=red><A NAME="101_4">Key_F4</A></FONT>                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#414#;
+   <FONT COLOR=red><A NAME="102_4">Key_F5</A></FONT>                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#415#;
+   <FONT COLOR=red><A NAME="103_4">Key_F6</A></FONT>                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#416#;
+   <FONT COLOR=red><A NAME="104_4">Key_F7</A></FONT>                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#417#;
+   <FONT COLOR=red><A NAME="105_4">Key_F8</A></FONT>                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#420#;
+   <FONT COLOR=red><A NAME="106_4">Key_F9</A></FONT>                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#421#;
+   <FONT COLOR=red><A NAME="107_4">Key_F10</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#422#;
+   <FONT COLOR=red><A NAME="108_4">Key_F11</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#423#;
+   <FONT COLOR=red><A NAME="109_4">Key_F12</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#424#;
+   <FONT COLOR=red><A NAME="110_4">Key_F13</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#425#;
+   <FONT COLOR=red><A NAME="111_4">Key_F14</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#426#;
+   <FONT COLOR=red><A NAME="112_4">Key_F15</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#427#;
+   <FONT COLOR=red><A NAME="113_4">Key_F16</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#430#;
+   <FONT COLOR=red><A NAME="114_4">Key_F17</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#431#;
+   <FONT COLOR=red><A NAME="115_4">Key_F18</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#432#;
+   <FONT COLOR=red><A NAME="116_4">Key_F19</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#433#;
+   <FONT COLOR=red><A NAME="117_4">Key_F20</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#434#;
+   <FONT COLOR=red><A NAME="118_4">Key_F21</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#435#;
+   <FONT COLOR=red><A NAME="119_4">Key_F22</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#436#;
+   <FONT COLOR=red><A NAME="120_4">Key_F23</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#437#;
+   <FONT COLOR=red><A NAME="121_4">Key_F24</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#440#;
+   <FONT COLOR=red><A NAME="122_4">Key_Delete_Line</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#510#;
+   <FONT COLOR=red><A NAME="123_4">Key_Insert_Line</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#511#;
+   <FONT COLOR=red><A NAME="124_4">Key_Delete_Char</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#512#;
+   <FONT COLOR=red><A NAME="125_4">Key_Insert_Char</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#513#;
+   <FONT COLOR=red><A NAME="126_4">Key_Exit_Insert_Mode</A></FONT>           : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#514#;
+   <FONT COLOR=red><A NAME="127_4">Key_Clear_Screen</A></FONT>               : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#515#;
+   <FONT COLOR=red><A NAME="128_4">Key_Clear_End_Of_Screen</A></FONT>        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#516#;
+   <FONT COLOR=red><A NAME="129_4">Key_Clear_End_Of_Line</A></FONT>          : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#517#;
+   <FONT COLOR=red><A NAME="130_4">Key_Scroll_1_Forward</A></FONT>           : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#520#;
+   <FONT COLOR=red><A NAME="131_4">Key_Scroll_1_Backward</A></FONT>          : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#521#;
+   <FONT COLOR=red><A NAME="132_4">Key_Next_Page</A></FONT>                  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#522#;
+   <FONT COLOR=red><A NAME="133_4">Key_Previous_Page</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#523#;
+   <FONT COLOR=red><A NAME="134_4">Key_Set_Tab</A></FONT>                    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#524#;
+   <FONT COLOR=red><A NAME="135_4">Key_Clear_Tab</A></FONT>                  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#525#;
+   <FONT COLOR=red><A NAME="136_4">Key_Clear_All_Tabs</A></FONT>             : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#526#;
+   <FONT COLOR=red><A NAME="137_4">Key_Enter_Or_Send</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#527#;
+   <FONT COLOR=red><A NAME="138_4">Key_Soft_Reset</A></FONT>                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#530#;
+   <FONT COLOR=red><A NAME="139_4">Key_Reset</A></FONT>                      : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#531#;
+   <FONT COLOR=red><A NAME="140_4">Key_Print</A></FONT>                      : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#532#;
+   <FONT COLOR=red><A NAME="141_4">Key_Bottom</A></FONT>                     : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#533#;
+   <FONT COLOR=red><A NAME="142_4">Key_Upper_Left_Of_Keypad</A></FONT>       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#534#;
+   <FONT COLOR=red><A NAME="143_4">Key_Upper_Right_Of_Keypad</A></FONT>      : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#535#;
+   <FONT COLOR=red><A NAME="144_4">Key_Center_Of_Keypad</A></FONT>           : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#536#;
+   <FONT COLOR=red><A NAME="145_4">Key_Lower_Left_Of_Keypad</A></FONT>       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#537#;
+   <FONT COLOR=red><A NAME="146_4">Key_Lower_Right_Of_Keypad</A></FONT>      : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#540#;
+   <FONT COLOR=red><A NAME="147_4">Key_Back_Tab</A></FONT>                   : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#541#;
+   <FONT COLOR=red><A NAME="148_4">Key_Beginning</A></FONT>                  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#542#;
+   <FONT COLOR=red><A NAME="149_4">Key_Cancel</A></FONT>                     : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#543#;
+   <FONT COLOR=red><A NAME="150_4">Key_Close</A></FONT>                      : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#544#;
+   <FONT COLOR=red><A NAME="151_4">Key_Command</A></FONT>                    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#545#;
+   <FONT COLOR=red><A NAME="152_4">Key_Copy</A></FONT>                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#546#;
+   <FONT COLOR=red><A NAME="153_4">Key_Create</A></FONT>                     : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#547#;
+   <FONT COLOR=red><A NAME="154_4">Key_End</A></FONT>                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#550#;
+   <FONT COLOR=red><A NAME="155_4">Key_Exit</A></FONT>                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#551#;
+   <FONT COLOR=red><A NAME="156_4">Key_Find</A></FONT>                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#552#;
+   <FONT COLOR=red><A NAME="157_4">Key_Help</A></FONT>                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#553#;
+   <FONT COLOR=red><A NAME="158_4">Key_Mark</A></FONT>                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#554#;
+   <FONT COLOR=red><A NAME="159_4">Key_Message</A></FONT>                    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#555#;
+   <FONT COLOR=red><A NAME="160_4">Key_Move</A></FONT>                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#556#;
+   <FONT COLOR=red><A NAME="161_4">Key_Next</A></FONT>                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#557#;
+   <FONT COLOR=red><A NAME="162_4">Key_Open</A></FONT>                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#560#;
+   <FONT COLOR=red><A NAME="163_4">Key_Options</A></FONT>                    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#561#;
+   <FONT COLOR=red><A NAME="164_4">Key_Previous</A></FONT>                   : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#562#;
+   <FONT COLOR=red><A NAME="165_4">Key_Redo</A></FONT>                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#563#;
+   <FONT COLOR=red><A NAME="166_4">Key_Reference</A></FONT>                  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#564#;
+   <FONT COLOR=red><A NAME="167_4">Key_Refresh</A></FONT>                    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#565#;
+   <FONT COLOR=red><A NAME="168_4">Key_Replace</A></FONT>                    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#566#;
+   <FONT COLOR=red><A NAME="169_4">Key_Restart</A></FONT>                    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#567#;
+   <FONT COLOR=red><A NAME="170_4">Key_Resume</A></FONT>                     : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#570#;
+   <FONT COLOR=red><A NAME="171_4">Key_Save</A></FONT>                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#571#;
+   <FONT COLOR=red><A NAME="172_4">Key_Shift_Begin</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#572#;
+   <FONT COLOR=red><A NAME="173_4">Key_Shift_Cancel</A></FONT>               : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#573#;
+   <FONT COLOR=red><A NAME="174_4">Key_Shift_Command</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#574#;
+   <FONT COLOR=red><A NAME="175_4">Key_Shift_Copy</A></FONT>                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#575#;
+   <FONT COLOR=red><A NAME="176_4">Key_Shift_Create</A></FONT>               : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#576#;
+   <FONT COLOR=red><A NAME="177_4">Key_Shift_Delete_Char</A></FONT>          : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#577#;
+   <FONT COLOR=red><A NAME="178_4">Key_Shift_Delete_Line</A></FONT>          : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#600#;
+   <FONT COLOR=red><A NAME="179_4">Key_Select</A></FONT>                     : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#601#;
+   <FONT COLOR=red><A NAME="180_4">Key_Shift_End</A></FONT>                  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#602#;
+   <FONT COLOR=red><A NAME="181_4">Key_Shift_Clear_End_Of_Line</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#603#;
+   <FONT COLOR=red><A NAME="182_4">Key_Shift_Exit</A></FONT>                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#604#;
+   <FONT COLOR=red><A NAME="183_4">Key_Shift_Find</A></FONT>                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#605#;
+   <FONT COLOR=red><A NAME="184_4">Key_Shift_Help</A></FONT>                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#606#;
+   <FONT COLOR=red><A NAME="185_4">Key_Shift_Home</A></FONT>                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#607#;
+   <FONT COLOR=red><A NAME="186_4">Key_Shift_Insert_Char</A></FONT>          : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#610#;
+   <FONT COLOR=red><A NAME="187_4">Key_Shift_Cursor_Left</A></FONT>          : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#611#;
+   <FONT COLOR=red><A NAME="188_4">Key_Shift_Message</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#612#;
+   <FONT COLOR=red><A NAME="189_4">Key_Shift_Move</A></FONT>                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#613#;
+   <FONT COLOR=red><A NAME="190_4">Key_Shift_Next_Page</A></FONT>            : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#614#;
+   <FONT COLOR=red><A NAME="191_4">Key_Shift_Options</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#615#;
+   <FONT COLOR=red><A NAME="192_4">Key_Shift_Previous_Page</A></FONT>        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#616#;
+   <FONT COLOR=red><A NAME="193_4">Key_Shift_Print</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#617#;
+   <FONT COLOR=red><A NAME="194_4">Key_Shift_Redo</A></FONT>                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#620#;
+   <FONT COLOR=red><A NAME="195_4">Key_Shift_Replace</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#621#;
+   <FONT COLOR=red><A NAME="196_4">Key_Shift_Cursor_Right</A></FONT>         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#622#;
+   <FONT COLOR=red><A NAME="197_4">Key_Shift_Resume</A></FONT>               : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#623#;
+   <FONT COLOR=red><A NAME="198_4">Key_Shift_Save</A></FONT>                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#624#;
+   <FONT COLOR=red><A NAME="199_4">Key_Shift_Suspend</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#625#;
+   <FONT COLOR=red><A NAME="200_4">Key_Shift_Undo</A></FONT>                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#626#;
+   <FONT COLOR=red><A NAME="201_4">Key_Suspend</A></FONT>                    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#627#;
+   <FONT COLOR=red><A NAME="202_4">Key_Undo</A></FONT>                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#630#;
+   <FONT COLOR=red><A NAME="203_4">Key_Mouse</A></FONT>                      : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_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>
+   <FONT COLOR=red><A NAME="217_4">KEY_DOWN</A></FONT>         : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#91_4">Key_Cursor_Down</A>;
+   <FONT COLOR=red><A NAME="218_4">KEY_UP</A></FONT>           : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#92_4">Key_Cursor_Up</A>;
+   <FONT COLOR=red><A NAME="219_4">KEY_LEFT</A></FONT>         : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#93_4">Key_Cursor_Left</A>;
+   <FONT COLOR=red><A NAME="220_4">KEY_RIGHT</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#121_4">Key_Cursor_Right</A>;
+   <FONT COLOR=red><A NAME="221_4">KEY_DL</A></FONT>           : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#122_4">Key_Delete_Line</A>;
+   <FONT COLOR=red><A NAME="222_4">KEY_IL</A></FONT>           : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#123_4">Key_Insert_Line</A>;
+   <FONT COLOR=red><A NAME="223_4">KEY_DC</A></FONT>           : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#124_4">Key_Delete_Char</A>;
+   <FONT COLOR=red><A NAME="224_4">KEY_IC</A></FONT>           : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#125_4">Key_Insert_Char</A>;
+   <FONT COLOR=red><A NAME="225_4">KEY_EIC</A></FONT>          : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#126_4">Key_Exit_Insert_Mode</A>;
+   <FONT COLOR=red><A NAME="226_4">KEY_CLEAR</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#127_4">Key_Clear_Screen</A>;
+   <FONT COLOR=red><A NAME="227_4">KEY_EOS</A></FONT>          : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#128_4">Key_Clear_End_Of_Screen</A>;
+   <FONT COLOR=red><A NAME="228_4">KEY_EOL</A></FONT>          : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#129_4">Key_Clear_End_Of_Line</A>;
+   <FONT COLOR=red><A NAME="229_4">KEY_SF</A></FONT>           : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#130_4">Key_Scroll_1_Forward</A>;
+   <FONT COLOR=red><A NAME="230_4">KEY_SR</A></FONT>           : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#131_4">Key_Scroll_1_Backward</A>;
+   <FONT COLOR=red><A NAME="231_4">KEY_NPAGE</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#132_4">Key_Next_Page</A>;
+   <FONT COLOR=red><A NAME="232_4">KEY_PPAGE</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#133_4">Key_Previous_Page</A>;
+   <FONT COLOR=red><A NAME="233_4">KEY_STAB</A></FONT>         : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#134_4">Key_Set_Tab</A>;
+   <FONT COLOR=red><A NAME="234_4">KEY_CTAB</A></FONT>         : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#135_4">Key_Clear_Tab</A>;
+   <FONT COLOR=red><A NAME="235_4">KEY_CATAB</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#136_4">Key_Clear_All_Tabs</A>;
+   <FONT COLOR=red><A NAME="236_4">KEY_ENTER</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#137_4">Key_Enter_Or_Send</A>;
+   <FONT COLOR=red><A NAME="237_4">KEY_SRESET</A></FONT>       : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#140_4">Key_Soft_Reset</A>;
+   <FONT COLOR=red><A NAME="238_4">KEY_LL</A></FONT>           : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#141_4">Key_Bottom</A>;
+   <FONT COLOR=red><A NAME="239_4">KEY_A1</A></FONT>           : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#142_4">Key_Upper_Left_Of_Keypad</A>;
+   <FONT COLOR=red><A NAME="240_4">KEY_A3</A></FONT>           : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#143_4">Key_Upper_Right_Of_Keypad</A>;
+   <FONT COLOR=red><A NAME="241_4">KEY_B2</A></FONT>           : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#144_4">Key_Center_Of_Keypad</A>;
+   <FONT COLOR=red><A NAME="242_4">KEY_C1</A></FONT>           : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#145_4">Key_Lower_Left_Of_Keypad</A>;
+   <FONT COLOR=red><A NAME="243_4">KEY_C3</A></FONT>           : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#146_4">Key_Lower_Right_Of_Keypad</A>;
+   <FONT COLOR=red><A NAME="244_4">KEY_BTAB</A></FONT>         : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#147_4">Key_Back_Tab</A>;
+   <FONT COLOR=red><A NAME="245_4">KEY_BEG</A></FONT>          : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#171_4">Key_Beginning</A>;
+   <FONT COLOR=red><A NAME="246_4">KEY_SBEG</A></FONT>         : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#172_4">Key_Shift_Begin</A>;
+   <FONT COLOR=red><A NAME="247_4">KEY_SCANCEL</A></FONT>      : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#173_4">Key_Shift_Cancel</A>;
+   <FONT COLOR=red><A NAME="248_4">KEY_SCOMMAND</A></FONT>     : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#174_4">Key_Shift_Command</A>;
+   <FONT COLOR=red><A NAME="249_4">KEY_SCOPY</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#175_4">Key_Shift_Copy</A>;
+   <FONT COLOR=red><A NAME="250_4">KEY_SCREATE</A></FONT>      : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#176_4">Key_Shift_Create</A>;
+   <FONT COLOR=red><A NAME="251_4">KEY_SDC</A></FONT>          : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#177_4">Key_Shift_Delete_Char</A>;
+   <FONT COLOR=red><A NAME="252_4">KEY_SDL</A></FONT>          : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#179_4">Key_Shift_Delete_Line</A>;
+   <FONT COLOR=red><A NAME="253_4">KEY_SEND</A></FONT>         : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#180_4">Key_Shift_End</A>;
+   <FONT COLOR=red><A NAME="254_4">KEY_SEOL</A></FONT>         : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#181_4">Key_Shift_Clear_End_Of_Line</A>;
+   <FONT COLOR=red><A NAME="255_4">KEY_SEXIT</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#182_4">Key_Shift_Exit</A>;
+   <FONT COLOR=red><A NAME="256_4">KEY_SFIND</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#183_4">Key_Shift_Find</A>;
+   <FONT COLOR=red><A NAME="257_4">KEY_SHELP</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#184_4">Key_Shift_Help</A>;
+   <FONT COLOR=red><A NAME="258_4">KEY_SHOME</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#185_4">Key_Shift_Home</A>;
+   <FONT COLOR=red><A NAME="259_4">KEY_SIC</A></FONT>          : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#186_4">Key_Shift_Insert_Char</A>;
+   <FONT COLOR=red><A NAME="260_4">KEY_SLEFT</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#187_4">Key_Shift_Cursor_Left</A>;
+   <FONT COLOR=red><A NAME="261_4">KEY_SMESSAGE</A></FONT>     : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#188_4">Key_Shift_Message</A>;
+   <FONT COLOR=red><A NAME="262_4">KEY_SMOVE</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#189_4">Key_Shift_Move</A>;
+   <FONT COLOR=red><A NAME="263_4">KEY_SNEXT</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#190_4">Key_Shift_Next_Page</A>;
+   <FONT COLOR=red><A NAME="264_4">KEY_SOPTIONS</A></FONT>     : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#191_4">Key_Shift_Options</A>;
+   <FONT COLOR=red><A NAME="265_4">KEY_SPREVIOUS</A></FONT>    : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#192_4">Key_Shift_Previous_Page</A>;
+   <FONT COLOR=red><A NAME="266_4">KEY_SPRINT</A></FONT>       : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#193_4">Key_Shift_Print</A>;
+   <FONT COLOR=red><A NAME="267_4">KEY_SREDO</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#194_4">Key_Shift_Redo</A>;
+   <FONT COLOR=red><A NAME="268_4">KEY_SREPLACE</A></FONT>     : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#195_4">Key_Shift_Replace</A>;
+   <FONT COLOR=red><A NAME="269_4">KEY_SRIGHT</A></FONT>       : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#196_4">Key_Shift_Cursor_Right</A>;
+   <FONT COLOR=red><A NAME="270_4">KEY_SRSUME</A></FONT>       : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#197_4">Key_Shift_Resume</A>;
+   <FONT COLOR=red><A NAME="271_4">KEY_SSAVE</A></FONT>        : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#198_4">Key_Shift_Save</A>;
+   <FONT COLOR=red><A NAME="272_4">KEY_SSUSPEND</A></FONT>     : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#199_4">Key_Shift_Suspend</A>;
+   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#276_9"> </A>Color_Number <b>is</b> <b>range</b><A HREF="interfac__ads.htm#23_9"> </A>0 .. Integer (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>
+
+   <FONT COLOR=red><A NAME="284_4">Black</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> := 0;
+   <FONT COLOR=red><A NAME="285_4">Red</A></FONT>      : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> := 1;
+   <FONT COLOR=red><A NAME="286_4">Green</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> := 2;
+   <FONT COLOR=red><A NAME="287_4">Yellow</A></FONT>   : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> := 3;
+   <FONT COLOR=red><A NAME="288_4">Blue</A></FONT>     : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> := 4;
+   <FONT COLOR=red><A NAME="289_4">Magenta</A></FONT>  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> := 5;
+   <FONT COLOR=red><A NAME="290_4">Cyan</A></FONT>     : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> := 6;
+   White    : <b>constant</b> Color_Number := 7;
+
+   <b>type</b><A HREF="terminal_interface-curses__ads.htm#292_9"> </A>RGB_Value <b>is</b> <b>range</b><A HREF="interfac__ads.htm#23_9"> </A>0 .. Integer (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#296_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>
+         <FONT COLOR=red><A NAME="307_10">Stand_Out</A></FONT>               : Boolean;
+         <FONT COLOR=red><A NAME="308_10">Under_Line</A></FONT>              : Boolean;
+         <FONT COLOR=red><A NAME="309_10">Reverse_Video</A></FONT>           : Boolean;
+         <FONT COLOR=red><A NAME="310_10">Blink</A></FONT>                   : Boolean;
+         <FONT COLOR=red><A NAME="311_10">Dim_Character</A></FONT>           : Boolean;
+         <FONT COLOR=red><A NAME="312_10">Bold_Character</A></FONT>          : Boolean;
+         <FONT COLOR=red><A NAME="313_10">Alternate_Character_Set</A></FONT> : Boolean;
+         <FONT COLOR=red><A NAME="314_10">Invisible_Character</A></FONT>     : Boolean;
+         <FONT COLOR=red><A NAME="315_10">Protected_Character</A></FONT>     : Boolean;
+         <FONT COLOR=red><A NAME="316_10">Horizontal</A></FONT>              : Boolean;
+         <FONT COLOR=red><A NAME="317_10">Left</A></FONT>                    : Boolean;
+         <FONT COLOR=red><A NAME="318_10">Low</A></FONT>                     : Boolean;
+         <FONT COLOR=red><A NAME="319_10">Right</A></FONT>                   : Boolean;
+         <FONT COLOR=red><A NAME="320_10">Top</A></FONT>                     : Boolean;
+         Vertical                : Boolean;
+      <b>end</b> <b>record</b><A HREF="terminal_interface-curses__ads.htm#304_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 lowest 16 Bits for Attributes.</EM></FONT>
+
+   Normal_Video : <b>constant</b> Character_Attribute_Set := (<b>others</b> =&gt; False);
+
+   <b>type</b> Attributed_Character <b>is</b>
+      <b>record</b>
+         <FONT COLOR=red><A NAME="353_10">Attr</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#296_9">Character_Attribute_Set</A>;
+         <FONT COLOR=red><A NAME="354_10">Color</A></FONT> : 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    =&gt; <A HREF="terminal_interface-curses__ads.htm#296_9">Character</A>'First,
+         Color =&gt; Color_Pair'First,
+         Attr  =&gt; (<b>others</b> =&gt; 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> &lt;&gt;) <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="382_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="388_4">Eti_System_Error</A></FONT>    : <b>exception</b>;
+   <FONT COLOR=red><A NAME="389_4">Eti_Bad_Argument</A></FONT>    : <b>exception</b>;
+   <FONT COLOR=red><A NAME="390_4">Eti_Posted</A></FONT>          : <b>exception</b>;
+   <FONT COLOR=red><A NAME="391_4">Eti_Connected</A></FONT>       : <b>exception</b>;
+   <FONT COLOR=red><A NAME="392_4">Eti_Bad_State</A></FONT>       : <b>exception</b>;
+   <FONT COLOR=red><A NAME="393_4">Eti_No_Room</A></FONT>         : <b>exception</b>;
+   <FONT COLOR=red><A NAME="394_4">Eti_Not_Posted</A></FONT>      : <b>exception</b>;
+   <FONT COLOR=red><A NAME="395_4">Eti_Unknown_Command</A></FONT> : <b>exception</b>;
+   <FONT COLOR=red><A NAME="396_4">Eti_No_Match</A></FONT>        : <b>exception</b>;
+   <FONT COLOR=red><A NAME="397_4">Eti_Not_Selectable</A></FONT>  : <b>exception</b>;
+   <FONT COLOR=red><A NAME="398_4">Eti_Not_Connected</A></FONT>   : <b>exception</b>;
+   <FONT COLOR=red><A NAME="399_4">Eti_Request_Denied</A></FONT>  : <b>exception</b>;
+   <FONT COLOR=red><A NAME="400_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#410_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 characters 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>
+   <FONT COLOR=red><A NAME="435_4">ACS_Upper_Left_Corner</A></FONT>    : <b>constant</b> Character := 'l';
+   <FONT COLOR=red><A NAME="436_4">ACS_Lower_Left_Corner</A></FONT>    : <b>constant</b> Character := 'm';
+   <FONT COLOR=red><A NAME="437_4">ACS_Upper_Right_Corner</A></FONT>   : <b>constant</b> Character := 'k';
+   <FONT COLOR=red><A NAME="438_4">ACS_Lower_Right_Corner</A></FONT>   : <b>constant</b> Character := 'j';
+   <FONT COLOR=red><A NAME="439_4">ACS_Left_Tee</A></FONT>             : <b>constant</b> Character := 't';
+   <FONT COLOR=red><A NAME="440_4">ACS_Right_Tee</A></FONT>            : <b>constant</b> Character := 'u';
+   <FONT COLOR=red><A NAME="441_4">ACS_Bottom_Tee</A></FONT>           : <b>constant</b> Character := 'v';
+   <FONT COLOR=red><A NAME="442_4">ACS_Top_Tee</A></FONT>              : <b>constant</b> Character := 'w';
+   <FONT COLOR=red><A NAME="443_4">ACS_Horizontal_Line</A></FONT>      : <b>constant</b> Character := 'q';
+   <FONT COLOR=red><A NAME="444_4">ACS_Vertical_Line</A></FONT>        : <b>constant</b> Character := 'x';
+   <FONT COLOR=red><A NAME="445_4">ACS_Plus_Symbol</A></FONT>          : <b>constant</b> Character := 'n';
+   <FONT COLOR=red><A NAME="446_4">ACS_Scan_Line_1</A></FONT>          : <b>constant</b> Character := 'o';
+   <FONT COLOR=red><A NAME="447_4">ACS_Scan_Line_9</A></FONT>          : <b>constant</b> Character := 's';
+   <FONT COLOR=red><A NAME="448_4">ACS_Diamond</A></FONT>              : <b>constant</b> Character := Character'Val (96);
+   <FONT COLOR=red><A NAME="449_4">ACS_Checker_Board</A></FONT>        : <b>constant</b> Character := 'a';
+   <FONT COLOR=red><A NAME="450_4">ACS_Degree</A></FONT>               : <b>constant</b> Character := 'f';
+   <FONT COLOR=red><A NAME="451_4">ACS_Plus_Minus</A></FONT>           : <b>constant</b> Character := 'g';
+   <FONT COLOR=red><A NAME="452_4">ACS_Bullet</A></FONT>               : <b>constant</b> Character := '~';
+   <FONT COLOR=red><A NAME="453_4">ACS_Left_Arrow</A></FONT>           : <b>constant</b> Character := ',';
+   <FONT COLOR=red><A NAME="454_4">ACS_Right_Arrow</A></FONT>          : <b>constant</b> Character := '+';
+   <FONT COLOR=red><A NAME="455_4">ACS_Down_Arrow</A></FONT>           : <b>constant</b> Character := '.';
+   <FONT COLOR=red><A NAME="456_4">ACS_Up_Arrow</A></FONT>             : <b>constant</b> Character := '-';
+   <FONT COLOR=red><A NAME="457_4">ACS_Board_Of_Squares</A></FONT>     : <b>constant</b> Character := 'h';
+   <FONT COLOR=red><A NAME="458_4">ACS_Lantern</A></FONT>              : <b>constant</b> Character := 'i';
+   <FONT COLOR=red><A NAME="459_4">ACS_Solid_Block</A></FONT>          : <b>constant</b> Character := '0';
+   <FONT COLOR=red><A NAME="460_4">ACS_Scan_Line_3</A></FONT>          : <b>constant</b> Character := 'p';
+   <FONT COLOR=red><A NAME="461_4">ACS_Scan_Line_7</A></FONT>          : <b>constant</b> Character := 'r';
+   <FONT COLOR=red><A NAME="462_4">ACS_Less_Or_Equal</A></FONT>        : <b>constant</b> Character := 'y';
+   <FONT COLOR=red><A NAME="463_4">ACS_Greater_Or_Equal</A></FONT>     : <b>constant</b> Character := 'z';
+   <FONT COLOR=red><A NAME="464_4">ACS_PI</A></FONT>                   : <b>constant</b> Character := '{';
+   <FONT COLOR=red><A NAME="465_4">ACS_Not_Equal</A></FONT>            : <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>--  #1A NAME="AFU_1"#2|</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>--  #1A NAME="AFU_2"#2|</EM></FONT>
+   <b>procedure</b> Init_Screen;
+
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_3"#2|</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#481_14">Init_Screen</A>);
+   <b>pragma</b> Inline (Init_Windows);
+
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_4"#2|</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#489_14">End_Windows</A>);
+   <b>pragma</b> Inline (End_Screen);
+
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_5"#2|</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>--  #1A NAME="AFU_6"#2|</EM></FONT>
+   <b>procedure</b> Move_Cursor (<FONT COLOR=red><A NAME="504_27">Win</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+                          <FONT COLOR=red><A NAME="505_27">Line</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_7"#2|</EM></FONT>
+   <b>procedure</b> Add (<FONT COLOR=red><A NAME="515_19">Win</A></FONT> :  <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_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 (<FONT COLOR=red><A NAME="519_19">Win</A></FONT> :  <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>--  #1A NAME="AFU_8"#2|</EM></FONT>
+   <b>procedure</b> Add
+     (<FONT COLOR=red><A NAME="526_7">Win</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+      <FONT COLOR=red><A NAME="527_7">Line</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="528_7">Column</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_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
+     (<FONT COLOR=red><A NAME="533_7">Win</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+      <FONT COLOR=red><A NAME="534_7">Line</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="535_7">Column</A></FONT> : <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>--  #1A NAME="AFU_9"#2|</EM></FONT>
+   <b>procedure</b> Add_With_Immediate_Echo
+     (<FONT COLOR=red><A NAME="542_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_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
+     (<FONT COLOR=red><A NAME="547_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+      Ch  : <b>in</b> Character);
+   <FONT COLOR=green><EM>--  Add a character and do an immediate refresh 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>--  #1A NAME="AFU_10"#2|</EM></FONT>
+   <b>function</b> Create
+     (<FONT COLOR=red><A NAME="558_7">Number_Of_Lines</A></FONT>       : <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+      <FONT COLOR=red><A NAME="559_7">Number_Of_Columns</A></FONT>     : <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Count</A>;
+      <FONT COLOR=red><A NAME="560_7">First_Line_Position</A></FONT>   : <A HREF="terminal_interface-curses__ads.htm#60_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
+     (<FONT COLOR=red><A NAME="566_7">Number_Of_Lines</A></FONT>       : <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+      <FONT COLOR=red><A NAME="567_7">Number_Of_Columns</A></FONT>     : <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Count</A>;
+      <FONT COLOR=red><A NAME="568_7">First_Line_Position</A></FONT>   : <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_11"#2|</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>--  #1A NAME="AFU_12"#2|</EM></FONT>
+   <b>function</b> Sub_Window
+     (<FONT COLOR=red><A NAME="581_7">Win</A></FONT>                   : <A HREF="terminal_interface-curses__ads.htm#62_12">Window</A> := Standard_Window;
+      <FONT COLOR=red><A NAME="582_7">Number_Of_Lines</A></FONT>       : <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+      <FONT COLOR=red><A NAME="583_7">Number_Of_Columns</A></FONT>     : <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Count</A>;
+      <FONT COLOR=red><A NAME="584_7">First_Line_Position</A></FONT>   : <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_13"#2|</EM></FONT>
+   <b>function</b> Derived_Window
+     (<FONT COLOR=red><A NAME="591_7">Win</A></FONT>                   : <A HREF="terminal_interface-curses__ads.htm#62_12">Window</A> := Standard_Window;
+      <FONT COLOR=red><A NAME="592_7">Number_Of_Lines</A></FONT>       : <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+      <FONT COLOR=red><A NAME="593_7">Number_Of_Columns</A></FONT>     : <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Count</A>;
+      <FONT COLOR=red><A NAME="594_7">First_Line_Position</A></FONT>   : <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_14"#2|</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>--  #1A NAME="AFU_15"#2|</EM></FONT>
+   <b>procedure</b> Move_Window (<FONT COLOR=red><A NAME="605_27">Win</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A>;
+                          <FONT COLOR=red><A NAME="606_27">Line</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_16"#2|</EM></FONT>
+   <b>procedure</b> Move_Derived_Window (<FONT COLOR=red><A NAME="612_35">Win</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A>;
+                                  <FONT COLOR=red><A NAME="613_35">Line</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_17"#2|</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>--  #1A NAME="AFU_18"#2|</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>--  #1A NAME="AFU_19"#2|</EM></FONT>
+   <b>procedure</b> Set_Synch_Mode (<FONT COLOR=red><A NAME="629_30">Win</A></FONT>  : <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>--  #1A NAME="AFU_20"#2|</EM></FONT>
+   <b>procedure</b> Add (<FONT COLOR=red><A NAME="639_19">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+                  <FONT COLOR=red><A NAME="640_19">Str</A></FONT> : <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>--  #1A NAME="AFU_21"#2|</EM></FONT>
+   <b>procedure</b> Add (<FONT COLOR=red><A NAME="646_19">Win</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+                  <FONT COLOR=red><A NAME="647_19">Line</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+                  <FONT COLOR=red><A NAME="648_19">Column</A></FONT> : <b>in</b> Column_Position;
+                  <FONT COLOR=red><A NAME="649_19">Str</A></FONT>    : <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>--  #1A NAME="AFU_22"#2|</EM></FONT>
+   <b>procedure</b> Add (<FONT COLOR=red><A NAME="659_19">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#374_9">Window</A> := Standard_Window;
+                  <FONT COLOR=red><A NAME="660_19">Str</A></FONT> : <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>--  #1A NAME="AFU_23"#2|</EM></FONT>
+   <b>procedure</b> Add (<FONT COLOR=red><A NAME="666_19">Win</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+                  <FONT COLOR=red><A NAME="667_19">Line</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+                  <FONT COLOR=red><A NAME="668_19">Column</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#374_9">Column_Position</A>;
+                  <FONT COLOR=red><A NAME="669_19">Str</A></FONT>    : <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>--  #1A NAME="AFU_24"#2|</EM></FONT>
+   <b>procedure</b> Border
+     (<FONT COLOR=red><A NAME="681_7">Win</A></FONT>                       : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Window</A> := Standard_Window;
+      <FONT COLOR=red><A NAME="682_7">Left_Side_Symbol</A></FONT>          : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      <FONT COLOR=red><A NAME="683_7">Right_Side_Symbol</A></FONT>         : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      <FONT COLOR=red><A NAME="684_7">Top_Side_Symbol</A></FONT>           : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      <FONT COLOR=red><A NAME="685_7">Bottom_Side_Symbol</A></FONT>        : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      <FONT COLOR=red><A NAME="686_7">Upper_Left_Corner_Symbol</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      <FONT COLOR=red><A NAME="687_7">Upper_Right_Corner_Symbol</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      <FONT COLOR=red><A NAME="688_7">Lower_Left_Corner_Symbol</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      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>--  #1A NAME="AFU_25"#2|</EM></FONT>
+   <b>procedure</b> Box
+     (<FONT COLOR=red><A NAME="696_7">Win</A></FONT>               : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Window</A> := Standard_Window;
+      <FONT COLOR=red><A NAME="697_7">Vertical_Symbol</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+      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>--  #1A NAME="AFU_26"#2|</EM></FONT>
+   <b>procedure</b> Horizontal_Line
+     (<FONT COLOR=red><A NAME="704_7">Win</A></FONT>         : <b>in</b> Window := Standard_Window;
+      <FONT COLOR=red><A NAME="705_7">Line_Size</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_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>--  #1A NAME="AFU_27"#2|</EM></FONT>
+   <b>procedure</b> Vertical_Line
+     (<FONT COLOR=red><A NAME="712_7">Win</A></FONT>         : <b>in</b> Window := Standard_Window;
+      <FONT COLOR=red><A NAME="713_7">Line_Size</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_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>--  #1A NAME="AFU_28"#2|</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>--  #1A NAME="AFU_29"#2|</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>--  #1A NAME="AFU_30"#2|</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 function-key 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>--  #1A NAME="AFU_31"#2|</EM></FONT>
+   <b>procedure</b> Switch_Character_Attribute
+     (<FONT COLOR=red><A NAME="767_7">Win</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Window</A> := Standard_Window;
+      <FONT COLOR=red><A NAME="768_7">Attr</A></FONT> : <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>--  #1A NAME="AFU_32"#2|</EM></FONT>
+   <b>procedure</b> Set_Character_Attributes
+     (<FONT COLOR=red><A NAME="775_7">Win</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Window</A> := Standard_Window;
+      <FONT COLOR=red><A NAME="776_7">Attr</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_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>--  #1A NAME="AFU_33"#2|</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>--  #1A NAME="AFU_34"#2|</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>--  #1A NAME="AFU_35"#2|</EM></FONT>
+   <b>procedure</b> Set_Color (<FONT COLOR=red><A NAME="793_25">Win</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_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>--  #1A NAME="AFU_36"#2|</EM></FONT>
+   <b>procedure</b> Change_Attributes
+     (<FONT COLOR=red><A NAME="800_7">Win</A></FONT>   : <b>in</b> Window := Standard_Window;
+      <FONT COLOR=red><A NAME="801_7">Count</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Integer</A> := -1;
+      <FONT COLOR=red><A NAME="802_7">Attr</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_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>--  #1A NAME="AFU_37"#2|</EM></FONT>
+   <b>procedure</b> Change_Attributes
+     (<FONT COLOR=red><A NAME="808_7">Win</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+      <FONT COLOR=red><A NAME="809_7">Line</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A> := Line_Position'First;
+      <FONT COLOR=red><A NAME="810_7">Column</A></FONT> : <b>in</b> Column_Position := Column_Position'First;
+      <FONT COLOR=red><A NAME="811_7">Count</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Integer</A> := -1;
+      <FONT COLOR=red><A NAME="812_7">Attr</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_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>--  #1A NAME="AFU_38"#2|</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>--  #1A NAME="AFU_39"#2|</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>--  #1A NAME="AFU_40"#2|</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>--  #1A NAME="AFU_41"#2|</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>--  #1A NAME="AFU_42"#2|</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>--  #1A NAME="AFU_43"#2|</EM></FONT>
+   <b>procedure</b> Set_Meta_Mode (<FONT COLOR=red><A NAME="856_29">Win</A></FONT>      : <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>--  #1A NAME="AFU_44"#2|</EM></FONT>
+   <b>procedure</b> Set_KeyPad_Mode (<FONT COLOR=red><A NAME="862_31">Win</A></FONT>      : <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>--  #1A NAME="AFU_45"#2|</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>--  #1A NAME="AFU_46"#2|</EM></FONT>
+   <b>procedure</b> Set_Flush_On_Interrupt_Mode
+     (<FONT COLOR=red><A NAME="876_7">Win</A></FONT>  : <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>--  #1A NAME="AFU_47"#2|</EM></FONT>
+   <b>procedure</b> Set_Queue_Interrupt_Mode
+     (<FONT COLOR=red><A NAME="883_7">Win</A></FONT>   : <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>--  #1A NAME="AFU_48"#2|</EM></FONT>
+   <b>procedure</b> Set_NoDelay_Mode
+     (<FONT COLOR=red><A NAME="891_7">Win</A></FONT>  : <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>--  #1A NAME="AFU_49"#2|</EM></FONT>
+   <b>procedure</b> Set_Timeout_Mode (<FONT COLOR=red><A NAME="899_32">Win</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#895_9">Window</A> := Standard_Window;
+                               <FONT COLOR=red><A NAME="900_32">Mode</A></FONT>   : <b>in</b> Timeout_Mode;
+                               Amount : <b>in</b> Natural); <FONT COLOR=green><EM>--  in Milliseconds</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>--  #1A NAME="AFU_50"#2|</EM></FONT>
+   <b>procedure</b> Set_Escape_Timer_Mode
+     (<FONT COLOR=red><A NAME="911_7">Win</A></FONT>       : <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>--  #1A NAME="AFU_51"#2|</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>--  #1A NAME="AFU_52"#2|</EM></FONT>
+   <b>procedure</b> Clear_On_Next_Update
+     (<FONT COLOR=red><A NAME="928_7">Win</A></FONT>      : <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>--  #1A NAME="AFU_53"#2|</EM></FONT>
+   <b>procedure</b> Use_Insert_Delete_Line
+     (<FONT COLOR=red><A NAME="935_7">Win</A></FONT>    : <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>--  #1A NAME="AFU_54"#2|</EM></FONT>
+   <b>procedure</b> Use_Insert_Delete_Character
+     (<FONT COLOR=red><A NAME="942_7">Win</A></FONT>    : <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>--  #1A NAME="AFU_55"#2|</EM></FONT>
+   <b>procedure</b> Leave_Cursor_After_Update
+     (<FONT COLOR=red><A NAME="949_7">Win</A></FONT>      : <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>--  #1A NAME="AFU_56"#2|</EM></FONT>
+   <b>procedure</b> Immediate_Update_Mode
+     (<FONT COLOR=red><A NAME="956_7">Win</A></FONT>  : <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>--  #1A NAME="AFU_57"#2|</EM></FONT>
+   <b>procedure</b> Allow_Scrolling
+     (<FONT COLOR=red><A NAME="963_7">Win</A></FONT>  : <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>--  #1A NAME="AFU_58"#2|</EM></FONT>
+   <b>procedure</b> Set_Scroll_Region
+     (<FONT COLOR=red><A NAME="974_7">Win</A></FONT>         : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+      <FONT COLOR=red><A NAME="975_7">Top_Line</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_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>--  #1A NAME="AFU_59"#2|</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>--  #1A NAME="AFU_60"#2|</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>--  #1A NAME="AFU_61"#2|</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>--  #1A NAME="AFU_62"#2|</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>--  #1A NAME="AFU_63"#2|</EM></FONT>
+   <b>procedure</b> Redraw (<FONT COLOR=red><A NAME="1007_22">Win</A></FONT>        : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+                     <FONT COLOR=red><A NAME="1008_22">Begin_Line</A></FONT> : <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>--  #1A NAME="AFU_64"#2|</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>--  #1A NAME="AFU_65"#2|</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>--  #1A NAME="AFU_66"#2|</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>--  #1A NAME="AFU_67"#2|</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>--  #1A NAME="AFU_68"#2|</EM></FONT>
+   <b>procedure</b> Set_Background
+     (<FONT COLOR=red><A NAME="1046_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_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>--  #1A NAME="AFU_69"#2|</EM></FONT>
+   <b>procedure</b> Change_Background
+     (<FONT COLOR=red><A NAME="1053_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_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>--  #1A NAME="AFU_70"#2|</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#350_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>--  #1A NAME="AFU_71"#2|</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>--  #1A NAME="AFU_72"#2|</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>--  #1A NAME="AFU_73"#2|</EM></FONT>
+   <b>procedure</b> Touch (<FONT COLOR=red><A NAME="1078_21">Win</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+                    <FONT COLOR=red><A NAME="1079_21">Start</A></FONT> : <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>--  #1A NAME="AFU_74"#2|</EM></FONT>
+   <b>procedure</b> Change_Lines_Status (<FONT COLOR=red><A NAME="1085_35">Win</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+                                  <FONT COLOR=red><A NAME="1086_35">Start</A></FONT> : <b>in</b> Line_Position;
+                                  <FONT COLOR=red><A NAME="1087_35">Count</A></FONT> : <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>--  #1A NAME="AFU_75"#2|</EM></FONT>
+   <b>function</b> Is_Touched (<FONT COLOR=red><A NAME="1093_25">Win</A></FONT>  : <A HREF="terminal_interface-curses__ads.htm#59_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>--  #1A NAME="AFU_76"#2|</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>--  #1A NAME="AFU_77"#2|</EM></FONT>
+   <b>procedure</b> Copy
+     (<FONT COLOR=red><A NAME="1108_7">Source_Window</A></FONT>            : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+      <FONT COLOR=red><A NAME="1109_7">Destination_Window</A></FONT>       : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A>;
+      <FONT COLOR=red><A NAME="1110_7">Source_Top_Row</A></FONT>           : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="1111_7">Source_Left_Column</A></FONT>       : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Position</A>;
+      <FONT COLOR=red><A NAME="1112_7">Destination_Top_Row</A></FONT>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="1113_7">Destination_Left_Column</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Position</A>;
+      <FONT COLOR=red><A NAME="1114_7">Destination_Bottom_Row</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="1115_7">Destination_Right_Column</A></FONT> : <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>--  #1A NAME="AFU_78"#2|</EM></FONT>
+   <b>procedure</b> Overwrite (<FONT COLOR=red><A NAME="1121_25">Source_Window</A></FONT>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_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>--  #1A NAME="AFU_79"#2|</EM></FONT>
+   <b>procedure</b> Overlay (<FONT COLOR=red><A NAME="1127_23">Source_Window</A></FONT>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_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>--  #1A NAME="AFU_80"#2|</EM></FONT>
+   <b>procedure</b> Insert_Delete_Lines
+     (<FONT COLOR=red><A NAME="1138_7">Win</A></FONT>   : <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>--  #1A NAME="AFU_81"#2|</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>--  #1A NAME="AFU_82"#2|</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>--  #1A NAME="AFU_83"#2|</EM></FONT>
+   <b>procedure</b> Get_Size
+     (<FONT COLOR=red><A NAME="1159_7">Win</A></FONT>               : <b>in</b> Window := Standard_Window;
+      <FONT COLOR=red><A NAME="1160_7">Number_Of_Lines</A></FONT>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_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>--  #1A NAME="AFU_84"#2|</EM></FONT>
+   <b>procedure</b> Get_Window_Position
+     (<FONT COLOR=red><A NAME="1167_7">Win</A></FONT>             : <b>in</b> Window := Standard_Window;
+      <FONT COLOR=red><A NAME="1168_7">Top_Left_Line</A></FONT>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_85"#2|</EM></FONT>
+   <b>procedure</b> Get_Cursor_Position
+     (<FONT COLOR=red><A NAME="1175_7">Win</A></FONT>    : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+      <FONT COLOR=red><A NAME="1176_7">Line</A></FONT>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_86"#2|</EM></FONT>
+   <b>procedure</b> Get_Origin_Relative_To_Parent
+     (<FONT COLOR=red><A NAME="1183_7">Win</A></FONT>                : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A>;
+      <FONT COLOR=red><A NAME="1184_7">Top_Left_Line</A></FONT>      : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="1185_7">Top_Left_Column</A></FONT>    : <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>--  #1A NAME="AFU_87"#2|</EM></FONT>
+   <b>function</b> New_Pad (<FONT COLOR=red><A NAME="1197_22">Lines</A></FONT>   : <A HREF="terminal_interface-curses__ads.htm#64_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>--  #1A NAME="AFU_88"#2|</EM></FONT>
+   <b>function</b> Sub_Pad
+     (<FONT COLOR=red><A NAME="1204_7">Pad</A></FONT>                   : <A HREF="terminal_interface-curses__ads.htm#62_12">Window</A>;
+      <FONT COLOR=red><A NAME="1205_7">Number_Of_Lines</A></FONT>       : <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+      <FONT COLOR=red><A NAME="1206_7">Number_Of_Columns</A></FONT>     : <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Count</A>;
+      <FONT COLOR=red><A NAME="1207_7">First_Line_Position</A></FONT>   : <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_89"#2|</EM></FONT>
+   <b>procedure</b> Refresh
+     (<FONT COLOR=red><A NAME="1214_7">Pad</A></FONT>                      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A>;
+      <FONT COLOR=red><A NAME="1215_7">Source_Top_Row</A></FONT>           : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="1216_7">Source_Left_Column</A></FONT>       : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Position</A>;
+      <FONT COLOR=red><A NAME="1217_7">Destination_Top_Row</A></FONT>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="1218_7">Destination_Left_Column</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Position</A>;
+      <FONT COLOR=red><A NAME="1219_7">Destination_Bottom_Row</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_90"#2|</EM></FONT>
+   <b>procedure</b> Refresh_Without_Update
+     (<FONT COLOR=red><A NAME="1226_7">Pad</A></FONT>                      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A>;
+      <FONT COLOR=red><A NAME="1227_7">Source_Top_Row</A></FONT>           : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="1228_7">Source_Left_Column</A></FONT>       : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Position</A>;
+      <FONT COLOR=red><A NAME="1229_7">Destination_Top_Row</A></FONT>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="1230_7">Destination_Left_Column</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Position</A>;
+      <FONT COLOR=red><A NAME="1231_7">Destination_Bottom_Row</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_91"#2|</EM></FONT>
+   <b>procedure</b> Add_Character_To_Pad_And_Echo_It
+     (<FONT COLOR=red><A NAME="1238_7">Pad</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_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
+     (<FONT COLOR=red><A NAME="1243_7">Pad</A></FONT> : <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>--  #1A NAME="AFU_92"#2|</EM></FONT>
+   <b>procedure</b> Scroll (<FONT COLOR=red><A NAME="1252_22">Win</A></FONT>    : <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>--  #1A NAME="AFU_93"#2|</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>--  #1A NAME="AFU_94"#2|</EM></FONT>
+   <b>procedure</b> Delete_Character
+     (<FONT COLOR=red><A NAME="1267_7">Win</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+      <FONT COLOR=red><A NAME="1268_7">Line</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_95"#2|</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#350_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>--  #1A NAME="AFU_96"#2|</EM></FONT>
+   <b>function</b> Peek
+     (<FONT COLOR=red><A NAME="1284_7">Win</A></FONT>    : <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+      <FONT COLOR=red><A NAME="1285_7">Line</A></FONT>   : <A HREF="terminal_interface-curses__ads.htm#60_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>--  #1A NAME="AFU_97"#2|</EM></FONT>
+   <b>procedure</b> Insert (<FONT COLOR=red><A NAME="1295_22">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_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>--  #1A NAME="AFU_98"#2|</EM></FONT>
+   <b>procedure</b> Insert (<FONT COLOR=red><A NAME="1300_22">Win</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+                     <FONT COLOR=red><A NAME="1301_22">Line</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+                     <FONT COLOR=red><A NAME="1302_22">Column</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_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>--  #1A NAME="AFU_99"#2|</EM></FONT>
+   <b>procedure</b> Insert (<FONT COLOR=red><A NAME="1311_22">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+                     <FONT COLOR=red><A NAME="1312_22">Str</A></FONT> : <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>--  #1A NAME="AFU_100"#2|</EM></FONT>
+   <b>procedure</b> Insert (<FONT COLOR=red><A NAME="1318_22">Win</A></FONT>    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+                     <FONT COLOR=red><A NAME="1319_22">Line</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+                     <FONT COLOR=red><A NAME="1320_22">Column</A></FONT> : <b>in</b> Column_Position;
+                     <FONT COLOR=red><A NAME="1321_22">Str</A></FONT>    : <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>--  #1A NAME="AFU_101"#2|</EM></FONT>
+   <b>procedure</b> Peek (<FONT COLOR=red><A NAME="1332_20">Win</A></FONT> : <b>in</b>  Window := Standard_Window;
+                   <FONT COLOR=red><A NAME="1333_20">Str</A></FONT> : <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>--  #1A NAME="AFU_102"#2|</EM></FONT>
+   <b>procedure</b> Peek (<FONT COLOR=red><A NAME="1339_20">Win</A></FONT>    : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+                   <FONT COLOR=red><A NAME="1340_20">Line</A></FONT>   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+                   <FONT COLOR=red><A NAME="1341_20">Column</A></FONT> : <b>in</b>  Column_Position;
+                   <FONT COLOR=red><A NAME="1342_20">Str</A></FONT>    : <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>--  #1A NAME="AFU_103"#2|</EM></FONT>
+   <b>procedure</b> Peek (<FONT COLOR=red><A NAME="1352_20">Win</A></FONT> : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#374_9">Window</A> := Standard_Window;
+                   <FONT COLOR=red><A NAME="1353_20">Str</A></FONT> : <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>--  #1A NAME="AFU_104"#2|</EM></FONT>
+   <b>procedure</b> Peek (<FONT COLOR=red><A NAME="1359_20">Win</A></FONT>    : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+                   <FONT COLOR=red><A NAME="1360_20">Line</A></FONT>   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+                   <FONT COLOR=red><A NAME="1361_20">Column</A></FONT> : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#374_9">Column_Position</A>;
+                   <FONT COLOR=red><A NAME="1362_20">Str</A></FONT>    : <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>--  #1A NAME="AFU_105"#2|</EM></FONT>
+   <b>procedure</b> Get (<FONT COLOR=red><A NAME="1373_19">Win</A></FONT> : <b>in</b>  Window := Standard_Window;
+                  <FONT COLOR=red><A NAME="1374_19">Str</A></FONT> : <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 (<FONT COLOR=red><A NAME="1379_19">Win</A></FONT>    : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+                  <FONT COLOR=red><A NAME="1380_19">Line</A></FONT>   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+                  <FONT COLOR=red><A NAME="1381_19">Column</A></FONT> : <b>in</b>  Column_Position;
+                  <FONT COLOR=red><A NAME="1382_19">Str</A></FONT>    : <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="1396_9"> </A></FONT>                         PC_Style_With_Index);  <FONT COLOR=green><EM>--  "</EM></FONT>
+   <b>type</b> <FONT COLOR=red><A NAME="1397_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>--  #1A NAME="AFU_106"#2|</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>--  #1A NAME="AFU_107"#2|</EM></FONT>
+   <b>procedure</b> Set_Soft_Label_Key (<FONT COLOR=red><A NAME="1407_34">Label</A></FONT> : <b>in</b> Label_Number;
+                                 <FONT COLOR=red><A NAME="1408_34">Text</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1397_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>--  #1A NAME="AFU_108"#2|</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>--  #1A NAME="AFU_109"#2|</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>--  #1A NAME="AFU_110"#2|</EM></FONT>
+   <b>procedure</b> Get_Soft_Label_Key (<FONT COLOR=red><A NAME="1424_34">Label</A></FONT> : <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>--  #1A NAME="AFU_111"#2|</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>--  #1A NAME="AFU_112"#2|</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>--  #1A NAME="AFU_113"#2|</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>--  #1A NAME="AFU_114"#2|</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>--  #1A NAME="AFU_115"#2|</EM></FONT>
+   <b>procedure</b> Switch_Soft_Label_Key_Attributes
+     (<FONT COLOR=red><A NAME="1451_7">Attr</A></FONT> : <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>--  #1A NAME="AFU_116"#2|</EM></FONT>
+   <b>procedure</b> Set_Soft_Label_Key_Attributes
+     (<FONT COLOR=red><A NAME="1459_7">Attr</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_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>--  #1A NAME="AFU_117"#2|</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>--  #1A NAME="AFU_118"#2|</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>--  #1A NAME="AFU_119"#2|</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>--  #1A NAME="AFU_120"#2|</EM></FONT>
+   <b>procedure</b> Enable_Key (<FONT COLOR=red><A NAME="1483_26">Key</A></FONT>    : <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>--  #1A NAME="AFU_121"#2|</EM></FONT>
+   <b>procedure</b> Define_Key (<FONT COLOR=red><A NAME="1493_26">Definition</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#76_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>--  #1A NAME="AFU_122"#2|</EM></FONT>
+   <b>procedure</b> Key_Name (<FONT COLOR=red><A NAME="1505_24">Key</A></FONT>  : <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>--  #1A NAME="AFU_123"#2|</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>--  #1A NAME="AFU_124"#2|</EM></FONT>
+   <b>procedure</b> Un_Control (<FONT COLOR=red><A NAME="1517_26">Ch</A></FONT>  : <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>--  #1A NAME="AFU_125"#2|</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>--  #1A NAME="AFU_126"#2|</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>--  #1A NAME="AFU_127"#2|</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>--  #1A NAME="AFU_128"#2|</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>--  #1A NAME="AFU_129"#2|</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>--  #1A NAME="AFU_130"#2|</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>--  #1A NAME="AFU_131"#2|</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>--  #1A NAME="AFU_132"#2|</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>--  #1A NAME="AFU_133"#2|</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>--  #1A NAME="AFU_134"#2|</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>--  #1A NAME="AFU_135"#2|</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>--  #1A NAME="AFU_136"#2|</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>--  #1A NAME="AFU_137"#2|</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>--  #1A NAME="AFU_138"#2|</EM></FONT>
+   <b>procedure</b> Start_Color;
+   <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_color.3x.html">start_color()</A></EM></FONT>
+   <b>pragma</b> Import (C, Start_Color, "start_color");
+
+   <FONT COLOR=green><EM>--  #1A NAME="AFU_139"#2|</EM></FONT>
+   <b>procedure</b> Init_Pair (<FONT COLOR=red><A NAME="1601_25">Pair</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Redefinable_Color_Pair</A>;
+                        <FONT COLOR=red><A NAME="1602_25">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#276_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>--  #1A NAME="AFU_140"#2|</EM></FONT>
+   <b>procedure</b> Pair_Content (<FONT COLOR=red><A NAME="1608_28">Pair</A></FONT> : <b>in</b> Color_Pair;
+                           <FONT COLOR=red><A NAME="1609_28">Fore</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#276_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>--  #1A NAME="AFU_141"#2|</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>--  #1A NAME="AFU_142"#2|</EM></FONT>
+   <b>procedure</b> Init_Color (<FONT COLOR=red><A NAME="1620_26">Color</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#292_9">Color_Number</A>;
+                         <FONT COLOR=red><A NAME="1621_26">Red</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>;
+                         <FONT COLOR=red><A NAME="1622_26">Green</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#292_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>--  #1A NAME="AFU_143"#2|</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>--  #1A NAME="AFU_144"#2|</EM></FONT>
+   <b>procedure</b> Color_Content (<FONT COLOR=red><A NAME="1633_29">Color</A></FONT> : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#292_9">Color_Number</A>;
+                            <FONT COLOR=red><A NAME="1634_29">Red</A></FONT>   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>;
+                            <FONT COLOR=red><A NAME="1635_29">Green</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#292_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>--  #1A NAME="AFU_145"#2|</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>--  #1A NAME="AFU_146"#2|</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>--  #1A NAME="AFU_147"#2|</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>--  #1A NAME="AFU_148"#2|</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> (<FONT COLOR=red><A NAME="1671_17">Win</A></FONT>     : <A HREF="terminal_interface-curses__ads.htm#64_12">Window</A>;
+                Columns :<A HREF="terminal_interface-curses__ads.htm#1669_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>--  #1A NAME="AFU_149"#2|</EM></FONT>
+   <b>procedure</b> Rip_Off_Lines (<FONT COLOR=red><A NAME="1679_29">Lines</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1669_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>--  #1A NAME="AFU_150"#2|</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>--  #1A NAME="AFU_151"#2|</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 useful 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
+     (<FONT COLOR=red><A NAME="1705_7">W</A></FONT>      : <b>in</b> Window := Standard_Window;
+      <FONT COLOR=red><A NAME="1706_7">Line</A></FONT>   : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+      <FONT COLOR=red><A NAME="1707_7">Column</A></FONT> : <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 parameter.</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>
+   <FONT COLOR=red><A NAME="1723_4">Offset_maxy</A></FONT>    : <b>constant</b> Natural :=  2; <FONT COLOR=green><EM>--  short</EM></FONT>
+   <FONT COLOR=red><A NAME="1724_4">Offset_maxx</A></FONT>    : <b>constant</b> Natural :=  3; <FONT COLOR=green><EM>--  short</EM></FONT>
+   <FONT COLOR=red><A NAME="1725_4">Offset_begy</A></FONT>    : <b>constant</b> Natural :=  4; <FONT COLOR=green><EM>--  short</EM></FONT>
+   <FONT COLOR=red><A NAME="1726_4">Offset_begx</A></FONT>    : <b>constant</b> Natural :=  5; <FONT COLOR=green><EM>--  short</EM></FONT>
+   <FONT COLOR=red><A NAME="1727_4">Offset_cury</A></FONT>    : <b>constant</b> Natural :=  0; <FONT COLOR=green><EM>--  short</EM></FONT>
+   <FONT COLOR=red><A NAME="1728_4">Offset_curx</A></FONT>    : <b>constant</b> Natural :=  1; <FONT COLOR=green><EM>--  short</EM></FONT>
+   <FONT COLOR=red><A NAME="1729_4">Offset_yoffset</A></FONT> : <b>constant</b> Natural := 36; <FONT COLOR=green><EM>--  short</EM></FONT>
+   <FONT COLOR=red><A NAME="1730_4">Offset_pary</A></FONT>    : <b>constant</b> Natural := 13; <FONT COLOR=green><EM>--  int</EM></FONT>
+   <FONT COLOR=red><A NAME="1731_4">Offset_parx</A></FONT>    : <b>constant</b> Natural := 12; <FONT COLOR=green><EM>--  int</EM></FONT>
+   <FONT COLOR=red><A NAME="1732_4">Offset_scroll</A></FONT>  : <b>constant</b> Natural := 27; <FONT COLOR=green><EM>--  char</EM></FONT>
+   <FONT COLOR=red><A NAME="1733_4">Sizeof_bool</A></FONT>    : <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>type</b> Curses_Bool <b>is</b> <b>mod</b> 2 ** <A HREF="terminal_interface-curses__ads.htm#1735_9">Interfaces</A>.C.char'Size;
+   Curses_Bool_False : <b>constant</b> Curses_Bool := 0;
+
+<b>end</b> Terminal_Interface.Curses;
+</PRE></BODY></HTML>
\ No newline at end of file
similarity index 90%
rename from Ada95/html/ada/terminal_interface__ads.htm
rename to doc/html/ada/terminal_interface__ads.htm
index 10165564b235c3b087b6a195c857d18848dda2a9..a930f21dcb698a793d1fb72a258f0ced71a19aa4 100644 (file)
@@ -1,10 +1,10 @@
-<HEAD><TITLE>terminal_interface.ads</TITLE></HEAD>
+<HTML><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>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
 <FONT COLOR=green><EM>--                                                                          --</EM></FONT>
 <FONT COLOR=green><EM>--                            Terminal_Interface                            --</EM></FONT>
 <FONT COLOR=green><EM>--                                                                          --</EM></FONT>
@@ -37,9 +37,9 @@
 <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>--  Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> &lt;<A HREF="mailto:juergen.pfeifer@gmx.net">&lt;juergen.pfeifer@gmx.net&gt;</A>&gt; 1996</EM></FONT>
 <FONT COLOR=green><EM>--  Version Control:</EM></FONT>
-<FONT COLOR=green><EM>--  $Revision: 1.10 $</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>
similarity index 57%
rename from announce.html
rename to doc/html/announce.html
index f87c7c4f13fa80f0b471c914779faf912d0e5c1f..e7a79d6c899d78542aaf284c5ac29331a2e3052a 100644 (file)
@@ -1,15 +1,15 @@
 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
 <!--
-  $Id: announce.html,v 1.34 1999/10/23 21:13:11 tom Exp $
+  $Id: announce.html,v 1.38 2000/07/04 22:41:38 tom Exp $
 -->
 <HTML>
 <HEAD>
-<TITLE>Announcing ncurses 5.0</TITLE>
+<TITLE>Announcing ncurses 5.1</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 </HEAD>
 <BODY>
 
-<H1>Announcing ncurses 5.0</H1>
+<H1>Announcing ncurses 5.1</H1>
 
 The ncurses (new curses) library is a free software emulation of
 curses in System V Release 4.0, and more.  It uses terminfo format,
@@ -33,153 +33,141 @@ the library and tools.<P>
 The ncurses distribution is available via anonymous FTP at
 the GNU distribution site
 <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>.
+<br>It is also available at
+<A HREF="ftp://dickey.his.com/ncurses">ftp://dickey.his.com/ncurses</A>.
 
 <H1>Release Notes</H1>
 
-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.
+This release is designed to be upward compatible from ncurses 5.0; very few
+applications will require recompilation, depending on the platform.
+These are the highlights from the change-log since ncurses 5.0 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).
+       <li>made the extended terminal capabilities
+         (<code>configure&nbsp;--enable-tcap-names</code>)
+         a standard feature (though the configure script can disable it,
+         it is built by default).
+
+       <li>removed the <code>trace()</code> function and related trace support
+         from the production library.  This is the only interface change that
+         may cause problems with existing applications linked to shared
+         libraries, since not all platforms use the minor version number.
+
+       <li>explicitly initialized to zero several data items which were
+         implicitly initialized, e.g., cur_term.  If not explicitly
+         initialized, their storage type is C (common), and causes problems
+         linking on some platforms.
+
+       <li>modified curses.h.in, undef'ing some symbols to avoid conflict with
+         C++ STL.
 </ul>
 New features:
 <ul>
-       <li>enable sigwinch handler by default.
+       <li>added a new extension, <code>assume_default_colors()</code> to
+         provide better control over the use of default colors.  This is
+         the principal visible difference between ncurses 5.1 and preceding
+         versions.  The new extension allows an application to specify what
+         colors pair 0 uses.
+        <p> 
+         <em>NOTE</em>:  Pair 0 defaults to white on black unless
+         you have invoked <code>use_default_colors()</code> or set it via
+         <code>assume_default_colors()</code>.  An application that calls
+         <code>start_colors()</code> without setting the background color
+         will consistently have a black background no matter what color your
+         terminal's background actually is.
+
+       <li>made several fixes to the terminfo-to-termcap conversion, and
+         have been using the generated termcaps without further hand-tuning. 
+         This builds on the extension <code>use_extended_names()</code> by
+         adding "obsolete" termcap strings to terminfo.src
+       <ul>
+         <li>modified <code>tic</code> so that if extended names (i.e.,
+           configure&nbsp;--enable-tcap-names) are active, then <code>tic&nbsp;-x</code>
+           will also write "obsolete" capabilities that are present in the
+           terminfo source.
+
+         <li>added screen's AX capability (for ECMA SGR 39 and 49) to applicable
+           terminfo entries, use presence of this as a check for a small
+           improvement in setting default colors.
+
+         <li>add -a option to tic and infocmp, which retains commented-out
+           capabilities during source translation/comparison, e.g., captoinfo
+           and infotocap.
+       </ul>
+
+       <li>implemented limited support for UTF-8, useful with XFree86 xterm:
+       <ul>
+         <li>if the <code>configure&nbsp;--enable-widec</code> option is
+           given, append 'w' to names of the generated libraries (e.g.,
+           libncursesw.so) to avoid conflict with existing ncurses libraries.
+         <li>add a simple UTF-8 output driver to the experimental
+           wide-character support.  If any of the environment variables
+           LC_ALL, LC_CTYPE or LANG contain the string "UTF-8", this driver
+           will be used to translate the output to UTF-8.
+         <li>modified view.c to make a rudimentary viewer of UTF-8 text.
+       </ul>
+
+       <li>modify <code>raw()</code> and <code>noraw()</code> to clear/restore
+         IEXTEN flag which affects <code>stty lnext</code> on systems such as FreeBSD
+
+       <li>reordered tests during mouse initialization to allow for gpm to run
+         in xterm, or for xterm to be used under OS/2 EMX.  Also dropped test
+         for <code>$DISPLAY</code> in favor of the terminfo capability
+         <code>kmous=\E[M</code> or
+         if <code>$TERM</code> environment variable contains "xterm".
+
+       <li>added configure option <code>--with-manpage-symlinks</code>, which
+         provides for fully indexing manpage entries by making symbolic links
+         for the aliases.
+
+       <li>changed <code>unctrl()</code> to render C1 characters (128-159) as
+         <code>~@</code>, <code>~A</code>, etc.
+
+       <li>add experimental configure option --enable-colorfgbg to check for
+         $COLORTERM variable as set by rxvt/aterm/Eterm.
+
+       <li>made the <code>infocmp -F</code> option less verbose.
+
+       <li>dropped support for gnat 3.10 (gnat 3.12 is current).
 
-       <li>turn on hashmap scrolling code by default
-
-       <li>improved support for termcap applications
+</ul>
+Major bug fixes:
 <ul>
-         <li>modify tput to accept termcap names as an alternative to terminfo
-           names.
+       <li>modified infocmp -e, -E options to ensure that generated fallback.c
+         type for Booleans agrees with term.h
 
-         <li>provide support for termcap PC variable by copying it from terminfo
-           data and using it as the padding character in tputs.
+       <li>documented a special case of incompatiblity between ncurses 4.2 and
+         5.0, added a section for this in INSTALL.
 
-         <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>corrected tests for file-descriptors in OS/2 EMX mouse support.  A
+         negative value could be used by FD_SET, causing the select() call to
+         wait indefinitely.
 
-         <li>change name-comparisons in lib_termcap to compare no more than 2
-           characters.
+       <li>made 'tput flash' work properly for xterm by flushing output in
+         delay_output() when using napms(), and modifying xterm's terminfo to
+         specify no padding character.  Otherwise, xterm's reported baud rate
+         could mislead ncurses into producing too few padding 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>modified lib_addch.c to allow repeated update to the lower-right
+         corner, rather than displaying only the first character written until
+         the cursor is moved.  Recent versions of SVr4 curses can update the
+         lower-right corner, and behave this way.
 
-       <li>modify terminfo parsing to accept octal and hexadecimal constants
+       <li>modified echo() behavior of getch() to match Solaris curses for
+         carriage return and backspace (reported by Neil Zanella).
 
-       <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>corrected offsets used for subwindows in <code>wresize()</code>
 
-       <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>modified configure script so AC_MSG_ERROR is temporarily defined to
+         a warning in AC_PROG_CXX to make it recover from a missing C++
+         compiler without requiring user to add --without-cxx option
 
-       <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>corrected logic in lib_twait.c as used by lib_mouse.c for GPM mouse
+         support when poll() is used rather than select().
 
-       <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.
+       <li>made several fixes for buffer overflows, unchecked recursion,
+         improvements in performance, etc.  See the NEWS file for details.
 </ul>
 
 <H1>Features of Ncurses</H1>
@@ -294,39 +282,62 @@ 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>.
+<br>
+<A HREF="http://www.vexus.ca/CDK.html">http://www.vexus.ca/CDK.html</a>
+<br>
+<A HREF="http://dickey.his.com/cdk/cdk.html">http://dickey.his.com/cdk</A>.
 <DT> ded
 <DD> directory-editor
-<A HREF="ftp://ftp.clark.net/pub/dickey/ded">ftp://ftp.clark.net/pub/dickey/ded</A>.
+<br>
+<A HREF="http://dickey.his.com/ded/ded.html">http://dickey.his.com/ded</A>.
 <DT> dialog
 <DD> the underlying application used in Slackware's setup, and the basis
 for similar applications on GNU/Linux.
+<br>
+<A HREF="http://dickey.his.com/dialog/dialog.html">http://dickey.his.com/dialog</A>.
 <DT> lynx
 <DD> the character-screen WWW browser
+<br>
+<A HREF="http://lynx.isc.org/release/">http://lynx.isc.org/release</A>.
 <DT> Midnight Commander 4.1
 <DD> file manager
+<br>
+<A HREF="www.gnome.org/mc/">www.gnome.org/mc/</A>.
 <DT> mutt
 <DD> mail utility
+<br>
+<A HREF="http://www.mutt.org">http://www.mutt.org</A>.
 <DT> ncftp
 <DD> file-transfer utility
+<br>
+<A HREF="http://www.ncftp.com">http://www.ncftp.com</A>.
 <DT> nvi
 <DD> New vi versions 1.50 are able to use ncurses versions 1.9.7 and later.
+<br>
+<A HREF="http://www.bostic.com/vi/">http://www.bostic.com/vi/</A>.
 <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>.
+<br>
+<A HREF="http://www.tin.org">http://www.tin.org</A>.
 <DT> taper
 <DD> tape archive utility
+<br>
+<A HREF="http://members.iinet.net.au/~yusuf/taper/">http://members.iinet.net.au/~yusuf/taper/</A>.
 <DT> vh-1.6
 <DD> Volks-Hypertext browser for the Jargon File
+<br>
+<A HREF="http://www.bg.debian.org/Packages/unstable/text/vh.html">http://www.bg.debian.org/Packages/unstable/text/vh.html</A>.
 </DL>
 as well as some that use ncurses for the terminfo support alone:
 <DL>
 <DT> minicom
 <DD> terminal emulator
+<br>
+<A HREF="http://www.pp.clinet.fi/~walker/minicom.html">http://www.pp.clinet.fi/~walker/minicom.html</A>.
 <DT> vile
 <DD> vi-like-emacs
-<A HREF="ftp://ftp.clark.net/pub/dickey/vile">ftp://ftp.clark.net/pub/dickey/vile</A>.
+<br>
+<A HREF="http://dickey.his.com/vile/vile.html">http://dickey.his.com/vile</A>.
 </DL>
 <P>
 
@@ -339,10 +350,10 @@ The original developers of ncurses are <A
 HREF="mailto:zmbenhal@netcom.com">Zeyd Ben-Halim</A> and
 <A HREF="http://www.ccil.org/~esr/home.html">Eric S. Raymond</A>.
 Ongoing work is being done by
-<A HREF="mailto:dickey@clark.net">Thomas Dickey</A>
+<A HREF="mailto:dickey@herndon4.his.com">Thomas Dickey</A>
 and
 <A HREF="mailto:juergen.pfeifer@gmx.net">J&uuml;rgen Pfeifer</A>.
-<A HREF="mailto:dickey@clark.net">Thomas Dickey</A>
+<A HREF="mailto:dickey@herndon4.his.com">Thomas Dickey</A>
 acts as the maintainer for the Free Software Foundation, which holds the
 copyright on ncurses.
 Contact the current maintainers at
@@ -359,7 +370,7 @@ This list is open to anyone interested in helping with the development and
 testing of this package.<P>
 
 Beta versions of ncurses and patches to the current release are made available at
-<A HREF="ftp://ftp.clark.net/pub/dickey/ncurses">ftp://ftp.clark.net/pub/dickey/ncurses</A>.
+<A HREF="ftp://dickey.his.com/ncurses">ftp://dickey.his.com/ncurses</A>.
 
 <H2>Future Plans</H2>
 <UL>
similarity index 93%
rename from misc/hackguide.html
rename to doc/html/hackguide.html
index 417399a68365d12fb3401fe668591ca1adcdfad1..ce033a1cdb5bb655b3be53de4de909d35efc96e2 100644 (file)
@@ -1,6 +1,6 @@
 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
 <!--
-  $Id: hackguide.html,v 1.23 1999/01/17 00:15:48 tom Exp $
+  $Id: hackguide.html,v 1.25 2000/03/25 18:45:21 tom Exp $
 -->
 <HTML>
 <HEAD>
@@ -19,18 +19,14 @@ this one.
 <H1>Contents</H1>
 <UL>
 <LI><A HREF="#abstract">Abstract</A>
-<P>
 <LI><A HREF="#objective">Objective of the Package</A>
 <UL>
 <LI><A HREF="#whysvr4">Why System V Curses?</A>
 <LI><A HREF="#extensions">How to Design Extensions</A>
 </UL>
-<LI><A HREF="#portability">Portability and Configuration</A><UL>
-</UL>
+<LI><A HREF="#portability">Portability and Configuration</A>
 <LI><A HREF="#documentation">Documentation Conventions</A>
-<P>
 <LI><A HREF="#bugtrack">How to Report Bugs</A>
-<P>
 <LI><A HREF="#ncurslib">A Tour of the Ncurses Library</A>
 <UL>
 <LI><A HREF="#loverview">Library Overview</A>
@@ -40,7 +36,6 @@ this one.
 <LI><A HREF="#output">Output and Screen Updating</A>
 </UL>
 <LI><A HREF="#fmnote">The Forms and Menu Libraries</A>
-<P>
 <LI><A HREF="#tic">A Tour of the Terminfo Compiler</A>
 <UL>
 <LI><A HREF="#nonuse">Translation of Non-<STRONG>use</STRONG> Capabilities</A>
@@ -48,9 +43,7 @@ this one.
 <LI><A HREF="#translation">Source-Form Translation</A>
 </UL>
 <LI><A HREF="#utils">Other Utilities</A>
-<P>
 <LI><A HREF="#style">Style Tips for Developers</A>
-<P>
 <LI><A HREF="#port">Porting Hints</A>
 </UL>
 
@@ -60,24 +53,21 @@ This document is a hacker's tour of the <STRONG>ncurses</STRONG> library and uti
 It discusses design philosophy, implementation methods, and the
 conventions used for coding and documentation.  It is recommended
 reading for anyone who is interested in porting, extending or improving the
-package. <P>
+package.
 
 <H1><A NAME="objective">Objective of the Package</A></H1>
 
 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>
+characteristics:
 
 <UL>
 <LI>Source-compatible with historical curses implementations (including
      the original BSD curses and System V curses.
-<P>
 <LI>Conformant with the XSI Curses standard issued as part of XPG4 by
      X/Open.
-<P>
 <LI>High-quality -- stable and reliable code, wide portability, good
      packaging, superior documentation.
-<P>
 <LI>Featureful -- should eliminate as much of the drudgery of C interface
      programming as possible, freeing programmers to think at a higher
      level of design.
@@ -86,7 +76,7 @@ characteristics: <P>
 These objectives are in priority order.  So, for example, source
 compatibility with older version must trump featurefulness -- we cannot
 add features if it means breaking the portion of the API corresponding
-to historical curses versions. <P>
+to historical curses versions.
 
 <H2><A NAME="whysvr4">Why System V Curses?</A></H2>
 
@@ -99,7 +89,7 @@ capture BSD's. <P>
 
 More importantly for the future, the XSI Curses standard issued by X/Open
 is explicitly and closely modeled on System V.  So conformance with
-System V took us most of the way to base-level XSI conformance. <P>
+System V took us most of the way to base-level XSI conformance.
 
 <H2><A NAME="extensions">How to Design Extensions</A></H2>
 
@@ -113,7 +103,7 @@ in or out the code that requires the <STRONG>ncurses</STRONG> extension. <P>
 
 For example, there is a macro <CODE>NCURSES_MOUSE_VERSION</CODE> which XSI Curses
 does not define, but which is defined in the <STRONG>ncurses</STRONG> library header.
-You can use this to condition the calls to the mouse API calls. <P>
+You can use this to condition the calls to the mouse API calls.
 
 <H1><A NAME="portability">Portability and Configuration</A></H1>
 
@@ -125,12 +115,11 @@ We encourage (but do not require) developers to make the code friendly
 to less-capable UNIX environments wherever possible. <P>
 
 We encourage developers to support OS-specific optimizations and methods
-not available under POSIX/ANSI, provided only that:  <P>
+not available under POSIX/ANSI, provided only that: 
 
 <UL>
 <LI>All such code is properly conditioned so the build process does not
      attempt to compile it under a plain ANSI/POSIX environment.
-<P>
 <LI>Adding such implementation methods does not introduce incompatibilities
      in the <STRONG>ncurses</STRONG> API between platforms.
 </UL>
@@ -138,12 +127,12 @@ not available under POSIX/ANSI, provided only that:  <P>
 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>
+macro, which you then use to condition your code.
 
 <H1><A NAME="documentation">Documentation Conventions</A></H1>
 
 There are three kinds of documentation associated with this package.  Each
-has a different preferred format: <P>
+has a different preferred format:
 
 <UL>
 <LI>Package-internal files (README, INSTALL, TO-DO etc.)
@@ -151,14 +140,14 @@ has a different preferred format: <P>
 <LI>Everything else (i.e., narrative documentation).
 </UL>
 
-Our conventions are simple: <P>
+Our conventions are simple:
 <OL>
 <LI><STRONG>Maintain package-internal files in plain text.</STRONG>
      The expected viewer for them <EM>more(1)</EM> or an editor window; there's
-     no point in elaborate mark-up. <P>
+     no point in elaborate mark-up.
 
 <LI><STRONG>Mark up manual pages in the man macros.</STRONG>  These have to be viewable
-     through traditional <EM>man(1)</EM> programs. <P>
+     through traditional <EM>man(1)</EM> programs.
 
 <LI><STRONG>Write everything else in HTML.</STRONG>
 </OL>
@@ -171,7 +160,7 @@ 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
-announcement document to WWW pretty trivial.<P>
+announcement document to WWW pretty trivial.
 
 <H1><A NAME="bugtrack">How to Report Bugs</A></H1>
 
@@ -193,17 +182,17 @@ 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
 show us they've taken these steps at the head of our queue.  This
 means that if you don't, you'll probably end up at the tail end and
-have to wait a while. <P>
+have to wait a while.
 
 <OL>
-<LI>Develop a recipe to reproduce the bug. <P>
-
+<LI>Develop a recipe to reproduce the bug.
+<p>
 Bugs we can reproduce are likely to be fixed very quickly, often
 within days.  The most effective single thing you can do to get a
 quick fix is develop a way we can duplicate the bad behavior --
 ideally, by giving us source for a small, portable test program that
 breaks the library. (Even better is a keystroke recipe using one of
-the test programs provided with the distribution.) <P>
+the test programs provided with the distribution.)
 
 <LI>Try to reproduce the bug on a different terminal type. <P>
 
@@ -221,7 +210,7 @@ bug reproduces on both. <P>
 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>
+are either triggered or masked by these. 
 
 <LI>Generate and examine a trace file for the broken behavior. <P>
 
@@ -248,7 +237,7 @@ through. <P>
 Often you'll find terminfo problems at this stage by noticing that the
 escape sequences put out for various capabilities are wrong.  If not,
 you're likely to learn enough to be able to characterize any bug in
-the screen-update logic quite exactly. <P>
+the screen-update logic quite exactly.
 
 <LI>Report details and symptoms, not just interpretations. <P>
 
@@ -299,7 +288,7 @@ with <CODE>hardscroll</CODE>. <P>
 
 There's one other interactive tester, <CODE>tctest</CODE>, that exercises
 translation between termcap and terminfo formats.  If you have a serious
-need to run this, you probably belong on our development team! <P>
+need to run this, you probably belong on our development team!
 
 <H1><A NAME="ncurslib">A Tour of the Ncurses Library</A></H1>
 
@@ -376,7 +365,8 @@ unlikely to need change, barring bugs or some fundamental
 reorganization in the underlying data structures. <P>
 
 These files are used only for debugging support:
-<blockquote><code>
+<blockquote>
+<code>
 lib_trace.c
 lib_traceatr.c
 lib_tracebits.c
@@ -384,7 +374,8 @@ lib_tracechr.c
 lib_tracedmp.c
 lib_tracemse.c
 trace_buf.c
-</blockquote></code>
+</code>
+</blockquote>
 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>
 
@@ -392,7 +383,8 @@ 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:
-<blockquote><code>
+<blockquote>
+<code>
 lib_acs.c
 lib_beep.c
 lib_color.c
@@ -407,7 +399,8 @@ lib_tparm.c
 lib_tputs.c
 lib_vidattr.c
 read_entry.c.
-</blockquote></code>
+</code>
+</blockquote>
 They are likely to need revision only if
 ncurses is being ported to an environment without an underlying
 terminfo capability representation. <P>
@@ -415,13 +408,15 @@ terminfo capability representation. <P>
 These files
 have serious hooks into
 the tty driver and signal facilities:
-<blockquote><code>
+<blockquote>
+<code>
 lib_kernel.c
 lib_baudrate.c
 lib_raw.c
 lib_tstp.c
 lib_twait.c
-</blockquote></code>
+</code>
+</blockquote>
 If you run into porting snafus
 moving the package to another UNIX, the problem is likely to be in one
 of these files.
@@ -429,7 +424,8 @@ 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
-<blockquote><code>
+<blockquote>
+<code>
 hardscroll.c
 hashmap.c
 lib_addch.c
@@ -440,7 +436,8 @@ lib_mvcur.c
 lib_refresh.c
 lib_setup.c
 lib_vidattr.c
-</blockquote></code>
+</code>
+</blockquote>
 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.
@@ -450,7 +447,8 @@ 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
-<blockquote><code>
+<blockquote>
+<code>
 alloc_entry.c
 captoinfo.c
 comp_captab.c
@@ -461,8 +459,9 @@ comp_scan.c
 parse_entry.c
 read_termcap.c
 write_entry.c
-</blockquote></code>
-We'll discuss these in the compiler tour. <P>
+</code>
+</blockquote>
+We'll discuss these in the compiler tour.
 
 <H2><A NAME="engine">The Engine Room</A></H2>
 
@@ -487,7 +486,7 @@ Hackers bruised by previous encounters with variant <CODE>select(2)</CODE>
 calls may find the code in <CODE>lib_twait.c</CODE> interesting.  It deals
 with the problem that some BSD selects don't return a reliable
 time-left value.  The function <CODE>timed_wait()</CODE> effectively
-simulates a System V select. <P>
+simulates a System V select.
 
 <H3><A NAME="mouse">Mouse Events</A></H3>
 
@@ -526,7 +525,7 @@ to queue up a series of adjacent mouse reports. <P>
 
 In either case, <CODE>_nc_mouse_parse()</CODE> should be called after the
 series is accepted to parse the digested mouse reports (low-level
-events) into a gesture (a high-level or composite event). <P>
+events) into a gesture (a high-level or composite event).
 
 <H3><A NAME="output">Output and Screen Updating</A></H3>
 
@@ -571,7 +570,7 @@ optimization improves efficiency. <P>
 In the trace-enabled version of the library, it is also possible to disable
 and re-enable various optimizations at runtime by tweaking the variable
 <CODE>_nc_optimize_enable</CODE>.  See the file <CODE>include/curses.h.in</CODE>
-for mask values, near the end. <P>
+for mask values, near the end.
 
 <H1><A NAME="fmnote">The Forms and Menu Libraries</A></H1>
 
@@ -586,7 +585,7 @@ System V's, but will settle for BSD regexps if the former isn't available. <P>
 Historical note: the panels code was written primarily to assist in
 porting u386mon 2.0 (comp.sources.misc v14i001-4) to systems lacking
 panels support; u386mon 2.10 and beyond use it.  This version has been
-slightly cleaned up for <CODE>ncurses</CODE>. <P>
+slightly cleaned up for <CODE>ncurses</CODE>.
 
 <H1><A NAME="tic">A Tour of the Terminfo Compiler</A></H1>
 
@@ -601,7 +600,7 @@ lexical analyzer (in <CODE>comp_scan.c</CODE>).  The lexer chooses its
 mode (termcap or terminfo) based on the first `,' or `:' it finds in
 each entry.  The lexer does all the work of recognizing capability
 names and values; the grammar above it is trivial, just "parse entries
-till you run out of file". <P>
+till you run out of file".
 
 <H2><A NAME="nonuse">Translation of Non-<STRONG>use</STRONG> Capabilities</A></H2>
 
@@ -622,7 +621,7 @@ organization is that the hash table can be in shareable text space). <P>
 Thus, adding a new capability is usually pretty trivial, just a matter
 of adding one line to the <CODE>include/Caps</CODE> file.  We'll have more
 to say about this in the section on <A HREF="#translation">Source-Form
-Translation</A>. <P>
+Translation</A>.
 
 <H2><A NAME="uses">Use Capability Resolution</A></H2>
 
@@ -672,7 +671,7 @@ Name collisions will still be detected, just not as cleanly.  The
 postdates the time of <STRONG>tic</STRONG>'s first call to
 <CODE>write_entry()</CODE>, Thus it will complain about overwriting
 entries newly made during the <STRONG>tic</STRONG> run, but not about
-overwriting ones that predate it. <P>
+overwriting ones that predate it.
 
 <H2><A NAME="translation">Source-Form Translation</A></H2>
 
@@ -697,7 +696,7 @@ For circumstances where you need to do algorithmic translation, there
 are functions in <CODE>parse_entry.c</CODE> called after the parse of each
 entry that are specifically intended to encapsulate such
 translations.  This, for example, is where the AIX <STRONG>box1</STRONG> capability
-get translated to an <STRONG>acsc</STRONG> string.<P>
+get translated to an <STRONG>acsc</STRONG> string.
 
 <H1><A NAME="utils">Other Utilities</A></H1>
 
@@ -709,7 +708,7 @@ 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
-followed by a <CODE>tputs()</CODE> of a selected capability. <P>
+followed by a <CODE>tputs()</CODE> of a selected capability.
 
 <H1><A NAME="style">Style Tips for Developers</A></H1>
 
@@ -739,7 +738,7 @@ data in that file in order to generate the proper table, that's still
 preferable to ad-hoc code -- that's why the fifth field (flags) is
 there. <P>
 
-Have fun! <P>
+Have fun!
 
 <H1><A NAME="port">Porting Hints</A></H1>
 
@@ -751,9 +750,10 @@ the curses internal structures, do all output through other curses
 calls (not including <CODE>tputs()</CODE> and <CODE>putp()</CODE>) and do not
 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>
+ports. 
 
-<blockquote><code>
+<blockquote>
+<code>
 lib_addch.c
 lib_addstr.c
 lib_bkgd.c
@@ -786,39 +786,45 @@ lib_tputs.c
 lib_unctrl.c
 lib_window.c
 panel.c
-</blockquote></code>
+</code>
+</blockquote>
 <P>
 
-This module is pure curses, but calls outstr(): <P>
+This module is pure curses, but calls outstr():
 
-<blockquote><code>
+<blockquote>
+<code>
 lib_getstr.c
-</blockquote></code>
+</code>
+</blockquote>
 <P>
 
 These modules are pure curses, except that they use <CODE>tputs()</CODE>
-and <CODE>putp()</CODE>: <P>
+and <CODE>putp()</CODE>:
 
-<blockquote><code>
+<blockquote>
+<code>
 lib_beep.c
 lib_color.c
 lib_endwin.c
 lib_options.c
 lib_slk.c
 lib_vidattr.c
-</blockquote></code>
+</code>
+</blockquote>
 <P>
 
-This modules assist in POSIX emulation on non-POSIX systems: <P>
+This modules assist in POSIX emulation on non-POSIX systems:
 <DL>
 <DT> sigaction.c
 <DD> signal calls
 </DL>
 
 The following source files will not be needed for a
-single-terminal-type port. <P>
+single-terminal-type port.
 
-<blockquote><code>
+<blockquote>
+<code>
 alloc_entry.c
 captoinfo.c
 clear.c
@@ -834,11 +840,12 @@ parse_entry.c
 read_entry.c
 tput.c
 write_entry.c
-</blockquote></code>
+</code>
+</blockquote>
 <P>
 
 The following modules will use open()/read()/write()/close()/lseek() on files,
-but no other OS calls. <P>
+but no other OS calls.
 
 <DL>
 <DT>lib_screen.c
@@ -850,7 +857,7 @@ but no other OS calls. <P>
 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>
+for a memory-mapped port.
 
 <dl>
 <dt>lib_longname.c<dd>assumes there may be multiple terminals
diff --git a/doc/html/index.html b/doc/html/index.html
new file mode 100644 (file)
index 0000000..3fbd24c
--- /dev/null
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
+<!--
+  $Id: index.html,v 1.1 2000/03/05 18:22:05 juergen Exp $
+-->
+<HTML>
+<HEAD>
+<TITLE>Welcome to ncurses</TITLE>
+<link rev=made href="mailto:bug-ncurses@gnu.org">
+</HEAD>
+<BODY>
+
+<H1>Welcome to ncurses</H1>
+From this index page you have access to these further documents
+<UL>
+<LI>The <a href="announce.html">Announcement</a> of the current version of ncurses.</LI>
+<LI>An <a href="ncurses-intro.html">Introduction</a> into (n)curses programming.</LI>
+<LI>A <a href="hackguide.html">hackers guide</a> to ncurses.</LI>
+<LI>A description of the <a href="Ada95.html">Ada95 binding</a> to ncurses.</LI>
+</UL><P>
+We also have HTML versions of all the ncurses <a href="man">manpages</a>.
+</BODY>
+</HTML>
+<!--
+# The following sets edit modes for GNU EMACS
+# Local Variables:
+# mode:html
+# case-fold-search:nil
+# fill-column:70
+# End:
+-->
diff --git a/doc/html/man/captoinfo.1m.html b/doc/html/man/captoinfo.1m.html
new file mode 100644 (file)
index 0000000..18f4cd9
--- /dev/null
@@ -0,0 +1,190 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>captoinfo</B>  - convert a <I>termcap</I> description into a <I>terminfo</I>
+       description
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>captoinfo</B> [<B>-v</B><I>n</I> <I>width</I>]  [<B>-V</B>] [<B>-1</B>] [<B>-w</B> <I>width</I>] <I>file</I> . . .
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       <B>captoinfo</B> looks in <I>file</I>  for  <B>termcap</B>  descriptions.   For
+       each  one  found,  an  equivalent  <B>terminfo</B> description is
+       written to standard output.  Termcap <B>tc</B>  capabilities  are
+       translated directly to terminfo <B>use</B> capabilities.
+
+       If no <I>file</I> is given, then the environment variable <B>TERMCAP</B>
+       is used for the filename or entry.  If <B>TERMCAP</B> is  a  full
+       pathname to a file, only the terminal whose name is speci-
+       fied in the environment variable <B>TERM</B>  is  extracted  from
+       that  file.   If  the  environment variable <B>TERMCAP</B> is not
+       set, then the file <B>@DATADIR@/terminfo</B> is read.
+
+       <B>-v</B>   print out tracing information on  standard  error  as
+            the program runs.
+
+       <B>-V</B>   print  out the version of the program in use on stan-
+            dard error and exit.
+
+       <B>-1</B>   cause the fields to print out one to a line.   Other-
+            wise, the fields will be printed several to a line to
+            a maximum width of 60 characters.
+
+       <B>-w</B>   change the output to <I>width</I> characters.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+       @DATADIR@/terminfo  Compiled     terminal      description
+                           database.
+
+
+</PRE>
+<H2>TRANSLATIONS FROM NONSTANDARD CAPABILITIES</H2><PRE>
+       Some  obsolete nonstandard capabilities will automatically
+       be translated into  standard  (SVr4/XSI  Curses)  terminfo
+       capabilities  by  <B>captoinfo</B>.   Whenever one of these auto-
+       matic translations is done,  the  program  will  issue  an
+       notification to stderr, inviting the user to check that it
+       has not mistakenly translated  a  completely  unknown  and
+       random capability and/or syntax error.
+
+       Nonstd   Std    From           Terminfo
+        name    name                 capability
+       -----------------------------------------------
+       BO       mr     AT&amp;T    enter_reverse_mode
+       CI       vi     AT&amp;T    cursor_invisible
+       CV       ve     AT&amp;T    cursor_normal
+       DS       mh     AT&amp;T    enter_dim_mode
+       EE       me     AT&amp;T    exit_attribute_mode
+
+       FE       LF     AT&amp;T    label_on
+       FL       LO     AT&amp;T    label_off
+       XS       mk     AT&amp;T    enter_secure_mode
+       EN       @7     XENIX   key_end
+       GE       ae     XENIX   exit_alt_charset_mode
+       GS       as     XENIX   enter_alt_charset_mode
+       HM       kh     XENIX   key_home
+       LD       kL     XENIX   key_dl
+       PD       kN     XENIX   key_npage
+       PN       po     XENIX   prtr_off
+       PS       pf     XENIX   prtr_on
+       PU       kP     XENIX   key_ppage
+       RT       @8     XENIX   kent
+       UP       ku     XENIX   kcuu1
+       KA       k;     Tek     key_f10
+       KB       F1     Tek     key_f11
+       KC       F2     Tek     key_f12
+       KD       F3     Tek     key_f13
+       KE       F4     Tek     key_f14
+       KF       F5     Tek     key_f15
+       BC       Sb     Tek     set_background
+       FC       Sf     Tek     set_foreground
+       HS       mh     Iris    enter_dim_mode
+
+       XENIX  termcap  also used to have a set of extension capa-
+       bilities for forms drawing, designed to take advantage  of
+       the IBM PC high-half graphics.  They were as follows:
+
+       Cap          Graphic
+       -----------------------------
+       G2    upper left
+       G3    lower left
+       G1    upper right
+       G4    lower right
+       GR    pointing right
+       GL    pointing left
+       GU    pointing up
+       GD    pointing down
+       GH    horizontal line
+       GV    vertical line
+       GC    intersection
+       G6    upper left
+       G7    lower left
+       G5    upper right
+       G8    lower right
+       Gr    tee pointing right
+       Gr    tee pointing left
+       Gu    tee pointing up
+       Gd    tee pointing down
+       Gh    horizontal line
+       Gv    vertical line
+       Gc    intersection
+       GG    acs magic cookie count
+
+       If  the  single-line  capabilities occur in an entry, they
+       will automatically be composed into an <B>acsc</B>  string.   The
+       double-line capabilities and <B>GG</B> are discarded with a warn-
+       ing message.
+
+       IBM's AIX has a terminfo facility descended from SVr1 ter-
+       minfo but incompatible with the SVr4 format. The following
+       AIX extensions are automatically translated:
+
+        IBM    XSI
+       -------------
+       ksel    kslt
+       kbtab   kcbt
+       font0   s0ds
+       font1   s1ds
+       font2   s2ds
+       font3   s3ds
+
+       Additionally, the AIX <B>box1</B> capability  will  be  automati-
+       cally translated to an <B>acsc</B> string.
+
+       Hewlett-Packard's  terminfo  library supports two nonstan-
+       dard terminfo capabilities <B>meml</B>  (memory  lock)  and  <B>memu</B>
+       (memory  unlock).   These will be discarded with a warning
+       message.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       This utility is actually a link to <B><A HREF="tic.1m.html">tic(1m)</A></B>, running in  <I>-I</I>
+       mode.  You can use other <I>tic</I> options such as <B>-f</B> and  <B>-x</B>.
+
+       The  trace  option isn't identical to SVr4's.  Under SVr4,
+       instead of following the -v with  a  trace  level  n,  you
+       repeat it n times.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="infocmp.1m.html">infocmp(1m)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>
+
+
+</PRE>
+<H2>AUTHOR</H2><PRE>
+       Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/clear.1.html b/doc/html/man/clear.1.html
new file mode 100644 (file)
index 0000000..fad1c20
--- /dev/null
@@ -0,0 +1,74 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>clear</B> - clear the terminal screen
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>clear</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       <B>clear</B> clears your screen if this is possible.  It looks in
+       the environment for the terminal type and then in the <B>ter-</B>
+       <B>minfo</B> database to figure out how to clear the screen.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="tput.1.html">tput(1)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_addch.3x.html b/doc/html/man/curs_addch.3x.html
new file mode 100644 (file)
index 0000000..74fdef6
--- /dev/null
@@ -0,0 +1,189 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>addch</B>,  <B>waddch</B>,  <B>mvaddch</B>,  <B>mvwaddch</B>, <B>echochar</B>, <B>wechochar</B> -
+       add a character (with attributes) to a <B>curses</B> window, then
+       advance the cursor
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>addch(chtype</B> <B>ch);</B>
+       <B>int</B> <B>waddch(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>ch);</B>
+       <B>int</B> <B>mvaddch(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>ch);</B>
+       <B>int</B> <B>mvwaddch(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>ch);</B>
+       <B>int</B> <B>echochar(chtype</B> <B>ch);</B>
+       <B>int</B> <B>wechochar(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>ch);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  <B>addch</B>,  <B>waddch</B>, <B>mvaddch</B> and <B>mvwaddch</B> routines put the
+       character <I>ch</I> into the given window at its  current  window
+       position,  which  is then advanced.  They are analogous to
+       <B>putchar</B> in <B><A HREF="stdio.3.html">stdio(3)</A></B>.  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  <B>scrollok</B>  is enabled, the scrolling region is
+       scrolled up one line.
+
+       If <I>ch</I> 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 <B>clrtoeol</B>, 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 <I>ch</I> is any control character other than tab, newline, or
+       backspace,  it  is  drawn  in  <B>^</B><I>X</I> notation.  Calling <B>winch</B>
+       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 <B>addch</B> or related functions by logical-ORing them
+       into the character.  (Thus,  text,  including  attributes,
+       can  be  copied  from  one place to another using <B>inch</B> and
+       <B>addch</B>.).  See the <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B> page for values of  prede-
+       fined video attribute constants that can be usefully OR'ed
+       into characters.
+
+       The <B>echochar</B> and <B>wechochar</B> routines are  equivalent  to  a
+       call  to <B>addch</B> followed by a call to <B>refresh</B>, or a call to
+       <B>waddch</B> followed by a call to <B>wrefresh</B>.  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
+       equivalents.
+
+   <B>Line</B> <B>Graphics</B>
+       The following variables may be used to  add  line  drawing
+       characters  to  the screen with routines of the <B>addch</B> fam-
+       ily.  The default character listed below is  used  if  the
+       <B>acsc</B>   capability   doesn't   define  a  terminal-specific
+       replacement for it (but see the EXTENSIONS section below).
+       The names are taken from VT100 nomenclature.
+
+       <I>Name</I>           <I>Default</I>   <I>Description</I>
+       --------------------------------------------------
+       ACS_BLOCK      #         solid square block
+       ACS_BOARD      #         board of squares
+       ACS_BTEE       +         bottom tee
+       ACS_BULLET     o         bullet
+       ACS_CKBOARD    :         checker board (stipple)
+       ACS_DARROW     v         arrow pointing down
+       ACS_DEGREE     '         degree symbol
+       ACS_DIAMOND    +         diamond
+       ACS_GEQUAL     &gt;         greater-than-or-equal-to
+       ACS_HLINE      -         horizontal line
+       ACS_LANTERN    #         lantern symbol
+       ACS_LARROW     &lt;         arrow pointing left
+       ACS_LEQUAL     &lt;         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     &gt;         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-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
+
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All routines return the integer <B>ERR</B> upon failure and <B>OK</B> on
+       success (the SVr4 manuals specify only "an  integer  value
+       other than <B>ERR</B>") upon successful completion, unless other-
+       wise noted in the preceding routine descriptions.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <B>addch</B>, <B>mvaddch</B>, <B>mvwaddch</B>, and  <B>echochar</B>  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 <B>acsc</B> 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
+       <B><A HREF="ncurses.3x.html">ncurses(3x)</A></B>.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>, <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>,  <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>,
+       <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>, <B><A HREF="putc.3S.html">putc(3S)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_addchstr.3x.html b/doc/html/man/curs_addchstr.3x.html
new file mode 100644 (file)
index 0000000..43f244d
--- /dev/null
@@ -0,0 +1,80 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>addchstr</B>,  <B>addchnstr</B>,  <B>waddchstr</B>,  <B>waddchnstr</B>, <B>mvaddchstr</B>,
+       <B>mvaddchnstr</B>, <B>mvwaddchstr</B>, <B>mvwaddchnstr</B> - add a  string  of
+       characters (and attributes) to a <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>addchstr(const</B> <B>chtype</B> <B>*chstr);</B>
+       <B>int</B> <B>addchnstr(const</B> <B>chtype</B> <B>*chstr,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>waddchstr(WINDOW</B> <B>*win,</B> <B>const</B> <B>chtype</B> <B>*chstr);</B>
+       <B>int</B> <B>waddchnstr(WINDOW</B> <B>*win,</B> <B>const</B> <B>chtype</B> <B>*chstr,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>mvaddchstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>chtype</B> <B>*chstr);</B>
+       <B>int</B> <B>mvaddchnstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>chtype</B> <B>*chstr,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>mvwaddchstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B>  <B>x,</B>  <B>const</B>  <B>chtype</B>
+       <B>*chstr);</B>
+       <B>int</B>  <B>mvwaddchnstr(WINDOW</B>  <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>chtype</B>
+       <B>*chstr,</B> <B>int</B> <B>n);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These routines copy <I>chstr</I> into the window image  structure
+       at  and  after the current cursor position.  The four rou-
+       tines with <I>n</I> as the last argument copy at most <I>n</I> elements,
+       but  no  more than will fit on the line.  If <B>n</B>=<B>-1</B> then the
+       whole string is copied, to the maximum number  of  charac-
+       ters that will fit on the line.
+
+       The window cursor is <I>not</I> advanced, and these routines work
+       faster than <B>waddnstr</B>.  On the other hand, they don't  per-
+       form  any  kind  of  checking  (such  as  for the newline,
+       backspace, or  carriage  return  characters),  they  don't
+       advance  the  current  cursor  position, they don't expand
+       other control characters to ^-escapes, and  they  truncate
+       the  string  if  it  crosses the right margin, rather then
+       wrapping it around to the new line.
+
+
+
+</PRE>
+<H2>RETURN VALUES</H2><PRE>
+       All routines return the integer <B>ERR</B> upon failure and <B>OK</B> on
+       success  (the  SVr4 manuals specify only "an integer value
+       other than <B>ERR</B>") upon successful completion, unless other-
+       wise noted in the preceding routine descriptions.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that all routines except <B>waddchnstr</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       All  these  entry  points  are described in the XSI Curses
+       standard, Issue 4.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>.
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_addstr.3x.html b/doc/html/man/curs_addstr.3x.html
new file mode 100644 (file)
index 0000000..e83e795
--- /dev/null
@@ -0,0 +1,80 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>addstr</B>,  <B>addnstr</B>,  <B>waddstr</B>, <B>waddnstr</B>, <B>mvaddstr</B>, <B>mvaddnstr</B>,
+       <B>mvwaddstr</B>, <B>mvwaddnstr</B> - add a string of  characters  to  a
+       <B>curses</B> window and advance cursor
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>addstr(const</B> <B>char</B> <B>*str);</B>
+       <B>int</B> <B>addnstr(const</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>waddstr(WINDOW</B> <B>*win,</B> <B>const</B> <B>char</B> <B>*str);</B>
+       <B>int</B> <B>waddnstr(WINDOW</B> <B>*win,</B> <B>const</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>mvaddstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>char</B> <B>*str);</B>
+       <B>int</B> <B>mvaddnstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>mvwaddstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>char</B> <B>*str);</B>
+       <B>int</B> <B>mvwaddnstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>char</B> <B>*str,</B>
+       <B>int</B> <B>n);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These  routines  write  the characters of the (null-termi-
+       nated) character string <I>str</I> on the given  window.   It  is
+       similar  to  calling <B>waddch</B> once for each character in the
+       string.  The four routines with <I>n</I>  as  the  last  argument
+       write  at  most <I>n</I> characters.  If <I>n</I> is -1, then the entire
+       string will be added.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All routines return the integer <B>ERR</B> upon failure and <B>OK</B> on
+       success  (the  SVr4 manuals specify only "an integer value
+       other than <B>ERR</B>") upon successful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note  that  all  of  these  routines  except  <B>waddstr</B>  and
+       <B>waddnstr</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       All  these  entry  points  are described in the XSI Curses
+       standard, Issue 4.  The XSI errors EILSEQ  and  EOVERFLOW,
+       associated  with  extended-level  conformance, are not yet
+       detected.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_attr.3x.html b/doc/html/man/curs_attr.3x.html
new file mode 100644 (file)
index 0000000..6c2df3d
--- /dev/null
@@ -0,0 +1,186 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>attroff</B>,  <B>wattroff</B>,  <B>attron</B>,  <B>wattron</B>,  <B>attrset</B>, <B>wattrset</B>,
+       <B>color_set</B>,  <B>wcolor_set</B>,  <B>standend</B>,  <B>wstandend</B>,   <B>standout</B>,
+       <B>wstandout</B>,   <B>attr_get</B>,   <B>wattr_get</B>,  <B>attr_off</B>,  <B>wattr_off</B>,
+       <B>attr_on</B>, <B>wattr_on</B>,  <B>attr_set</B>,  <B>wattr_set</B>,  <B>chgat</B>,  <B>wchgat</B>,
+       <B>mvchgat</B>, <B>mvwchgat</B>, <B>PAIR_NUMBER</B> - <B>curses</B> character and win-
+       dow attribute control routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+       <B>int</B> <B>attroff(int</B> <B>attrs);</B>
+       <B>int</B> <B>wattroff(WINDOW</B> <B>*win,</B> <B>int</B> <B>attrs);</B>
+       <B>int</B> <B>attron(int</B> <B>attrs);</B>
+       <B>int</B> <B>wattron(WINDOW</B> <B>*win,</B> <B>int</B> <B>attrs);</B>
+       <B>int</B> <B>attrset(int</B> <B>attrs);</B>
+       <B>int</B> <B>wattrset(WINDOW</B> <B>*win,</B> <B>int</B> <B>attrs);</B>
+       <B>int</B> <B>color_set(short</B> <B>color_pair_number,</B> <B>void*</B> <B>opts);</B>
+       <B>int</B> <B>wcolor_set(WINDOW</B> <B>*win,</B> <B>short</B> <B>color_pair_number,</B>
+             <B>void*</B> <B>opts);</B>
+       <B>int</B> <B>standend(void);</B>
+       <B>int</B> <B>wstandend(WINDOW</B> <B>*win);</B>
+       <B>int</B> <B>standout(void);</B>
+       <B>int</B> <B>wstandout(WINDOW</B> <B>*win);</B>
+       <B>int</B> <B>attr_get(attr_t</B> <B>*attrs,</B> <B>short</B> <B>*pair,</B> <B>void</B> <B>*opts);</B>
+       <B>int</B> <B>wattr_get(WINDOW</B> <B>*win,</B> <B>attr_t</B> <B>*attrs,</B> <B>short</B> <B>*pair,</B>
+              <B>void</B> <B>*opts);</B>
+       <B>int</B> <B>attr_off(attr_t</B> <B>attrs,</B> <B>void</B> <B>*opts);</B>
+       <B>int</B> <B>wattr_off(WINDOW</B> <B>*win,</B> <B>attr_t</B> <B>attrs,</B> <B>void</B> <B>*opts);</B>
+       <B>int</B> <B>attr_on(attr_t</B> <B>attrs,</B> <B>void</B> <B>*opts);</B>
+       <B>int</B> <B>wattr_on(WINDOW</B> <B>*win,</B> <B>attr_t</B> <B>attrs,</B> <B>void</B> <B>*opts);</B>
+       <B>int</B> <B>attr_set(attr_t</B> <B>attrs,</B> <B>short</B> <B>pair,</B> <B>void</B> <B>*opts);</B>
+       <B>int</B> <B>wattr_set(WINDOW</B> <B>*win,</B> <B>attr_t</B> <B>attrs,</B> <B>short</B> <B>pair,</B>  <B>void</B>
+       <B>*opts);</B>
+       <B>int</B> <B>chgat(int</B> <B>n,</B> <B>attr_t</B> <B>attr,</B> <B>short</B> <B>color,</B>
+             <B>const</B> <B>void</B> <B>*opts)</B>
+       <B>int</B> <B>wchgat(WINDOW</B> <B>*win,</B> <B>int</B> <B>n,</B> <B>attr_t</B> <B>attr,</B>
+             <B>short</B> <B>color,</B> <B>const</B> <B>void</B> <B>*opts)</B>
+       <B>int</B> <B>mvchgat(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>int</B> <B>n,</B> <B>attr_t</B> <B>attr,</B>
+             <B>short</B> <B>color,</B> <B>const</B> <B>void</B> <B>*opts)</B>
+       <B>int</B> <B>mvwchgat(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>int</B> <B>n,</B>
+             <B>attr_t</B> <B>attr,</B> <B>short</B> <B>color,</B> <B>const</B> <B>void</B> <B>*opts)</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These  routines  manipulate  the current attributes of the
+       named window.  The current attributes of a window apply to
+       all  characters that are written into the window with <B>wad-</B>
+       <B>dch</B>, <B>waddstr</B> and <B>wprintw</B>.  Attributes are  a  property  of
+       the  character,  and  move  with the character through any
+       scrolling and insert/delete line/character operations.  To
+       the  extent  possible,  they  are displayed as appropriate
+       modifications to the graphic rendition of  characters  put
+       on the screen.
+
+       The  routine  <B>attrset</B>  sets  the current attributes of the
+       given window to <I>attrs</I>.  The routine <B>attroff</B> turns off  the
+       named  attributes  without turning any other attributes on
+       or off.  The routine <B>attron</B> turns on the named  attributes
+       without affecting any others.  The routine <B>standout</B> is the
+       same as <B>attron(A_STANDOUT)</B>.  The routine <B>standend</B>  is  the
+       same as <B>attrset(A_NORMAL)</B> or <B>attrset(0)</B>, that is, it turns
+       off all attributes.
+
+       The routine <B>color_set</B> 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  <B>wattr_get</B>  returns the current attribute and
+       color pair for the given window; <B>attr_get</B> returns the cur-
+       rent  attribute  and color pair for <B>stdscr</B>.  The remaining
+       <B>attr_</B>* functions operate exactly  like  the  corresponding
+       <B>attr</B>*  functions,  except that they take arguments of type
+       <B>attr_t</B> rather than <B>int</B>.
+
+       The routine <B>chgat</B> changes the attributes of a given number
+       of  characters  starting at the current cursor location of
+       <B>stdscr</B>.  It does not update the cursor and does  not  per-
+       form  wrapping.   A  character count of -1 or greater than
+       the remaining window width means to change attributes  all
+       the  way to the end of the current line.  The <B>wchgat</B> func-
+       tion generalizes this to any window; the <B>mvwchgat</B> function
+       does a cursor move before acting.  In these functions, the
+       color argument is a color-pair  index  (as  in  the  first
+       argument  of  <I>init</I><B>_</B><I>pair</I>,  see  <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>).   The <B>opts</B>
+       argument is not presently used, but is  reserved  for  the
+       future (leave it <B>NULL</B>).
+
+   <B>Attributes</B>
+       The following video attributes, defined in <B>&lt;curses.h&gt;</B>, can
+       be passed to the routines <B>attron</B>, <B>attroff</B>, and <B>attrset</B>, or
+       OR'ed with the characters passed to <B>addch</B>.
+
+        <B>A_NORMAL</B>        Normal display (no highlight)
+        <B>A_STANDOUT</B>      Best highlighting mode of the terminal.
+        <B>A_UNDERLINE</B>     Underlining
+        <B>A_REVERSE</B>       Reverse video
+        <B>A_BLINK</B>         Blinking
+        <B>A_DIM</B>           Half bright
+        <B>A_BOLD</B>          Extra bright or bold
+        <B>A_PROTECT</B>       Protected mode
+        <B>A_INVIS</B>         Invisible or blank mode
+        <B>A_ALTCHARSET</B>    Alternate character set
+        <B>A_CHARTEXT</B>      Bit-mask to extract a character
+        <B>COLOR_PAIR(</B><I>n</I><B>)</B>   Color-pair number <I>n</I>
+
+       The following macro is the reverse of <B>COLOR_PAIR(</B><I>n</I><B>)</B>:
+
+       <B>PAIR_NUMBER(</B><I>attrs</I>) Returns the pair number associated
+                          with the <B>COLOR_PAIR(</B><I>n</I><B>)</B> attribute.
+
+       The  return values of many of these routines are not mean-
+       ingful (they are implemented as macro-expanded assignments
+       and  simply  return their argument).  The SVr4 manual page
+       claims (falsely) that these routines always return <B>1</B>.
+
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <B>attroff</B>,  <B>wattroff</B>,  <B>attron</B>,  <B>wattron</B>,  <B>attrset</B>,
+       <B>wattrset</B>, <B>standend</B> and <B>standout</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       All  these functions are supported in the XSI Curses stan-
+       dard, Issue 4.  The standard defined  the  dedicated  type
+       for  highlights,  <B>attr_t</B>,  which  is  not  defined in SVr4
+       curses. The functions taking <B>attr_t</B> arguments are not sup-
+       ported under SVr4.
+
+       The  XSI  Curses  standard  states that whether the tradi-
+       tional  functions  <B>attron</B>/<B>attroff</B>/<B>attrset</B>  can  manipulate
+       attributes  other  than <B>A_BLINK</B>, <B>A_BOLD</B>, <B>A_DIM</B>, <B>A_REVERSE</B>,
+       <B>A_STANDOUT</B>, or <B>A_UNDERLINE</B> is "unspecified".   Under  this
+       implementation  as  well  as  SVr4 curses, these functions
+       correctly manipulate all other  highlights  (specifically,
+       <B>A_ALTCHARSET</B>, <B>A_PROTECT</B>, and <B>A_INVIS</B>).
+
+       XSI  Curses added the new entry points, <B>attr_get</B>, <B>attr_on</B>,
+       <B>attr_off</B>,  <B>attr_set</B>,   <B>wattr_on</B>,   <B>wattr_off</B>,   <B>wattr_get</B>,
+       <B>wattr_set</B>.   These  are intended to work with a new series
+       of highlight macros prefixed with <B>WA_</B>.
+
+        <B>WA_NORMAL</B>       Normal display (no highlight)
+        <B>WA_STANDOUT</B>     Best highlighting mode of the terminal.
+        <B>WA_UNDERLINE</B>    Underlining
+        <B>WA_REVERSE</B>      Reverse video
+        <B>WA_BLINK</B>        Blinking
+        <B>WA_DIM</B>          Half bright
+        <B>WA_BOLD</B>         Extra bright or bold
+        <B>WA_ALTCHARSET</B>   Alternate character set
+
+       The XSI curses standard specifies that each pair of corre-
+       sponding  <B>A_</B>  and <B>WA_</B>-using functions operates on the same
+       current-highlight information.
+
+       The XSI standard extended conformance level adds new high-
+       lights <B>A_HORIZONTAL</B>, <B>A_LEFT</B>, <B>A_LOW</B>, <B>A_RIGHT</B>, <B>A_TOP</B>, <B>A_VER-</B>
+       <B>TICAL</B> (and corresponding <B>WA_</B> macros for each)  which  this
+       curses does not yet support.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>,        <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>,        <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>,
+       <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_beep.3x.html b/doc/html/man/curs_beep.3x.html
new file mode 100644 (file)
index 0000000..516cd68
--- /dev/null
@@ -0,0 +1,80 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>beep</B>, <B>flash</B> - <B>curses</B> bell and screen flash routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>beep(void);</B>
+       <B>int</B> <B>flash(void);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <B>beep</B> and <B>flash</B> routines are used to alert the terminal
+       user.  The routine <B>beep</B> sounds an  audible  alarm  on  the
+       terminal,  if  possible;  otherwise  it flashes the screen
+       (visible bell).  The routine <B>flash</B> flashes the screen, and
+       if  that  is  not  possible, sounds the alert.  If neither
+       alert is possible, nothing happens.  Nearly all  terminals
+       have  an  audible  alert (bell or beep), but only some can
+       flash the screen.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       These routines return <B>OK</B> if they  succeed  in  beeping  or
+       flashing, <B>ERR</B> otherwise.
+
+
+</PRE>
+<H2>EXTENSIONS</H2><PRE>
+       SVr4's  beep  and flash routines always returned <B>OK</B>, so it
+       was not possible to tell when the beep or flash failed.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These functions are defined in the  XSI  Curses  standard,
+       Issue  4.  Like SVr4, it specifies that they always return
+       <B>OK</B>.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_bkgd.3x.html b/doc/html/man/curs_bkgd.3x.html
new file mode 100644 (file)
index 0000000..d498f46
--- /dev/null
@@ -0,0 +1,134 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>bkgdset</B>,  <B>wbkgdset</B>,  <B>bkgd</B>,  <B>wbkgd</B>, <B>getbkgd</B> - <B>curses</B> window
+       background manipulation routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>void</B> <B>bkgdset(const</B> <B>chtype</B> <B>ch);</B>
+       <B>void</B> <B>wbkgdset(WINDOW</B> <B>*win,</B> <B>const</B> <B>chtype</B> <B>ch);</B>
+       <B>int</B> <B>bkgd(const</B> <B>chtype</B> <B>ch);</B>
+       <B>int</B> <B>wbkgd(WINDOW</B> <B>*win,</B> <B>const</B> <B>chtype</B> <B>ch);</B>
+       <B>chtype</B> <B>getbkgd(WINDOW</B> <B>*win);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <B>bkgdset</B> and <B>wbkgdset</B>  routines  manipulate  the  back-
+       ground  of  the  named window.  The window background is a
+       <B>chtype</B> consisting of any combination of attributes  (i.e.,
+       rendition)  and  a  character.   The attribute part of the
+       background is combined (OR'ed) with all non-blank  charac-
+       ters  that  are written into the window with <B>waddch</B>.  Both
+       the character and attribute parts of  the  background  are
+       combined   with  the  blank  characters.   The  background
+       becomes a property of the character  and  moves  with  the
+       character   through   any   scrolling   and  insert/delete
+       line/character operations.
+
+       To the extent  possible  on  a  particular  terminal,  the
+       attribute  part  of  the  background  is  displayed as the
+       graphic rendition of the character put on the screen.
+
+       The <B>bkgd</B> and <B>wbkgd</B> functions set the  background  property
+       of  the  current  or  specified window and then apply this
+       setting to every character position in that window:
+
+              The rendition of every character on the  screen  is
+              changed to the new background rendition.
+
+              Wherever  the  former background character appears,
+              it is changed to the new background character.
+
+       The <B>getbkgd</B> function returns the  given  window's  current
+       background character/attribute pair.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       The  routines  <B>bkgd</B>  and <B>wbkgd</B> return the integer <B>OK</B>.  The
+       SVr4.0 manual says "or a non-negative integer  if  <B>immedok</B>
+       is set", but this appears to be an error.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <B>bkgdset</B> and <B>bkgd</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  functions are described in the XSI Curses standard,
+       Issue 4.  The draft does not include <B>const</B>  qualifiers  on
+       the arguments.  The standard specifies that <B>bkgd</B> and <B>wbkgd</B>
+       return <B>ERR</B>, on failure. but gives no failure conditions.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>, <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_border.3x.html b/doc/html/man/curs_border.3x.html
new file mode 100644 (file)
index 0000000..44f6e43
--- /dev/null
@@ -0,0 +1,135 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>border</B>,  <B>wborder</B>,  <B>box</B>, <B>hline</B>, <B>whline</B>, <B>vline</B>, <B>wvline</B>, <B>mvh-</B>
+       <B>line</B>, <B>mvwhline</B>, <B>mvvline</B>, <B>mvwvline</B> - create <B>curses</B> borders,
+       horizontal and vertical lines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+       <B>int</B> <B>border(chtype</B> <B>ls,</B> <B>chtype</B> <B>rs,</B> <B>chtype</B> <B>ts,</B> <B>chtype</B> <B>bs,</B>
+          <B>chtype</B> <B>tl,</B> <B>chtype</B> <B>tr,</B> <B>chtype</B> <B>bl,</B> <B>chtype</B> <B>br);</B>
+       <B>int</B> <B>wborder(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>ls,</B> <B>chtype</B> <B>rs,</B>
+          <B>chtype</B> <B>ts,</B> <B>chtype</B> <B>bs,</B> <B>chtype</B> <B>tl,</B> <B>chtype</B> <B>tr,</B>
+          <B>chtype</B> <B>bl,</B> <B>chtype</B> <B>br);</B>
+       <B>int</B> <B>box(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>verch,</B> <B>chtype</B> <B>horch);</B>
+       <B>int</B> <B>hline(chtype</B> <B>ch,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>whline(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>ch,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>vline(chtype</B> <B>ch,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>wvline(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>ch,</B> <B>int</B> <B>n);</B>
+       <B>mvhline(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>ch,</B> <B>int</B> <B>n);</B>
+       <B>mvwhline(WINDOW</B> <B>*,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>ch,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>mvvline(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>ch,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>mvwvline(WINDOW</B> <B>*,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>ch,</B> <B>int</B> <B>n);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <B>border</B>, <B>wborder</B> and <B>box</B> routines draw a box around the
+       edges of a window.  The argument <I>ls</I>  is  a  character  and
+       attributes  used  for  the  left  side of the border, <I>rs</I> -
+       right side, <I>ts</I> - top side, <I>bs</I> -  bottom  side,  <I>tl</I>  -  top
+       left-hand  corner, <I>tr</I> - top right-hand corner, <I>bl</I> - bottom
+       left-hand corner, and <I>br</I> - bottom right-hand  corner.   If
+       any of these arguments is zero, then the following default
+       values (defined in <B>curses.h</B>) are used instead:  <B>ACS_VLINE</B>,
+       <B>ACS_VLINE</B>,     <B>ACS_HLINE</B>,     <B>ACS_HLINE</B>,     <B>ACS_ULCORNER</B>,
+       <B>ACS_URCORNER</B>, <B>ACS_LLCORNER</B>, <B>ACS_LRCORNER</B>.
+
+       <B>box(</B><I>win</I><B>,</B> <I>verch</I><B>,</B> <I>horch</I><B>)</B> is a shorthand  for  the  following
+       call:  <B>wborder(</B><I>win</I><B>,</B>  <I>verch</I><B>,</B>  <I>verch</I><B>,</B> <I>horch</I><B>,</B> <I>horch</I><B>,</B> <B>0,</B> <B>0,</B> <B>0,</B>
+       <B>0)</B>.
+
+       The <B>hline</B> and <B>whline</B> functions draw a horizontal (left  to
+       right)  line using <I>ch</I> starting at the current cursor posi-
+       tion in the window.  The current cursor  position  is  not
+       changed.   The  line  is  at most <I>n</I> characters long, or as
+       many as fit into the window.
+
+       The <B>vline</B> and <B>wvline</B> functions draw  a  vertical  (top  to
+       bottom) line using <I>ch</I> starting at the current cursor posi-
+       tion in the window.  The current cursor  position  is  not
+       changed.   The  line  is  at most <I>n</I> characters long, or as
+       many as fit into the window.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All routines return the integer  <B>OK</B>.   The  SVr4.0  manual
+       says  "or  a  non-negative integer if <B>immedok</B> is set", but
+       this appears to be an error.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The borders generated by these functions are  <I>inside</I>  bor-
+       ders (this is also true of SVr4 curses, though the fact is
+       not documented).
+
+       Note that <B>border</B> and <B>box</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These functions are described in the XSI Curses  standard,
+       Issue 4.  Additional functions <B>mvhline</B>, <B>mvvline</B>, <B>mvwhline</B>,
+       and <B>mvwvline</B> are described there which this implementation
+       does  not  yet  support.  The standard specifies that they
+       return <B>ERR</B> on failure, but specifies no error  conditions.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_clear.3x.html b/doc/html/man/curs_clear.3x.html
new file mode 100644 (file)
index 0000000..1a874f2
--- /dev/null
@@ -0,0 +1,134 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>erase</B>,  <B>werase</B>,  <B>clear</B>,  <B>wclear</B>, <B>clrtobot</B>, <B>wclrtobot</B>, <B>clr-</B>
+       <B>toeol</B>, <B>wclrtoeol</B> - clear all or part of a <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#</B> <B>include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>erase(void);</B>
+       <B>int</B> <B>werase(WINDOW</B> <B>*win);</B>
+       <B>int</B> <B>clear(void);</B>
+       <B>int</B> <B>wclear(WINDOW</B> <B>*win);</B>
+       <B>int</B> <B>clrtobot(void);</B>
+       <B>int</B> <B>wclrtobot(WINDOW</B> <B>*win);</B>
+       <B>int</B> <B>clrtoeol(void);</B>
+       <B>int</B> <B>wclrtoeol(WINDOW</B> <B>*win);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <B>erase</B> and <B>werase</B> routines copy blanks to  every  posi-
+       tion in the window, clearing the screen.
+
+       The  <B>clear</B>  and <B>wclear</B> routines are like <B>erase</B> and <B>werase</B>,
+       but they also call <B>clearok</B>, so that the screen is  cleared
+       completely  on  the  next call to <B>wrefresh</B> for that window
+       and repainted from scratch.
+
+       The <B>clrtobot</B> and <B>wclrtobot</B> routines erase from the  cursor
+       to the end of screen.  That is, they erase all lines below
+       the cursor in the window.  Also, the current line  to  the
+       right of the cursor, inclusive, is erased.
+
+       The <B>clrtoeol</B> and <B>wclrtoeol</B> routines erase the current line
+       to the right of the cursor, inclusive, to the end  of  the
+       current line.
+
+       Blanks created by erasure have the current background ren-
+       dition (as set by <B>wbkgdset</B>) merged into them.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All routines return the integer  <B>OK</B>.   The  SVr4.0  manual
+       says  "or  a  non-negative integer if <B>immedok</B> is set", but
+       this appears to be an error.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <B>erase</B>, <B>werase</B>, <B>clear</B>, <B>wclear</B>, <B>clrtobot</B>, and <B>clr-</B>
+       <B>toeol</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  functions are described in the XSI Curses standard,
+       Issue 4.  The standard specifies that they return  <B>ERR</B>  on
+       failure, but specifies no error conditions.
+
+       Some  historic  curses  implementations had, as an undocu-
+       mented feature,  the  ability  to  do  the  equivalent  of
+       <B>clearok(...,</B>    <B>1)</B>    by    saying   <B>touchwin(stdscr)</B>   or
+       <B>clear(stdscr)</B>.  This will not work under ncurses.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_color.3x.html b/doc/html/man/curs_color.3x.html
new file mode 100644 (file)
index 0000000..296d8e9
--- /dev/null
@@ -0,0 +1,242 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>start_color</B>,     <B>init_pair</B>,     <B>init_color</B>,    <B>has_colors</B>,
+       <B>can_change_color</B>, <B>color_content</B>, <B>pair_content</B>,  <B>COLOR_PAIR</B>
+       - <B>curses</B> color manipulation routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#</B> <B>include</B> <B>&lt;curses.h&gt;</B>
+       <B>int</B> <B>start_color(void);</B>
+       <B>int</B> <B>init_pair(short</B> <B>pair,</B> <B>short</B> <B>f,</B> <B>short</B> <B>b);</B>
+       <B>int</B> <B>init_color(short</B> <B>color,</B> <B>short</B> <B>r,</B> <B>short</B> <B>g,</B> <B>short</B> <B>b);</B>
+       <B>bool</B> <B>has_colors(void);</B>
+       <B>bool</B> <B>can_change_color(void);</B>
+       <B>int</B>  <B>color_content(short</B>  <B>color,</B> <B>short</B> <B>*r,</B> <B>short</B> <B>*g,</B> <B>short</B>
+       <B>*b);</B>
+       <B>int</B> <B>pair_content(short</B> <B>pair,</B> <B>short</B> <B>*f,</B> <B>short</B> <B>*b);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+   <B>Overview</B>
+       <B>curses</B> support color attributes  on  terminals  with  that
+       capability.   To  use  these  routines <B>start_color</B> must be
+       called, usually right after <B>initscr</B>.   Colors  are  always
+       used  in pairs (referred to as color-pairs).  A color-pair
+       consists of a foreground  color  (for  characters)  and  a
+       background color (for the blank field on which the charac-
+       ters are displayed).  A programmer  initializes  a  color-
+       pair  with  the routine <B>init_pair</B>.  After it has been ini-
+       tialized, <B>COLOR_PAIR</B>(<I>n</I>), a macro  defined  in  <B>&lt;curses.h&gt;</B>,
+       can be used as a new video attribute.
+
+       If  a  terminal  is capable of redefining colors, the pro-
+       grammer can use the routine <B>init_color</B> to change the defi-
+       nition   of   a   color.    The  routines  <B>has_colors</B>  and
+       <B>can_change_color</B>  return  <B>TRUE</B>  or  <B>FALSE</B>,  depending   on
+       whether  the  terminal  has color capabilities and whether
+       the  programmer  can  change  the  colors.   The   routine
+       <B>color_content</B>  allows  a programmer to extract the amounts
+       of red, green,  and  blue  components  in  an  initialized
+       color.   The  routine  <B>pair_content</B> allows a programmer to
+       find out how a given color-pair is currently defined.
+
+   <B>Routine</B> <B>Descriptions</B>
+       The <B>start_color</B> routine requires no arguments.  It must be
+       called  if  the programmer wants to use colors, and before
+       any other color manipulation routine  is  called.   It  is
+       good  practice  to  call this routine right after <B>initscr</B>.
+       <B>start_color</B> initializes eight basic  colors  (black,  red,
+       green,  yellow,  blue,  magenta, cyan, and white), and two
+       global variables,  <B>COLORS</B>  and  <B>COLOR_PAIRS</B>  (respectively
+       defining  the maximum number of colors and color-pairs the
+       terminal can support).  It also restores the colors on the
+       terminal to the values they had when the terminal was just
+       turned on.
+
+       The <B>init_pair</B> routine changes the definition of  a  color-
+       pair.   It takes three arguments: the number of the color-
+       pair to be changed, the foreground color number,  and  the
+       background color number.  For portable applications:
+
+       -    The value of the first argument must be between <B>1</B> and
+            <B>COLOR_PAIRS-1</B>.
+
+       -    The value of the second and third arguments  must  be
+            between  0  and  <B>COLORS</B> (the 0 color pair is wired to
+            white on black and cannot be changed).
+
+       If the color-pair was previously initialized,  the  screen
+       is  refreshed  and  all  occurrences of that color-pair is
+       changed to the new definition.
+
+       As an extension, ncurses allows you to set  color  pair  0
+       via  the  <B>assume_default_colors</B> routine, or to specify the
+       use of default colors  (color  number  <B>-1</B>)  if  you  first
+       invoke the <B>use_default_colors</B> routine.
+
+       The  <B>init_color</B> routine changes the definition of a color.
+       It takes four arguments: the number of  the  color  to  be
+       changed  followed  by three RGB values (for the amounts of
+       red, green, and blue components).  The value of the  first
+       argument  must  be between <B>0</B> and <B>COLORS</B>.  (See the section
+       <B>Colors</B> for the default color index.)   Each  of  the  last
+       three  arguments must be a value between 0 and 1000.  When
+       <B>init_color</B> is used, all occurrences of that color  on  the
+       screen immediately change to the new definition.
+
+       The  <B>has_colors</B> routine requires no arguments.  It returns
+       <B>TRUE</B> if the terminal can manipulate colors; otherwise,  it
+       returns <B>FALSE</B>.  This routine facilitates writing terminal-
+       independent programs.  For example, a programmer  can  use
+       it  to  decide  whether  to  use color or some other video
+       attribute.
+
+       The <B>can_change_color</B> routine requires  no  arguments.   It
+       returns  <B>TRUE</B>  if  the  terminal  supports  colors and can
+       change their definitions; other, it returns  <B>FALSE</B>.   This
+       routine facilitates writing terminal-independent programs.
+
+       The <B>color_content</B> routine gives programmers a way to  find
+       the intensity of the red, green, and blue (RGB) components
+       in a color.  It requires four arguments: the color number,
+       and  three addresses of <B>short</B>s for storing the information
+       about the amounts of red, green, and  blue  components  in
+       the  given color.  The value of the first argument must be
+       between 0 and <B>COLORS</B>.  The values that are stored  at  the
+       addresses  pointed  to  by  the  last  three arguments are
+       between 0 (no component) and 1000 (maximum amount of  com-
+       ponent).
+
+       The  <B>pair_content</B>  routine  allows programmers to find out
+       what colors a given color-pair consists of.   It  requires
+       three  arguments: the color-pair number, and two addresses
+       of <B>short</B>s for storing the foreground  and  the  background
+       color  numbers.   The  value of the first argument must be
+       between 1 and <B>COLOR_PAIRS-1</B>.  The values that  are  stored
+       at  the addresses pointed to by the second and third argu-
+       ments are between 0 and <B>COLORS</B>.
+
+   <B>Colors</B>
+       In <B>&lt;curses.h&gt;</B> the following macros are defined.  These are
+       the  default colors.  <B>curses</B> also assumes that <B>COLOR_BLACK</B>
+       is the default background color for all terminals.
+
+             <B>COLOR_BLACK</B>
+             <B>COLOR_RED</B>
+             <B>COLOR_GREEN</B>
+             <B>COLOR_YELLOW</B>
+             <B>COLOR_BLUE</B>
+             <B>COLOR_MAGENTA</B>
+             <B>COLOR_CYAN</B>
+             <B>COLOR_WHITE</B>
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       The routines <B>can_change_color()</B>  and  <B>has_colors()</B>  return
+       <B>TRUE</B> or <B>FALSE</B>.
+
+       All other routines return the integer <B>ERR</B> upon failure and
+       an <B>OK</B> (SVr4 specifies only "an integer  value  other  than
+       <B>ERR</B>") upon successful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       In  the  <I>ncurses</I> implementation, there is a separate color
+       activation flag, color palette,  color  pairs  table,  and
+       associated  COLORS and COLOR_PAIRS counts for each screen;
+       the <B>start_color</B> function only affects the current  screen.
+       The SVr4/XSI interface is not really designed with this in
+       mind, and historical  implementations  may  use  a  single
+       shared color palette.
+
+       Note that setting an implicit background color via a color
+       pair affects only character cells that a  character  write
+       operation  explicitly  touches.   To change the background
+       color used when parts of a window are blanked  by  erasing
+       or scrolling operations, see <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>.
+
+       Several  caveats  apply  on 386 and 486 machines with VGA-
+       compatible graphics:
+
+       -    COLOR_YELLOW is actually brown.  To get  yellow,  use
+            COLOR_YELLOW combined with the <B>A_BOLD</B> attribute.
+
+       -    The  A_BLINK  attribute  should  in  theory cause the
+            background to go bright.  This often fails  to  work,
+            and  even  some cards for which it mostly works (such
+            as the Paradise and compatibles) do the  wrong  thing
+            when you try to set a bright "yellow" background (you
+            get a blinking yellow foreground instead).
+
+       -    Color RGB values are not settable.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       This implementation satisfies XSI Curses's  minimum  maxi-
+       mums for <B>COLORS</B> and <B>COLOR_PAIRS</B>.
+
+       The  <B>init_pair</B>  routine  accepts  negative values of fore-
+       ground   and   background    color    to    support    the
+       <B>use_default_colors</B> extension, but only if that routine has
+       been first invoked.
+
+       The assumption that <B>COLOR_BLACK</B> is the default  background
+       color   for  all  terminals  can  be  modified  using  the
+       <B>assume_default_colors</B> extension,
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>, <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>, <B><A HREF="dft_fgbg.3x.html">dft_fgbg(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_delch.3x.html b/doc/html/man/curs_delch.3x.html
new file mode 100644 (file)
index 0000000..8d37648
--- /dev/null
@@ -0,0 +1,80 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>delch</B>,  <B>wdelch</B>, <B>mvdelch</B>, <B>mvwdelch</B> - delete character under
+       the cursor in a <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>delch(void);</B>
+       <B>int</B> <B>wdelch(WINDOW</B> <B>*win);</B>
+       <B>int</B> <B>mvdelch(int</B> <B>y,</B> <B>int</B> <B>x);</B>
+       <B>int</B> <B>mvwdelch(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These routines delete the character under the cursor;  all
+       characters to the right of the cursor on the same line are
+       moved to the left one position and the last  character  on
+       the line is filled with a blank.  The cursor position does
+       not change (after moving to <I>y</I>, <I>x</I>,  if  specified).   (This
+       does  not  imply use of the hardware delete character fea-
+       ture.)
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All routines return the integer <B>ERR</B> upon failure and an <B>OK</B>
+       (SVr4  specifies  only  "an integer value other than <B>ERR</B>")
+       upon successful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <B>delch</B>, <B>mvdelch</B>, and <B>mvwdelch</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These functions are described in the XSI Curses  standard,
+       Issue  4.   The standard specifies that they return <B>ERR</B> on
+       failure, but specifies no error conditions.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_deleteln.3x.html b/doc/html/man/curs_deleteln.3x.html
new file mode 100644 (file)
index 0000000..62cb0a4
--- /dev/null
@@ -0,0 +1,80 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>deleteln</B>,  <B>wdeleteln</B>,  <B>insdelln</B>, <B>winsdelln</B>, <B>insertln</B>, <B>win-</B>
+       <B>sertln</B> - delete and insert lines in a <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>deleteln(void);</B>
+       <B>int</B> <B>wdeleteln(WINDOW</B> <B>*win);</B>
+       <B>int</B> <B>insdelln(int</B> <B>n);</B>
+       <B>int</B> <B>winsdelln(WINDOW</B> <B>*win,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>insertln(void);</B>
+       <B>int</B> <B>winsertln(WINDOW</B> <B>*win);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <B>deleteln</B> and <B>wdeleteln</B> routines delete the line  under
+       the cursor in the window; all lines below the current line
+       are moved up one line.  The bottom line of the  window  is
+       cleared.  The cursor position does not change.
+
+       The  <B>insdelln</B>  and  <B>winsdelln</B>  routines,  for  positive <I>n</I>,
+       insert <I>n</I> lines into the specified window above the current
+       line.   The  <I>n</I>  bottom  lines  are  lost.  For negative <I>n</I>,
+       delete <I>n</I> lines (starting with the one under  the  cursor),
+       and  move  the remaining lines up.  The bottom <I>n</I> lines are
+       cleared.  The current cursor position remains the same.
+
+       The <B>insertln</B> and <B>insertln</B> routines, insert  a  blank  line
+       above the current line and the bottom line is lost.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All routines return the integer <B>ERR</B> upon failure and an <B>OK</B>
+       (SVr4 specifies only "an integer value  other  than  <B>ERR</B>")
+       upon successful completion.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  functions are described in the XSI Curses standard,
+       Issue 4.  The standard specifies that they return  <B>ERR</B>  on
+       failure, but specifies no error conditions.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that all but <B>winsdelln</B> 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 <B>idlok(...,</B> <B>TRUE)</B> has
+       been set on the current window.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_extend.3x.html b/doc/html/man/curs_extend.3x.html
new file mode 100644 (file)
index 0000000..8fbb886
--- /dev/null
@@ -0,0 +1,78 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>curs_extend</B>:  <B>curses_version</B>, <B>use_extended_names</B> - miscel-
+       laneous curses extensions
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>const</B> <B>char</B> <B>*</B> <B>curses_version(void);</B>
+       <B>int</B> <B>use_extended_names(bool</B> <B>enable);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These functions are extensions to the curses library which
+       do not fit easily into other categories.
+
+       Use  <I>curses</I><B>_</B><I>version()</I> to get the version number, including
+       patch level of the library, e.g., <B>5.0.19991023</B>
+
+       The <I>use</I><B>_</B><I>extended</I><B>_</B><I>names()</I>  function  controls  whether  the
+       calling  application  is  able to use user-defined or non-
+       standard names which may be  compiled  into  the  terminfo
+       description, i.e., via the terminfo or termcap interfaces.
+       Normally these names are  available  for  use,  since  the
+       essential  descision is made by using the <B>-x</B> option of <I>tic</I>
+       to compile extended terminal definitions.  However you can
+       disable  this  feature  to  ensure compatiblity with other
+       implementations of curses
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       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  con-
+       ditioned using NCURSES_VERSION.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>,       <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>,      <B><A HREF="curs_print.3x.html">curs_print(3x)</A></B>,
+       <B><A HREF="define_key.3x.html">define_key(3x)</A></B>,  <B><A HREF="dft_fgbg.3x.html">dft_fgbg(3x)</A></B>,  <B><A HREF="keybound.3x.html">keybound(3x)</A></B>,   <B><A HREF="keyok.3x.html">keyok(3x)</A></B>,
+       <B><A HREF="resizeterm.3x.html">resizeterm(3x)</A></B>, <B><A HREF="wresize.3x.html">wresize(3x)</A></B>.
+
+
+</PRE>
+<H2>AUTHOR</H2><PRE>
+       Thomas Dickey.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_getch.3x.html b/doc/html/man/curs_getch.3x.html
new file mode 100644 (file)
index 0000000..833b88e
--- /dev/null
@@ -0,0 +1,296 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>getch</B>,  <B>wgetch</B>,  <B>mvgetch</B>, <B>mvwgetch</B>, <B>ungetch</B>, <B>has_key</B> - get
+       (or push back) characters from <B>curses</B> terminal keyboard
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>getch(void);</B>
+       <B>int</B> <B>wgetch(WINDOW</B> <B>*win);</B>
+       <B>int</B> <B>mvgetch(int</B> <B>y,</B> <B>int</B> <B>x);</B>
+       <B>int</B> <B>mvwgetch(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+       <B>int</B> <B>ungetch(int</B> <B>ch);</B>
+       <B>int</B> <B>has_key(int</B> <B>ch);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <B>getch</B>, <B>wgetch</B>, <B>mvgetch</B> and <B>mvwgetch</B>, routines  read  a
+       character  from the window.  In no-delay mode, if no input
+       is waiting, the value <B>ERR</B> is returned.  In delay mode, the
+       program  waits until the system passes text through to the
+       program.  Depending on the  setting  of  <B>cbreak</B>,  this  is
+       after one character (cbreak mode), or after the first new-
+       line (nocbreak mode).  In  half-delay  mode,  the  program
+       waits  until a character is typed or the specified timeout
+       has been reached.
+
+       Unless <B>noecho</B> has been set, then the character  will  also
+       be echoed into the designated window according to the fol-
+       lowing rules: If the character is the current erase  char-
+       acter,  left  arrow, or backspace, the cursor is moved one
+       space to the left and that screen position is erased as if
+       <B>delch</B>  had  been  called.   If  the character value is any
+       other <B>KEY_</B> define, the user is alerted with a  <B>beep</B>  call.
+       Otherwise the character is simply output to the screen.
+
+       If the window is not a pad, and it has been moved or modi-
+       fied since the last call to  <B>wrefresh</B>,  <B>wrefresh</B>  will  be
+       called before another character is read.
+
+       If  <B>keypad</B>  is  <B>TRUE</B>,  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
+       <B>&lt;curses.h&gt;</B> as macros with  values  outside  the  range  of
+       8-bit  characters  whose  names  begin  with <B>KEY_.</B> Thus, a
+       variable intended to hold the return value of  a  function
+       key must be of short size or larger.
+
+       When a character that could be the beginning of a function
+       key is received (which,  on  modern  terminals,  means  an
+       escape  character), <B>curses</B> sets a timer.  If the remainder
+       of the sequence does not come  in  within  the  designated
+       time,  the  character  is  passed  through; otherwise, the
+       function key value is returned.   For  this  reason,  many
+       terminals  experience  a  delay  between  the  time a user
+       presses the escape key and the escape is returned  to  the
+       program.
+
+       The <B>ungetch</B> routine places <I>ch</I> back onto the input queue to
+       be returned by the next call to <B>wgetch</B>.  Note  that  there
+       is, in effect, just one input queue for all windows.
+
+
+   <B>Function</B> <B>Keys</B>
+       The  following function keys, defined in <B>&lt;curses.h&gt;</B>, might
+       be returned by <B>getch</B> if <B>keypad</B>  has  been  enabled.   Note
+       that  not  all  of  these are necessarily supported on any
+       particular terminal.
+
+           <I>Name</I>            <I>Key</I> <I>name</I>
+
+           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          Function keys; space for 64  keys
+                           is reserved.
+           KEY_F(<I>n</I>)        For 0 &lt;= <I>n</I> &lt;= 63
+           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 line
+           KEY_SF          Scroll 1 line forward
+           KEY_SR          Scroll 1 line backward (reverse)
+           KEY_NPAGE       Next page
+           KEY_PPAGE       Previous page
+           KEY_STAB        Set tab
+           KEY_CTAB        Clear tab
+           KEY_CATAB       Clear all tabs
+           KEY_ENTER       Enter or send
+           KEY_SRESET      Soft (partial) reset
+           KEY_RESET       Reset or hard reset
+           KEY_PRINT       Print or copy
+           KEY_LL          Home down or bottom (lower left).
+           KEY_A1          Upper left of keypad
+           KEY_A3          Upper right of keypad
+           KEY_B2          Center of keypad
+           KEY_C1          Lower left of keypad
+           KEY_C3          Lower right of keypad
+           KEY_BTAB        Back tab key
+           KEY_BEG         Beg(inning) key
+           KEY_CANCEL      Cancel key
+
+           KEY_CLOSE       Close key
+           KEY_COMMAND     Cmd (command) key
+           KEY_COPY        Copy key
+           KEY_CREATE      Create key
+           KEY_END         End key
+           KEY_EXIT        Exit key
+           KEY_FIND        Find key
+           KEY_HELP        Help key
+           KEY_MARK        Mark key
+           KEY_MESSAGE     Message key
+           KEY_MOUSE       Mouse event read
+           KEY_MOVE        Move key
+           KEY_NEXT        Next object key
+           KEY_OPEN        Open key
+           KEY_OPTIONS     Options key
+           KEY_PREVIOUS    Previous object key
+           KEY_REDO        Redo key
+           KEY_REFERENCE   Ref(erence) key
+           KEY_REFRESH     Refresh key
+           KEY_REPLACE     Replace key
+           KEY_RESIZE      Screen resized
+           KEY_RESTART     Restart key
+           KEY_RESUME      Resume key
+           KEY_SAVE        Save key
+           KEY_SBEG        Shifted beginning key
+           KEY_SCANCEL     Shifted cancel key
+           KEY_SCOMMAND    Shifted command key
+           KEY_SCOPY       Shifted copy key
+           KEY_SCREATE     Shifted create key
+           KEY_SDC         Shifted delete char key
+           KEY_SDL         Shifted delete line key
+           KEY_SELECT      Select key
+           KEY_SEND        Shifted end key
+           KEY_SEOL        Shifted clear line key
+           KEY_SEXIT       Shifted exit key
+           KEY_SFIND       Shifted find key
+           KEY_SHELP       Shifted help key
+           KEY_SHOME       Shifted home key
+           KEY_SIC         Shifted input key
+           KEY_SLEFT       Shifted left arrow key
+           KEY_SMESSAGE    Shifted message key
+           KEY_SMOVE       Shifted move key
+           KEY_SNEXT       Shifted next key
+           KEY_SOPTIONS    Shifted options key
+           KEY_SPREVIOUS   Shifted prev key
+           KEY_SPRINT      Shifted print key
+           KEY_SREDO       Shifted redo key
+           KEY_SREPLACE    Shifted replace key
+           KEY_SRIGHT      Shifted right arrow
+           KEY_SRSUME      Shifted resume key
+           KEY_SSAVE       Shifted save key
+           KEY_SSUSPEND    Shifted suspend key
+           KEY_SUNDO       Shifted undo key
+
+           KEY_SUSPEND     Suspend key
+           KEY_UNDO        Undo key
+
+       Keypad is arranged like this:
+
+                         +-----+------+-------+
+                         | <B>A1</B>  |  <B>up</B>  |  <B>A3</B>   |
+                         +-----+------+-------+
+                         |<B>left</B> |  <B>B2</B>  | <B>right</B> |
+                         +-----+------+-------+
+                         | <B>C1</B>  | <B>down</B> |  <B>C3</B>   |
+                         +-----+------+-------+
+       The <B>has_key</B> routine takes a key value from the above list,
+       and returns TRUE or FALSE according as the current  termi-
+       nal type recognizes a key with that value.
+
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All  routines  return  the integer <B>ERR</B> upon failure and an
+       integer value other than <B>ERR</B> (<B>OK</B> in the case of ungetch())
+       upon successful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Use of the escape key by a programmer for a single charac-
+       ter function is discouraged, as it will cause a  delay  of
+       up to one second while the keypad code looks for a follow-
+       ing function-key sequence.
+
+       When using <B>getch</B>, <B>wgetch</B>, <B>mvgetch</B>, or  <B>mvwgetch</B>,  nocbreak
+       mode (<B>nocbreak</B>) and echo mode (<B>echo</B>) should not be used at
+       the same time.  Depending on the state of the  tty  driver
+       when  each  character  is  typed,  the program may produce
+       undesirable results.
+
+       Note that <B>getch</B>, <B>mvgetch</B>, and <B>mvwgetch</B> may be macros.
+
+       Historically, the set of keypad macros was largely defined
+       by  the  extremely  function-key-rich keyboard of the AT&amp;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   <B>KEY_UP</B>,
+       <B>KEY_DOWN</B>,    <B>KEY_LEFT</B>,   <B>KEY_RIGHT</B>,   <B>KEY_HOME</B>,   <B>KEY_END</B>,
+       <B>KEY_NPAGE</B>, <B>KEY_PPAGE</B>, and function keys 1 through 12.  The
+       Ins key is usually mapped to <B>KEY_IC</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The  *get* functions are described in the XSI Curses stan-
+       dard, Issue 4.  They  read  single-byte  characters  only.
+       The  standard  specifies  that they return <B>ERR</B> on failure,
+       but specifies no error conditions.
+
+       The echo behavior of these functions on input of  <B>KEY_</B>  or
+       backspace  characters  was not specified in the SVr4 docu-
+       mentation.  This  description  is  adopted  from  the  XSI
+       Curses standard.
+
+       The  behavior of <B>getch</B> and friends in the presence of han-
+       dled signals is unspecified in the  SVr4  and  XSI  Curses
+       documentation.   Under  historical curses implementations,
+       it varied depending  on  whether  the  operating  system's
+       implementation  of  handled  signal  receipt  interrupts a
+       <B><A HREF="read.2.html">read(2)</A></B> call in progress or not, and also (in some  imple-
+       mentations)  depending on whether an input timeout or non-
+       blocking mode hsd been set.
+
+       Programmers concerned about portability should be prepared
+       for  either  of  two  cases:  (a)  signal receipt does not
+       interrupt <B>getch</B>; (b) signal receipt interrupts  <B>getch</B>  and
+       causes  it  to  return ERR with <B>errno</B> set to <B>EINTR</B>.  Under
+       the <B>ncurses</B> implementation, handled signals  never  inter-
+       rupt <B>getch</B>.
+
+       The  <B>has_key</B>  function is unique to <B>ncurses</B>.  We recommend
+       that  any  code  using  it  be  conditionalized   on   the
+       <B>NCURSES_VERSION</B> feature macro.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>,        <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>,        <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>,
+       <B><A HREF="curs_move.3x.html">curs_move(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>.  <B><A HREF="resizeterm.3x.html">resizeterm(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_getstr.3x.html b/doc/html/man/curs_getstr.3x.html
new file mode 100644 (file)
index 0000000..19c8ce1
--- /dev/null
@@ -0,0 +1,134 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>getstr</B>,  <B>getnstr</B>,  <B>wgetstr</B>, <B>wgetnstr</B>, <B>mvgetstr</B>, <B>mvgetnstr</B>,
+       <B>mvwgetstr</B>, <B>mvwgetnstr</B>  -  accept  character  strings  from
+       <B>curses</B> terminal keyboard
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>getstr(char</B> <B>*str);</B>
+       <B>int</B> <B>getnstr(char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>wgetstr(WINDOW</B> <B>*win,</B> <B>char</B> <B>*str);</B>
+       <B>int</B> <B>wgetnstr(WINDOW</B> <B>*win,</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>mvgetstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*str);</B>
+       <B>int</B> <B>mvwgetstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*str);</B>
+       <B>int</B> <B>mvgetnstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>mvwgetnstr(WINDOW</B> <B>*,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  function <B>getstr</B> is equivalent to a series of calls to
+       <B>getch</B>, until a newline or carriage return is received (the
+       terminating  character  is  not  included  in the returned
+       string).  The  resulting  value  is  placed  in  the  area
+       pointed to by the character pointer <I>str</I>.
+
+       <B>wgetnstr</B>  reads  at  most  <I>n</I> characters, thus preventing a
+       possible overflow of the input  buffer.   Any  attempt  to
+       enter  more characters (other than the terminating newline
+       or carriage return) causes a  beep.   Function  keys  also
+       cause  a beep and are ignored.  The <B>getnstr</B> function reads
+       from the <I>stdscr</I> default window.
+
+       The user's erase and kill characters are interpreted.   If
+       keypad   mode   is   on   for  the  window,  <B>KEY_LEFT</B>  and
+       <B>KEY_BACKSPACE</B> are both considered equivalent to the user's
+       kill character.
+
+       Characters  input are echoed only if <B>echo</B> is currently on.
+       In that case, backspace is echoed as deletion of the  pre-
+       vious character (typically a left motion).
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All routines return the integer <B>ERR</B> upon failure and an <B>OK</B>
+       (SVr4 specifies only "an integer value  other  than  <B>ERR</B>")
+       upon successful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <B>getstr</B>, <B>mvgetstr</B>, and <B>mvwgetstr</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  functions are described in the XSI Curses standard,
+       Issue 4.  They  read  single-byte  characters  only.   The
+       standard  specifies  that  they return <B>ERR</B> on failure, but
+       the  single  error  condition  <B>EOVERFLOW</B>  associated  with
+       extended-level  conformance  is  not yet returned (the XSI
+       curses support for multi-byte characters is not  yet  pre-
+       sent).
+
+       SVr3  and early SVr4 curses implementations did not reject
+       function keys; the SVr4.0 documentation claimed that "spe-
+       cial  keys"  (such  as  function keys, "home" key, "clear"
+       key, <I>etc</I>.) are interpreted" without  giving  details.   It
+       lied.   In  fact,  the  `character'  value appended to the
+       string by those implementations was  predictable  but  not
+       useful  (being,  in  fact, the low-order eight bits of the
+       key's KEY_ value).
+
+       The functions <B>getnstr</B>, <B>mvgetnstr</B>, and <B>mvwgetnstr</B> were pre-
+       sent but not documented in SVr4.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_getyx.3x.html b/doc/html/man/curs_getyx.3x.html
new file mode 100644 (file)
index 0000000..562d710
--- /dev/null
@@ -0,0 +1,80 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>getyx</B>,  <B>getparyx</B>,  <B>getbegyx</B>,  <B>getmaxyx</B> - get <B>curses</B> cursor
+       and window coordinates
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>void</B> <B>getyx(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+       <B>void</B> <B>getparyx(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+       <B>void</B> <B>getbegyx(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+       <B>void</B> <B>getmaxyx(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <B>getyx</B> macro places the current cursor position of  the
+       given window in the two integer variables <I>y</I> and <I>x</I>.
+
+       If  <I>win</I>  is  a  subwindow,  the  <B>getparyx</B> macro places the
+       beginning coordinates of the  subwindow  relative  to  the
+       parent  window into two integer variables <I>y</I> and <I>x</I>.  Other-
+       wise, <B>-1</B> is placed into <I>y</I> and <I>x</I>.
+
+       Like <B>getyx</B>, the <B>getbegyx</B> and  <B>getmaxyx</B>  macros  store  the
+       current  beginning  coordinates  and size of the specified
+       window.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       The return values of these  macros  are  undefined  (<I>i</I>.<I>e</I>.,
+       they  should not be used as the right-hand side of assign-
+       ment statements).
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       All of these interfaces are macros and  that  "<B>&amp;</B>"  is  not
+       necessary before the variables <I>y</I> and <I>x</I>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  functions are described in the XSI Curses standard,
+       Issue 4.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_inch.3x.html b/doc/html/man/curs_inch.3x.html
new file mode 100644 (file)
index 0000000..2c4b22a
--- /dev/null
@@ -0,0 +1,78 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>inch</B>,  <B>winch</B>,  <B>mvinch</B>,  <B>mvwinch</B>  -  get  a  character  and
+       attributes from a <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>chtype</B> <B>inch(void);</B>
+       <B>chtype</B> <B>winch(WINDOW</B> <B>*win);</B>
+       <B>chtype</B> <B>mvinch(int</B> <B>y,</B> <B>int</B> <B>x);</B>
+       <B>chtype</B> <B>mvwinch(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These routines return the character, of  type  <B>chtype</B>,  at
+       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
+       <B>&lt;curses.h&gt;</B> can be used with the <B>&amp;</B> (logical  AND)  operator
+       to extract the character or attributes alone.
+
+
+   <B>Attributes</B>
+       The  following  bit-masks  may  be  AND-ed with characters
+       returned by <B>winch</B>.
+
+       <B>A_CHARTEXT</B>     Bit-mask to extract character
+       <B>A_ATTRIBUTES</B>   Bit-mask to extract attributes
+       <B>A_COLOR</B>        Bit-mask to extract color-pair field information
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that all of these routines may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These functions are described in the XSI Curses  standard,
+       Issue 4.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_inchstr.3x.html b/doc/html/man/curs_inchstr.3x.html
new file mode 100644 (file)
index 0000000..5688c02
--- /dev/null
@@ -0,0 +1,80 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>inchstr</B>,   <B>inchnstr</B>,   <B>winchstr</B>,   <B>winchnstr</B>,   <B>mvinchstr</B>,
+       <B>mvinchnstr</B>, <B>mvwinchstr</B>, <B>mvwinchnstr</B>  -  get  a  string  of
+       characters (and attributes) from a <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>inchstr(chtype</B> <B>*chstr);</B>
+       <B>int</B> <B>inchnstr(chtype</B> <B>*chstr,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>winchstr(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>*chstr);</B>
+       <B>int</B> <B>winchnstr(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>*chstr,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>mvinchstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>*chstr);</B>
+       <B>int</B> <B>mvinchnstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>*chstr,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>mvwinchstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>*chstr);</B>
+       <B>int</B>  <B>mvwinchnstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>*chstr,</B>
+       <B>int</B> <B>n);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These routines return a NULL-terminated  array  of  <B>chtype</B>
+       quantities, starting at the current cursor position in the
+       named window and ending at the right margin of the window.
+       The  four  functions with <I>n</I> as the last argument, return a
+       leading substring at most <I>n</I> characters long (exclusive  of
+       the  trailing (chtype)0).  Constants defined in <B>&lt;curses.h&gt;</B>
+       can be used with the <B>&amp;</B> (logical AND) operator  to  extract
+       the  character or the attribute alone from any position in
+       the <I>chstr</I> [see <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>].
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All routines return the integer <B>ERR</B> upon  failure  and  an
+       integer  value  other  than <B>ERR</B> upon successful completion
+       (the number of  characters  retrieved,  exclusive  of  the
+       trailing 0).
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note  that  all  routines  except <B>winchnstr</B> may be macros.
+       SVr4 does not document whether the result string is 0-ter-
+       minated; it does not document whether a length limit argu-
+       ment includes any trailing 0; and it does not document the
+       meaning of the return value.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  functions are described in the XSI Curses standard,
+       Issue 4.  It is no more specific than the SVr4  documenta-
+       tion on the trailing 0.  It does specify that the success-
+       ful return of the functions is <B>OK</B>.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>.
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_initscr.3x.html b/doc/html/man/curs_initscr.3x.html
new file mode 100644 (file)
index 0000000..81be73b
--- /dev/null
@@ -0,0 +1,134 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>initscr</B>,  <B>newterm</B>, <B>endwin</B>, <B>isendwin</B>, <B>set_term</B>, <B>delscreen</B> -
+       <B>curses</B> screen initialization and manipulation routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>WINDOW</B> <B>*initscr(void);</B>
+       <B>int</B> <B>endwin(void);</B>
+       <B>bool</B> <B>isendwin(void);</B>
+       <B>SCREEN</B>  <B>*newterm(const</B>  <B>char</B>  <B>*type,</B>  <B>FILE</B>  <B>*outfd,</B>   <B>FILE</B>
+       <B>*infd);</B>
+       <B>SCREEN</B> <B>*set_term(SCREEN</B> <B>*new);</B>
+       <B>void</B> <B>delscreen(SCREEN*</B> <B>sp);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       <B>initscr</B>  is normally the first <B>curses</B> routine to call when
+       initializing a program.  A few special routines  sometimes
+       need  to  be called before it; these are <B>slk_init</B>, <B>filter</B>,
+       <B>ripoffline</B>, <B>use_env</B>.  For multiple-terminal  applications,
+       <B>newterm</B> may be called before <B>initscr</B>.
+
+       The initscr code determines the terminal type and initial-
+       izes all <B>curses</B> data structures.  <B>initscr</B> also causes  the
+       first  call  to  <B>refresh</B>  to  clear the screen.  If errors
+       occur, <B>initscr</B> writes  an  appropriate  error  message  to
+       standard error and exits; otherwise, a pointer is returned
+       to <B>stdscr</B>.
+
+       A program that outputs to more than  one  terminal  should
+       use  the  <B>newterm</B>  routine  for  each  terminal instead of
+       <B>initscr</B>.  A program that needs to inspect capabilities, so
+       it can continue to run in a line-oriented mode if the ter-
+       minal cannot support a screen-oriented program, would also
+       use  <B>newterm</B>.   The  routine <B>newterm</B> should be called once
+       for each terminal.  It returns a variable of type <B>SCREEN</B> <B>*</B>
+       which  should  be  saved  as a reference to that terminal.
+       The arguments are the <I>type</I> of the terminal to be  used  in
+       place of <B>$TERM</B>, a file pointer for output to the terminal,
+       and another file pointer for input from the  terminal  (if
+       <I>type</I>  is <B>NULL</B>, <B>$TERM</B> will be used).  The program must also
+       call <B>endwin</B> for each terminal being  used  before  exiting
+       from  <B>curses</B>.  If <B>newterm</B> is called more than once for the
+       same terminal, the first terminal referred to must be  the
+       last one for which <B>endwin</B> is called.
+
+       A  program  should  always  call  <B>endwin</B> before exiting or
+       escaping  from  <B>curses</B>  mode  temporarily.   This  routine
+       restores  tty  modes,  moves the cursor to the lower left-
+       hand corner of the screen and resets the terminal into the
+       proper non-visual mode.  Calling <B>refresh</B> or <B>doupdate</B> after
+       a temporary escape causes the  program  to  resume  visual
+       mode.
+
+       The  <B>isendwin</B>  routine  returns  <B>TRUE</B>  if  <B>endwin</B> has been
+       called without any subsequent calls to <B>wrefresh</B>, and <B>FALSE</B>
+       otherwise.
+
+       The  <B>set_term</B>  routine is used to switch between different
+       terminals.  The screen reference <B>new</B> becomes the new  cur-
+       rent  terminal.   The previous terminal is returned by the
+       routine.  This  is  the  only  routine  which  manipulates
+       <B>SCREEN</B>  pointers;  all other routines affect only the cur-
+       rent terminal.
+
+       The <B>delscreen</B> routine frees storage  associated  with  the
+       <B>SCREEN</B>  data  structure.   The  <B>endwin</B> routine does not do
+       this, so <B>delscreen</B> should be called after <B>endwin</B> if a par-
+       ticular <B>SCREEN</B> is no longer needed.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       <B>endwin</B>  returns  the  integer <B>ERR</B> upon failure and <B>OK</B> upon
+       successful completion.
+
+       Routines that return pointers always return <B>NULL</B> on error.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <B>initscr</B> and <B>newterm</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  functions are described in the XSI Curses standard,
+       Issue 4.  It specifies that portable applications must not
+       call <B>initscr</B> more than once.
+
+       Old versions of curses, e.g., BSD 4.4, may have returned a
+       null pointer from  <B>initscr</B>  when  an  error  is  detected,
+       rather  than  exiting.   It is safe but redundant to check
+       the return value of <B>initscr</B> in XSI Curses.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>,       <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>,       <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>,
+       <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>, <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_inopts.3x.html b/doc/html/man/curs_inopts.3x.html
new file mode 100644 (file)
index 0000000..13ec59c
--- /dev/null
@@ -0,0 +1,242 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>cbreak</B>, <B>nocbreak</B>, <B>echo</B>, <B>noecho</B>, <B>halfdelay</B>, <B>intrflush</B>, <B>key-</B>
+       <B>pad</B>, <B>meta</B>,  <B>nodelay</B>,  <B>notimeout</B>,  <B>raw</B>,  <B>noraw</B>,  <B>noqiflush</B>,
+       <B>qiflush</B>,  <B>timeout</B>,  <B>wtimeout</B>,  <B>typeahead</B>  -  <B>curses</B>  input
+       options
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>cbreak(void);</B>
+       <B>int</B> <B>nocbreak(void);</B>
+       <B>int</B> <B>echo(void);</B>
+       <B>int</B> <B>noecho(void);</B>
+       <B>int</B> <B>halfdelay(int</B> <B>tenths);</B>
+       <B>int</B> <B>intrflush(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+       <B>int</B> <B>keypad(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+       <B>int</B> <B>meta(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+       <B>int</B> <B>nodelay(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+       <B>int</B> <B>raw(void);</B>
+       <B>int</B> <B>noraw(void);</B>
+       <B>void</B> <B>noqiflush(void);</B>
+       <B>void</B> <B>qiflush(void);</B>
+       <B>int</B> <B>notimeout(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+       <B>void</B> <B>timeout(int</B> <B>delay);</B>
+       <B>void</B> <B>wtimeout(WINDOW</B> <B>*win,</B> <B>int</B> <B>delay);</B>
+       <B>int</B> <B>typeahead(int</B> <B>fd);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       Normally, the tty driver buffers typed characters until  a
+       newline  or  carriage return is typed.  The <B>cbreak</B> routine
+       disables line buffering and erase/kill  character-process-
+       ing  (interrupt  and  flow  control  characters  are unaf-
+       fected), making characters typed by the  user  immediately
+       available  to  the  program.  The <B>nocbreak</B> routine returns
+       the terminal to normal (cooked) mode.
+
+       Initially the terminal may or may not be in  <B>cbreak</B>  mode,
+       as the mode is inherited; therefore, a program should call
+       <B>cbreak</B> or <B>nocbreak</B> explicitly.  Most interactive  programs
+       using  <B>curses</B> set the <B>cbreak</B> mode.  Note that <B>cbreak</B> over-
+       rides <B>raw</B>.  [See <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B> for a  discussion  of  how
+       these routines interact with <B>echo</B> and <B>noecho</B>.]
+
+       The  <B>echo</B>  and  <B>noecho</B> routines control whether characters
+       typed by the user are echoed by <B>getch</B> as they  are  typed.
+       Echoing  by  the  tty  driver is always disabled, but ini-
+       tially <B>getch</B> is in echo  mode,  so  characters  typed  are
+       echoed.  Authors of most interactive programs prefer to do
+       their own echoing in a controlled area of the  screen,  or
+       not  to  echo  at  all, so they disable echoing by calling
+       <B>noecho</B>.  [See <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B> for a discussion of how these
+       routines interact with <B>cbreak</B> and <B>nocbreak</B>.]
+
+       The  <B>halfdelay</B>  routine is used for half-delay mode, which
+       is similar to <B>cbreak</B> mode in that characters typed by  the
+       user  are  immediately available to the program.  However,
+       after blocking  for  <I>tenths</I>  tenths  of  seconds,  ERR  is
+       returned  if  nothing has been typed.  The value of <B>tenths</B>
+       must be a number between 1 and 255.  Use <B>nocbreak</B> to leave
+       half-delay mode.
+
+       If  the <B>intrflush</B> option is enabled, (<I>bf</I> is <B>TRUE</B>), when an
+       interrupt key  is  pressed  on  the  keyboard  (interrupt,
+       break,  quit)  all  output in the tty driver queue will be
+       flushed, giving the  effect  of  faster  response  to  the
+       interrupt,  but  causing  <B>curses</B> to have the wrong idea of
+       what is on the  screen.   Disabling  (<I>bf</I>  is  <B>FALSE</B>),  the
+       option  prevents the flush.  The default for the option is
+       inherited from the tty driver settings.  The window  argu-
+       ment is ignored.
+
+       The  <B>keypad</B> option enables the keypad of the user's termi-
+       nal.  If enabled (<I>bf</I> is <B>TRUE</B>), the user can press a  func-
+       tion  key (such as an arrow key) and <B>wgetch</B> returns a sin-
+       gle value representing the function key, as  in  <B>KEY_LEFT</B>.
+       If  disabled (<I>bf</I> is <B>FALSE</B>), <B>curses</B> does not treat function
+       keys specially and the program has to interpret the escape
+       sequences  itself.   If  the keypad in the terminal can be
+       turned on  (made  to  transmit)  and  off  (made  to  work
+       locally),  turning on this option causes the terminal key-
+       pad to be turned on when <B>wgetch</B> is  called.   The  default
+       value for keypad is false.
+
+       Initially, whether the terminal returns 7 or 8 significant
+       bits on input depends on  the  control  mode  of  the  tty
+       driver  [see  <B><A HREF="termio.7.html">termio(7)</A></B>].  To force 8 bits to be returned,
+       invoke <B>meta</B>(<I>win</I>, <B>TRUE</B>); this is equivalent,  under  POSIX,
+       to  setting the CS8 flag on the terminal.  To force 7 bits
+       to be returned, invoke <B>meta</B>(<I>win</I>, <B>FALSE</B>); this  is  equiva-
+       lent,  under  POSIX, to setting the CS8 flag on the termi-
+       nal.  The window argument, <I>win</I>, is always ignored.  If the
+       terminfo capabilities <B>smm</B> (meta_on) and <B>rmm</B> (meta_off) are
+       defined for the terminal, <B>smm</B> is sent to the terminal when
+       <B>meta</B>(<I>win</I>,  <B>TRUE</B>)  is called and <B>rmm</B> is sent when <B>meta</B>(<I>win</I>,
+       <B>FALSE</B>) is called.
+
+       The <B>nodelay</B> option causes <B>getch</B> to be a non-blocking call.
+       If  no input is ready, <B>getch</B> returns <B>ERR</B>.  If disabled (<I>bf</I>
+       is <B>FALSE</B>), <B>getch</B> waits until a key is pressed.
+
+       While interpreting an input escape sequence, <B>wgetch</B> sets a
+       timer  while  waiting  for the next character.  If <B>notime-</B>
+       <B>out(</B><I>win</I>, <B>TRUE</B>) is called,  then  <B>wgetch</B>  does  not  set  a
+       timer.   The  purpose  of  the timeout is to differentiate
+       between sequences received from a function key  and  those
+       typed by a user.
+
+       The  <B>raw</B> and <B>noraw</B> routines place the terminal into or out
+       of raw mode.  Raw mode is similar to <B>cbreak</B> mode, in  that
+       characters  typed  are  immediately  passed through to the
+       user program.  The differences are that in raw  mode,  the
+       interrupt,  quit, suspend, and flow control characters are
+       all passed through uninterpreted, instead of generating  a
+       signal.   The  behavior  of the BREAK key depends on other
+       bits in the tty driver that are not set by <B>curses</B>.
+
+       When the <B>noqiflush</B> routine is used, normal flush of  input
+       and  output queues associated with the <B>INTR</B>, <B>QUIT</B> and <B>SUSP</B>
+       characters will not be done [see <B><A HREF="termio.7.html">termio(7)</A></B>].  When <B>qiflush</B>
+       is  called,  the queues will be flushed when these control
+       characters are read.  You may want to call <B>noqiflush()</B>  in
+       a  signal handler if you want output to continue as though
+       the interrupt had not occurred, after the handler exits.
+
+       The <B>timeout</B> and <B>wtimeout</B> routines  set  blocking  or  non-
+       blocking  read  for a given window.  If <I>delay</I> is negative,
+       blocking  read  is  used  (<I>i</I>.<I>e</I>.,  waits  indefinitely  for
+       input).   If <I>delay</I> is zero, then non-blocking read is used
+       (<I>i</I>.<I>e</I>., read returns <B>ERR</B> if no input is waiting).  If <I>delay</I>
+       is  positive, then read blocks for <I>delay</I> milliseconds, and
+       returns <B>ERR</B> if there is still no input.  Hence, these rou-
+       tines  provide the same functionality as <B>nodelay</B>, plus the
+       additional capability of being  able  to  block  for  only
+       <I>delay</I> milliseconds (where <I>delay</I> is positive).
+
+       The  <B>curses</B> library does ``line-breakout optimization'' by
+       looking for  typeahead  periodically  while  updating  the
+       screen.   If  input is found, and it is coming from a tty,
+       the current update is postponed until <B>refresh</B> or  <B>doupdate</B>
+       is  called again.  This allows faster response to commands
+       typed in advance.  Normally, the input FILE pointer passed
+       to  <B>newterm</B>,  or  <B>stdin</B> in the case that <B>initscr</B> was used,
+       will be used to do this typeahead checking.  The <B>typeahead</B>
+       routine  specifies  that  the  file descriptor <I>fd</I> is to be
+       used to check for typeahead instead.  If <I>fd</I> is -1, then no
+       typeahead checking is done.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All  routines that return an integer return <B>ERR</B> upon fail-
+       ure and OK (SVr4 specifies only "an  integer  value  other
+       than  <B>ERR</B>")  upon  successful completion, unless otherwise
+       noted in the preceding routine descriptions.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These functions are described in the XSI Curses  standard,
+       Issue 4.
+
+       The  ncurses  library obeys the XPG4 standard and the his-
+       torical practice of the AT&amp;T  curses  implementations,  in
+       that  the  echo bit is cleared when curses initializes the
+       terminal state.  BSD curses differed from  this  slightly;
+       it left the echo bit on at initialization, but the BSD <B>raw</B>
+       call turned it off as a side-effect.  For  best  portabil-
+       ity,  set echo or noecho explicitly just after initializa-
+       tion, even if your program remains in cooked mode.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <B>echo</B>, <B>noecho</B>, <B>halfdelay</B>, <B>intrflush</B>, <B>meta</B>,  <B>node-</B>
+       <B>lay</B>,  <B>notimeout</B>, <B>noqiflush</B>, <B>qiflush</B>, <B>timeout</B>, and <B>wtimeout</B>
+       may be macros.
+
+       The <B>noraw</B> and <B>nocbreak</B> calls follow historical practice in
+       that  they  attempt  to  restore to normal (`cooked') mode
+       from raw and cbreak modes respectively.  Mixing  raw/noraw
+       and  cbreak/nocbreak  calls  leads  to  tty driver control
+       states that are hard to predict or understand; it  is  not
+       recommended.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>, <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>, <B><A HREF="termio.7.html">termio(7)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_insch.3x.html b/doc/html/man/curs_insch.3x.html
new file mode 100644 (file)
index 0000000..5a1610b
--- /dev/null
@@ -0,0 +1,80 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>insch</B>,  <B>winsch</B>,  <B>mvinsch</B>,  <B>mvwinsch</B>  -  insert a character
+       before cursor in a <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>insch(chtype</B> <B>ch);</B>
+       <B>int</B> <B>winsch(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>ch);</B>
+       <B>int</B> <B>mvinsch(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>ch);</B>
+       <B>int</B> <B>mvwinsch(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>ch);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These routines, insert the character <I>ch</I> before the charac-
+       ter  under the cursor.  All characters to the right of the
+       cursor are moved one space to the right, with  the  possi-
+       bility  of the rightmost character on the line being lost.
+       The insertion operation does not change the  cursor  posi-
+       tion.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All  routines that return an integer return <B>ERR</B> upon fail-
+       ure and OK (SVr4 specifies only "an  integer  value  other
+       than  <B>ERR</B>")  upon  successful completion, unless otherwise
+       noted in the preceding routine descriptions.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       These routines do not necessarily imply use of a  hardware
+       insert character feature.
+
+       Note that <B>insch</B>, <B>mvinsch</B>, and <B>mvwinsch</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  functions are described in the XSI Curses standard,
+       Issue 4.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_insstr.3x.html b/doc/html/man/curs_insstr.3x.html
new file mode 100644 (file)
index 0000000..2349cbc
--- /dev/null
@@ -0,0 +1,135 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>insstr</B>,  <B>insnstr</B>,  <B>winsstr</B>, <B>winsnstr</B>, <B>mvinsstr</B>, <B>mvinsnstr</B>,
+       <B>mvwinsstr</B>, <B>mvwinsnstr</B> - insert string before cursor  in  a
+       <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+       <B>int</B> <B>insstr(const</B> <B>char</B> <B>*str);</B>
+       <B>int</B> <B>insnstr(const</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>winsstr(WINDOW</B> <B>*win,</B> <B>const</B> <B>char</B> <B>*str);</B>
+       <B>int</B> <B>winsnstr(WINDOW</B> <B>*win,</B> <B>const</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>mvinsstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>char</B> <B>*str);</B>
+       <B>int</B> <B>mvinsnstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>mvwinsstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>char</B> <B>*str);</B>
+       <B>int</B> <B>mvwinsnstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>char</B> <B>*str,</B>
+       <B>int</B> <B>n);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These  routines insert a character string (as many charac-
+       ters as will fit on the line) before the  character  under
+       the cursor.  All characters to the right of the cursor are
+       shifted right, with the possibility of the rightmost char-
+       acters  on  the line being lost.  The cursor position does
+       not change (after moving to <I>y</I>, <I>x</I>, if specified). The  four
+       routines with <I>n</I> as the last argument insert a leading sub-
+       string of at most <I>n</I> characters.  If <I>n</I>&lt;=0, then the  entire
+       string is inserted.
+
+       If  a  character in <I>str</I> is a tab, newline, carriage return
+       or backspace, the cursor is moved appropriately within the
+       window.   A  newline  also  does a <B>clrtoeol</B> before moving.
+       Tabs are considered to be at every eighth  column.   If  a
+       character in <I>str</I> is another control character, it is drawn
+       in the <B>^</B><I>X</I> notation.  Calling <B>winch</B> after adding a  control
+       character (and moving to it, if necessary) does not return
+       the control character, but instead returns a character  in
+       the ^-representation of the control character.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All  routines that return an integer return <B>ERR</B> upon fail-
+       ure and OK (SVr4 specifies only "an  integer  value  other
+       than  <B>ERR</B>")  upon  successful completion, unless otherwise
+       noted in the preceding routine descriptions.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that all but <B>winsnstr</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These functions are described in the XSI Curses  standard,
+       Issue  4,  which  adds  const qualifiers to the arguments.
+       The XSI Curses error  conditions  <B>EILSEQ</B>  and  <B>EILOVERFLOW</B>
+       associated  with  extended-level  conformance  are not yet
+       detected (this implementation does not  yet  support  XPG4
+       multi-byte characters).
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>, <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_instr.3x.html b/doc/html/man/curs_instr.3x.html
new file mode 100644 (file)
index 0000000..3074639
--- /dev/null
@@ -0,0 +1,80 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>instr</B>,  <B>innstr</B>, <B>winstr</B>, <B>winnstr</B>, <B>mvinstr</B>, <B>mvinnstr</B>, <B>mvwin-</B>
+       <B>str</B>, <B>mvwinnstr</B> - get a string of characters from a  <B>curses</B>
+       window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>instr(char</B> <B>*str);</B>
+       <B>int</B> <B>innstr(char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>winstr(WINDOW</B> <B>*win,</B> <B>char</B> <B>*str);</B>
+       <B>int</B> <B>winnstr(WINDOW</B> <B>*win,</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>mvinstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*str);</B>
+       <B>int</B> <B>mvinnstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+       <B>int</B> <B>mvwinstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*str);</B>
+       <B>int</B>  <B>mvwinnstr(WINDOW</B>  <B>*win,</B>  <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*str,</B> <B>int</B>
+       <B>n);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These routines return  a  string  of  characters  in  <I>str</I>,
+       extracted  starting  at the current cursor position in the
+       named window.  Attributes are stripped  from  the  charac-
+       ters.   The  four  functions  with  <I>n</I> as the last argument
+       return a leading  substring  at  most  <I>n</I>  characters  long
+       (exclusive of the trailing NUL).
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All  of the functions return <B>ERR</B> upon failure, or the num-
+       ber of characters actually read into the string.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that all routines except <B>winnstr</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The XSI Curses error  conditions  <B>EILSEQ</B>  and  <B>EILOVERFLOW</B>
+       associated  with  extended-level  conformance  are not yet
+       detected (this implementation does not  yet  support  XPG4
+       multi-byte  characters).  SVr4 does not document whether a
+       length limit includes or excludes the trailing NUL.
+
+       The ncurses library extends the XSI description by  allow-
+       ing  a  negative value for <I>n</I>.  In this case, the functions
+       return the string ending at the right margin.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>.
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_kernel.3x.html b/doc/html/man/curs_kernel.3x.html
new file mode 100644 (file)
index 0000000..094f396
--- /dev/null
@@ -0,0 +1,188 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>def_prog_mode</B>,       <B>def_shell_mode</B>,      <B>reset_prog_mode</B>,
+       <B>reset_shell_mode</B>, <B>resetty</B>, <B>savetty</B>, <B>getsyx</B>, <B>setsyx</B>, <B>ripof-</B>
+       <B>fline</B>, <B>curs_set</B>, <B>napms</B> - low-level <B>curses</B> routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>def_prog_mode(void);</B>
+       <B>int</B> <B>def_shell_mode(void);</B>
+       <B>int</B> <B>reset_prog_mode(void);</B>
+       <B>int</B> <B>reset_shell_mode(void);</B>
+       <B>int</B> <B>resetty(void);</B>
+       <B>int</B> <B>savetty(void);</B>
+       <B>void</B> <B>getsyx(int</B> <B>y,</B> <B>int</B> <B>x);</B>
+       <B>void</B> <B>setsyx(int</B> <B>y,</B> <B>int</B> <B>x);</B>
+       <B>int</B> <B>ripoffline(int</B> <B>line,</B> <B>int</B> <B>(*init)(WINDOW</B> <B>*,</B> <B>int));</B>
+       <B>int</B> <B>curs_set(int</B> <B>visibility);</B>
+       <B>int</B> <B>napms(int</B> <B>ms);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  following  routines  give low-level access to various
+       <B>curses</B> capabilities.  Theses routines typically  are  used
+       inside library routines.
+
+       The  <B>def_prog_mode</B>  and  <B>def_shell_mode</B>  routines save the
+       current terminal modes as the  "program"  (in  <B>curses</B>)  or
+       "shell"   (not   in   <B>curses</B>)   state   for   use  by  the
+       <B>reset_prog_mode</B> and <B>reset_shell_mode</B>  routines.   This  is
+       done  automatically  by  <B>initscr</B>.   There is one such save
+       area for each screen context allocated by <B>newterm()</B>.
+
+       The <B>reset_prog_mode</B> and <B>reset_shell_mode</B> routines  restore
+       the  terminal  to "program" (in <B>curses</B>) or "shell" (out of
+       <B>curses</B>) state.  These are  done  automatically  by  <B>endwin</B>
+       and,  after  an  <B>endwin</B>, by <B>doupdate</B>, so they normally are
+       not called.
+
+       The <B>resetty</B> and <B>savetty</B>  routines  save  and  restore  the
+       state  of  the  terminal modes.  <B>savetty</B> saves the current
+       state in a buffer and <B>resetty</B> restores the state  to  what
+       it was at the last call to <B>savetty</B>.
+
+       The  <B>getsyx</B> routine returns the current coordinates of the
+       virtual screen cursor in <I>y</I> and <I>x</I>.  If <B>leaveok</B> is currently
+       <B>TRUE</B>,  then <B>-1</B>,<B>-1</B> is returned.  If lines have been removed
+       from the top of the screen,  using  <B>ripoffline</B>,  <I>y</I>  and  <I>x</I>
+       include  these  lines;  therefore,  <I>y</I> and <I>x</I> should be used
+       only as arguments for <B>setsyx</B>.
+
+       The <B>setsyx</B> routine sets the virtual screen cursor to <I>y</I>, <I>x</I>.
+       If <I>y</I> and <I>x</I> are both <B>-1</B>, then <B>leaveok</B> is set.  The two rou-
+       tines <B>getsyx</B> and <B>setsyx</B> are  designed  to  be  used  by  a
+       library routine, which manipulates <B>curses</B> windows but does
+       not want to change the current position of  the  program's
+       cursor.   The  library  routine  would  call <B>getsyx</B> at the
+       beginning, do its manipulation of its own  windows,  do  a
+       <B>wnoutrefresh</B>  on  its  windows, call <B>setsyx</B>, and then call
+       <B>doupdate</B>.
+
+       The <B>ripoffline</B> routine provides access to the same  facil-
+       ity  that  <B>slk_init</B>  [see <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>] uses to reduce the
+       size of the screen.   <B>ripoffline</B>  must  be  called  before
+       <B>initscr</B> or <B>newterm</B> is called.  If <I>line</I> is positive, a line
+       is removed from the top of <B>stdscr</B>; if <I>line</I> is negative,  a
+       line is removed from the bottom.  When this is done inside
+       <B>initscr</B>, the routine <B>init</B> (supplied by the user) is called
+       with  two arguments: a window pointer to the one-line win-
+       dow that has been allocated and an integer with the number
+       of columns in the window.  Inside this initialization rou-
+       tine, the integer variables <B>LINES</B>  and  <B>COLS</B>  (defined  in
+       <B>&lt;curses.h&gt;</B>) are not guaranteed to be accurate and <B>wrefresh</B>
+       or <B>doupdate</B> must not be called.  It is allowable  to  call
+       <B>wnoutrefresh</B> during the initialization routine.
+
+       <B>ripoffline</B>  can  be called up to five times before calling
+       <B>initscr</B> or <B>newterm</B>.
+
+       The <B>curs_set</B> routine sets  the  cursor  state  is  set  to
+       invisible, normal, or very visible for <B>visibility</B> equal to
+       <B>0</B>, <B>1</B>, or <B>2</B> respectively.  If  the  terminal  supports  the
+       <I>visibility</I>   requested,   the  previous  <I>cursor</I>  state  is
+       returned; otherwise, <B>ERR</B> is returned.
+
+       The <B>napms</B> routine is used to sleep for <I>ms</I> milliseconds.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Except for <B>curs_set</B>,  these  routines  always  return  <B>OK</B>.
+       <B>curs_set</B>  returns the previous cursor state, or <B>ERR</B> if the
+       requested <I>visibility</I> is not supported.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <B>getsyx</B> is a macro, so <B>&amp;</B> is not necessary  before
+       the variables <I>y</I> and <I>x</I>.
+
+       Older  SVr4  man  pages  warn  that  the  return  value of
+       <B>curs_set</B> "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.
+
+       Both ncurses and SVr4 will  call  <B>curs_set</B>  in  <B>endwin</B>  if
+       <B>curs_set</B>  has  been  called  to make the cursor other than
+       normal, i.e., either visible or very visible.  There is no
+       way  for  ncurses to determine the initial cursor state to
+       restore that.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The functions <B>setsyx</B> and <B>getsyx</B> are not described  in  the
+       XSI  Curses standard, Issue 4.  All other functions are as
+       described in XSI Curses.
+
+       The SVr4 documentation describes <B>setsyx</B> and <B>getsyx</B> as hav-
+       ing  return  type  int.  This  is  misleading, as they are
+       macros with no documented semantics for the return  value.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>,       <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>,      <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>,
+       <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>, <B><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></B>, <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_mouse.3x.html b/doc/html/man/curs_mouse.3x.html
new file mode 100644 (file)
index 0000000..6e1ca87
--- /dev/null
@@ -0,0 +1,242 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>getmouse</B>,  <B>ungetmouse</B>,  <B>mousemask</B>,  <B>wenclose</B>, <B>mouse_trafo</B>,
+       <B>wmouse_trafo</B>,  <B>mouseinterval</B>  -  mouse  interface  through
+       curses
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>typedef</B> <B>unsigned</B> <B>long</B> <B>mmask_t;</B>
+
+       <B>typedef</B> <B>struct</B>
+       <B>{</B>
+           <B>short</B> <B>id;</B>         <I>/*</I> <I>ID</I> <I>to</I> <I>distinguish</I> <I>multiple</I> <I>devices</I> <I>*/</I>
+           <B>int</B> <B>x,</B> <B>y,</B> <B>z;</B>      <I>/*</I> <I>event</I> <I>coordinates</I> <I>*/</I>
+           <B>mmask_t</B> <B>bstate;</B>   <I>/*</I> <I>button</I> <I>state</I> <I>bits</I> <I>*/</I>
+       <B>}</B>
+       <B>MEVENT;</B>
+       <B>int</B> <B>getmouse(MEVENT</B> <B>*event);</B>
+       <B>int</B> <B>ungetmouse(MEVENT</B> <B>*event);</B>
+       <B>mmask_t</B> <B>mousemask(mmask_t</B> <B>newmask,</B> <B>mmask_t</B> <B>*oldmask);</B>
+       <B>bool</B> <B>wenclose(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+       <B>bool</B> <B>mouse_trafo(int*</B> <B>pY,</B> <B>int*</B> <B>pX,</B> <B>bool</B> <B>to_screen);</B>
+       <B>bool</B> <B>wmouse_trafo(const</B> <B>WINDOW*</B> <B>win,</B> <B>int*</B> <B>pY,</B> <B>int*</B> <B>pX,</B>
+            <B>bool</B> <B>to_screen);</B>
+       <B>int</B> <B>mouseinterval(int</B> <B>erval);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These  functions provide an interface to mouse events from
+       <B><A HREF="ncurses.3x.html">ncurses(3x)</A></B>.  Mouse events are  represented  by  <B>KEY_MOUSE</B>
+       pseudo-key values in the <B>wgetch</B> input stream.
+
+       To  make mouse events visible, use the <B>mousemask</B> 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:
+
+       <I>Name</I>                     <I>Description</I>
+       ---------------------------------------------------------------------
+       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_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  <B>wgetch</B>  function on that window may
+       return <B>KEY_MOUSE</B> as an indicator that a  mouse  event  has
+       been queued.  To read the event data and pop the event off
+       the queue, call <B>getmouse</B>.  This function will return <B>OK</B> if
+       a mouse event is actually visible in the given window, <B>ERR</B>
+       otherwise.  When <B>getmouse</B> returns <B>OK</B>, 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 <B>ungetmouse</B> function behaves  analogously  to  <B>ungetch</B>.
+       It  pushes  a  <B>KEY_MOUSE</B>  event  onto the input queue, and
+       associates with  that  event  the  given  state  data  and
+       screen-relative character-cell coordinates.
+
+       The  <B>wenclose</B>  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 <B>wmouse_trafo</B> 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 <B>to_screen</B> is <B>TRUE</B>, the pointers <B>pY,</B> <B>pX</B>  must
+       reference  the coordinates of a location inside the window
+       <B>win</B>. They are converted to screen-relative coordinates and
+       returned  through the pointers. If the conversion was suc-
+       cessful, the function returns <B>TRUE</B>. If one of the  parame-
+       ters  was  NULL  or the location is not inside the window,
+       <B>FALSE</B> is returned. If <B>to_screen</B> is <B>FALSE</B>, the pointers <B>pY,</B>
+       <B>pX</B>  must  reference  screen-relative coordinates. They are
+       converted to stdscr-relative coordinates if the window <B>win</B>
+       encloses  this  point.  In  this case the function returns
+       <B>TRUE</B>. If one of the parameters is NULL or the point is not
+       inside  the window, <B>FALSE</B> is returned. Please notice, that
+       the referenced coordinates are only replaced by  the  con-
+       verted coordinates if the transformation was successful.
+
+       The <B>mouseinterval</B> 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 <B>get-</B>
+       <B>str</B> that expects a linefeed for input-loop termination.
+
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       <B>getmouse</B>, <B>ungetmouse</B> and <B>mouseinterval</B> return the  integer
+       <B>ERR</B>  upon failure or <B>OK</B> upon successful completion. <B>mouse-</B>
+       <B>mask</B> returns the mask of reportable events.  <B>wenclose</B>  and
+       <B>wmouse_trafo</B> are boolean functions returning <B>TRUE</B> or <B>FALSE</B>
+       depending on their test result.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These calls were designed for  <B><A HREF="ncurses.3x.html">ncurses(3x)</A></B>,  and  are  not
+       found in SVr4 curses, 4.4BSD curses, or any other previous
+       version of curses.
+
+       The feature macro <B>NCURSES_MOUSE_VERSION</B> is provided so the
+       preprocessor  can  be  used to test whether these features
+       are present  (its  value  is  1).   If  the  interface  is
+       changed, the value of <B>NCURSES_MOUSE_VERSION</B> will be incre-
+       mented.
+
+       The order of the <B>MEVENT</B> structure members is  not  guaran-
+       teed.   Additional fields may be added to the structure in
+       the future.
+
+       Under  <B><A HREF="ncurses.3x.html">ncurses(3x)</A></B>,  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  and  there  is  no gpm daemon running on your
+       machine, mouse events will not be visible  to  <B><A HREF="ncurses.3x.html">ncurses(3x)</A></B>
+       (and the <B>wmousemask</B> function will always return <B>0</B>).
+
+       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 <B>wmousemask</B>.
+       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, since  they  are  inter-
+       preted  as  a  variety  of  function  key.   Your terminfo
+       description must have <B>kmous</B> 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,  <B>ncurses</B>  assumes  that  if your $DISPLAY
+       environment variable is set, and <B>kmous</B> is defined  in  the
+       terminal  description,  then  the  terminal may send mouse
+       events.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_move.3x.html b/doc/html/man/curs_move.3x.html
new file mode 100644 (file)
index 0000000..7a73e48
--- /dev/null
@@ -0,0 +1,80 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>move</B>, <B>wmove</B> - move <B>curses</B> window cursor
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>move(int</B> <B>y,</B> <B>int</B> <B>x);</B>
+       <B>int</B> <B>wmove(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These  routines move the cursor associated with the window
+       to line <I>y</I> and column <I>x</I>.  This routine does  not  move  the
+       physical  cursor  of the terminal until <B>refresh</B> is called.
+       The position specified is relative to the upper  left-hand
+       corner of the window, which is (0,0).
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       These routines return <B>ERR</B> upon failure and OK (SVr4 speci-
+       fies only "an integer value other than <B>ERR</B>") upon success-
+       ful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <B>move</B> may be a macro.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  functions are described in the XSI Curses standard,
+       Issue 4.  The standard specifies that if (y,x) is within a
+       multi-column  character,  the cursor is moved to the first
+       column of that  character;  however,  this  implementation
+       does  not  yet  support  the extended-level XSI multi-byte
+       characters.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_outopts.3x.html b/doc/html/man/curs_outopts.3x.html
new file mode 100644 (file)
index 0000000..a7a0a45
--- /dev/null
@@ -0,0 +1,188 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>clearok</B>,   <B>idlok</B>,   <B>idcok</B>   <B>immedok</B>,  <B>leaveok</B>,  <B>setscrreg</B>,
+       <B>wsetscrreg</B>, <B>scrollok</B>, <B>nl</B>, <B>nonl</B> - <B>curses</B> output options
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>clearok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+       <B>int</B> <B>idlok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+       <B>void</B> <B>idcok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+       <B>void</B> <B>immedok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+       <B>int</B> <B>leaveok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+       <B>int</B> <B>setscrreg(int</B> <B>top,</B> <B>int</B> <B>bot);</B>
+       <B>int</B> <B>wsetscrreg(WINDOW</B> <B>*win,</B> <B>int</B> <B>top,</B> <B>int</B> <B>bot);</B>
+       <B>int</B> <B>scrollok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+       <B>int</B> <B>nl(void);</B>
+       <B>int</B> <B>nonl(void);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These routines set options that change the style of output
+       within  <B>curses</B>.   All  options are initially <B>FALSE</B>, unless
+       otherwise stated.  It  is  not  necessary  to  turn  these
+       options off before calling <B>endwin</B>.
+
+       If  <B>clearok</B> is called with <B>TRUE</B> as argument, the next call
+       to <B>wrefresh</B> with this window will clear  the  screen  com-
+       pletely  and  redraw the entire screen from scratch.  This
+       is useful when the contents of the screen  are  uncertain,
+       or  in  some  cases for a more pleasing visual effect.  If
+       the <I>win</I> argument to <B>clearok</B> is the global variable <B>curscr</B>,
+       the  next  call  to  <B>wrefresh</B>  with  any window causes the
+       screen to be cleared and repainted from scratch.
+
+       If <B>idlok</B> is called with <B>TRUE</B> as  second  argument,  <B>curses</B>
+       considers using the hardware insert/delete line feature of
+       terminals so equipped.  Calling <B>idlok</B> with <B>FALSE</B> as second
+       argument  disables  use  of  line  insertion and deletion.
+       This option should be  enabled  only  if  the  application
+       needs  insert/delete  line, for example, for a screen edi-
+       tor.  It is disabled by default because insert/delete line
+       tends  to  be  visually annoying when used in applications
+       where it isn't really needed.  If insert/delete line  can-
+       not  be  used,  <B>curses</B> redraws the changed portions of all
+       lines.
+
+       If <B>idcok</B> is called with <B>FALSE</B> as second  argument,  <B>curses</B>
+       no longer considers using the hardware insert/delete char-
+       acter feature of terminals so equipped.  Use of  character
+       insert/delete  is  enabled by default.  Calling <B>idcok</B> with
+       <B>TRUE</B> as second argument re-enables use of character inser-
+       tion and deletion.
+
+       If  <B>immedok</B> is called with <B>TRUE</B> <B>as</B> <B>argument</B>, any change in
+       the window image, such  as  the  ones  caused  by  <B>waddch,</B>
+       <B>wclrtobot,</B> <B>wscrl</B>, <I>etc</I>., automatically cause a call to <B>wre-</B>
+       <B>fresh</B>.  However, it may degrade performance  considerably,
+       due  to  repeated  calls  to  <B>wrefresh</B>.  It is disabled by
+       default.
+
+       Normally, the hardware cursor is left at the  location  of
+       the  window  cursor  being  refreshed.  The <B>leaveok</B> option
+       allows the cursor to be left wherever the  update  happens
+       to leave it.  It is useful for applications where the cur-
+       sor is not used, since it  reduces  the  need  for  cursor
+       motions.   If  possible, the cursor is made invisible when
+       this option is enabled.
+
+       The <B>setscrreg</B> and <B>wsetscrreg</B> routines allow  the  applica-
+       tion  programmer  to  set a software scrolling region in a
+       window.  <I>top</I> and <I>bot</I> are the line numbers of the  top  and
+       bottom margin of the scrolling region.  (Line 0 is the top
+       line of the window.)  If  this  option  and  <B>scrollok</B>  are
+       enabled,  an  attempt  to  move off the bottom margin line
+       causes all lines in the scrolling  region  to  scroll  one
+       line in the direction of the first line.  Only the text of
+       the window is scrolled.  (Note that this has nothing to do
+       with  the use of a physical scrolling region capability in
+       the terminal, like that in the VT100.  If <B>idlok</B> is enabled
+       and   the  terminal  has  either  a  scrolling  region  or
+       insert/delete line capability, they will probably be  used
+       by the output routines.)
+
+       The  <B>scrollok</B> option controls what happens when the cursor
+       of a window is  moved  off  the  edge  of  the  window  or
+       scrolling  region,  either as a result of a newline action
+       on the bottom line, or typing the last  character  of  the
+       last line.  If disabled, (<I>bf</I> is <B>FALSE</B>), the cursor is left
+       on the bottom line.  If enabled, (<I>bf</I> is <B>TRUE</B>), the  window
+       is  scrolled  up  one  line (Note that in order to get the
+       physical scrolling effect on the terminal, it is also nec-
+       essary to call <B>idlok</B>).
+
+       The  <B>nl</B>  and  <B>nonl</B> 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  <B>addch('\n')</B>
+       does the equivalent of return and line feed on the virtual
+       screen).  Initially, these translations do occur.  If  you
+       disable  them using <B>nonl</B>, <B>curses</B> will be able to make bet-
+       ter use of the line-feed capability, resulting  in  faster
+       cursor  motion.   Also, <B>curses</B> will then be able to detect
+       the return key.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       The functions <B>setscrreg</B> and <B>wsetscrreg</B> return <B>OK</B> upon suc-
+       cess  and <B>ERR</B> upon failure. All other routines that return
+       an integer always return <B>OK</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These functions are described in the XSI Curses  standard,
+       Issue 4.
+
+       The  XSI  Curses  standard is ambiguous on the question of
+       whether <B>raw</B>() should disable the  CRLF  translations  con-
+       trolled by <B>nl</B>() and <B>nonl</B>().  BSD curses did turn off these
+       translations; AT&amp;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.
+
+       Some  historic  curses  implementations had, as an undocu-
+       mented feature,  the  ability  to  do  the  equivalent  of
+       <B>clearok(...,</B>  <B>1)</B>  by saying <B>touchwin(stdscr)</B> or <B>clear(std-</B>
+       <B>scr)</B>.  This will not work under ncurses.
+
+       Earlier System V  curses  implementations  specified  that
+       with  <B>scrollok</B> enabled, any window modification triggering
+       a scroll also forced a physical refresh.  XSI Curses  does
+       not  require this, and <B>ncurses</B> avoids doing it in order to
+       perform better vertical-motion  optimization  at  <B>wrefresh</B>
+       time.
+
+       The  XSI  Curses standard does not mention that the cursor
+       should be made invisible  as  a  side-effect  of  <B>leaveok</B>.
+       SVr4  curses  documentation  does  this, but the code does
+       not.  Use <B>curs_set</B> to make the cursor invisible.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <B>clearok</B>, <B>leaveok</B>, <B>scrollok</B>, <B>idcok</B>, <B>nl</B>, <B>nonl</B>  and
+       <B>setscrreg</B> may be macros.
+
+       The <B>immedok</B> routine is useful for windows that are used as
+       terminal emulators.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>,        <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>,         <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>,
+       <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>, <B><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_overlay.3x.html b/doc/html/man/curs_overlay.3x.html
new file mode 100644 (file)
index 0000000..d2af67a
--- /dev/null
@@ -0,0 +1,80 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>overlay</B>, <B>overwrite</B>, <B>copywin</B> - overlay and manipulate over-
+       lapped <B>curses</B> windows
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>overlay(const</B> <B>WINDOW</B> <B>*srcwin,</B> <B>WINDOW</B> <B>*dstwin);</B>
+       <B>int</B> <B>overwrite(const</B> <B>WINDOW</B> <B>*srcwin,</B> <B>WINDOW</B> <B>*dstwin);</B>
+       <B>int</B> <B>copywin(WINDOW</B> <B>*srcwin,</B> <B>WINDOW</B> <B>*dstwin,</B> <B>int</B> <B>sminrow,</B>
+             <B>int</B> <B>smincol,</B> <B>int</B> <B>dminrow,</B> <B>int</B> <B>dmincol,</B> <B>int</B> <B>dmaxrow,</B>
+             <B>int</B> <B>dmaxcol,</B> <B>int</B> <B>overlay);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <B>overlay</B> and <B>overwrite</B> routines overlay <I>srcwin</I>  on  top
+       of  <I>dstwin</I>.   <I>scrwin</I> and <I>dstwin</I> are not required to be the
+       same size; only text where  the  two  windows  overlap  is
+       copied.  The difference is that <B>overlay</B> is non-destructive
+       (blanks are not copied) whereas <B>overwrite</B> is  destructive.
+
+       The  <B>copywin</B>  routine provides a finer granularity of con-
+       trol over the <B>overlay</B> and <B>overwrite</B> routines.  Like in the
+       <B>prefresh</B> routine, a rectangle is specified in the destina-
+       tion window, (<I>dminrow</I>, <I>dmincol</I>)  and  (<I>dmaxrow</I>,  <I>dmaxcol</I>),
+       and  the  upper-left-corner coordinates of the source win-
+       dow, (<I>sminrow</I>, <I>smincol</I>).  If the argument <I>overlay</I> is <B>true</B>,
+       then copying is non-destructive, as in <B>overlay</B>.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Routines  that  return an integer return <B>ERR</B> upon failure,
+       and <B>OK</B> (SVr4 only specifies "an integer value  other  than
+       <B>ERR</B>") upon successful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <B>overlay</B> and <B>overwrite</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The XSI Curses standard, Issue 4 describes these functions
+       (adding the const qualifiers).  It further specifies their
+       behavior  in  the  presence  of characters with multi-byte
+       renditions (not yet supported in this implementation).
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_pad.3x.html b/doc/html/man/curs_pad.3x.html
new file mode 100644 (file)
index 0000000..6172c57
--- /dev/null
@@ -0,0 +1,134 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>newpad</B>, <B>subpad</B>, <B>prefresh</B>, <B>pnoutrefresh</B>, <B>pechochar</B> - create
+       and display <B>curses</B> pads
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>WINDOW</B> <B>*newpad(int</B> <B>nlines,</B> <B>int</B> <B>ncols);</B>
+       <B>WINDOW</B> <B>*subpad(WINDOW</B> <B>*orig,</B> <B>int</B> <B>nlines,</B> <B>int</B> <B>ncols,</B>
+             <B>int</B> <B>begin_y,</B> <B>int</B> <B>begin_x);</B>
+       <B>int</B> <B>prefresh(WINDOW</B> <B>*pad,</B> <B>int</B> <B>pminrow,</B> <B>int</B> <B>pmincol,</B>
+             <B>int</B> <B>sminrow,</B> <B>int</B> <B>smincol,</B> <B>int</B> <B>smaxrow,</B> <B>int</B> <B>smaxcol);</B>
+       <B>int</B> <B>pnoutrefresh(WINDOW</B> <B>*pad,</B> <B>int</B> <B>pminrow,</B> <B>int</B> <B>pmincol,</B>
+             <B>int</B> <B>sminrow,</B> <B>int</B> <B>smincol,</B> <B>int</B> <B>smaxrow,</B> <B>int</B> <B>smaxcol);</B>
+       <B>int</B> <B>pechochar(WINDOW</B> <B>*pad,</B> <B>chtype</B> <B>ch);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <B>newpad</B> routine creates and returns a pointer to a  new
+       pad data structure with the given number of lines, <I>nlines</I>,
+       and columns, <I>ncols</I>.  A pad is like a window,  except  that
+       it is not restricted by the screen size, and is not neces-
+       sarily associated with a particular part  of  the  screen.
+       Pads can be used when a large window is needed, and only a
+       part of the window will be on  the  screen  at  one  time.
+       Automatic refreshes of pads (<I>e</I>.<I>g</I>., from scrolling or echo-
+       ing of input) do not occur.  It is not legal to call  <B>wre-</B>
+       <B>fresh</B>  with a <I>pad</I> as an argument; the routines <B>prefresh</B> or
+       <B>pnoutrefresh</B> should be called instead.   Note  that  these
+       routines require additional parameters to specify the part
+       of the pad to be displayed and the location on the  screen
+       to be used for the display.
+
+       The <B>subpad</B> routine creates and returns a pointer to a sub-
+       window within a  pad  with  the  given  number  of  lines,
+       <I>nlines</I>,  and  columns,  <I>ncols</I>.   Unlike <B>subwin</B>, which uses
+       screen coordinates, the window is  at  position  (<I>begin</I>_<I>x</I><B>,</B>
+       <I>begin</I>_<I>y</I>)  on the pad.  The window is made in the middle of
+       the window <I>orig</I>, so that changes made to one window affect
+       both  windows.   During  the  use of this routine, it will
+       often be necessary to call <B>touchwin</B> or <B>touchline</B>  on  <I>orig</I>
+       before calling <B>prefresh</B>.
+
+       The  <B>prefresh</B>  and  <B>pnoutrefresh</B> routines are analogous to
+       <B>wrefresh</B> and <B>wnoutrefresh</B> except that they relate to  pads
+       instead  of windows.  The additional parameters are needed
+       to indicate what part of the pad and screen are  involved.
+       <I>pminrow</I>  and <I>pmincol</I> specify the upper left-hand corner of
+       the rectangle to be displayed in the pad.  <I>sminrow</I>,  <I>smin-</I>
+       <I>col</I>, <I>smaxrow</I>, and <I>smaxcol</I> specify the edges of the rectan-
+       gle to be displayed on the screen.  The  lower  right-hand
+       corner of the rectangle to be displayed in the pad is cal-
+       culated from the screen coordinates, since the  rectangles
+       must  be  the same size.  Both rectangles must be entirely
+       contained within their  respective  structures.   Negative
+       values  of  <I>pminrow</I>,  <I>pmincol</I>,  <I>sminrow</I>,  or  <I>smincol</I>  are
+       treated as if they were zero.
+
+       The <B>pechochar</B> routine is functionally equivalent to a call
+       to  <B>addch</B>  followed by a call to <B>refresh</B>, a call to <B>waddch</B>
+       followed by a call to <B>wrefresh</B>, or a call to  <B>waddch</B>  fol-
+       lowed  by  a  call  to <B>prefresh.</B> The knowledge that only a
+       single character is being output is taken into  considera-
+       tion  and, for non-control characters, a considerable per-
+       formance gain  might  be  seen  by  using  these  routines
+       instead  of  their equivalents.  In the case of <B>pechochar</B>,
+       the last location of the pad on the screen is  reused  for
+       the arguments to <B>prefresh</B>.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Routines  that  return  an integer return <B>ERR</B> upon failure
+       and <B>OK</B> (SVr4 only specifies "an integer value  other  than
+       <B>ERR</B>") upon successful completion.
+
+       Routines  that  return  pointers return <B>NULL</B> on error, and
+       set <B>errno</B> to <B>ENOMEM</B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <B>pechochar</B> may be a macro.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The XSI Curses standard, Issue  4  describes  these  func-
+       tions.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>,        <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>,       <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>,
+       <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
similarity index 54%
rename from Ada95/html/man/curs_print.3x.html
rename to doc/html/man/curs_print.3x.html
index e3dc345a59ce58ba56fc6c8318ae4763eda9e8a3..1319ba6d35abec4f0939875e5adfdaf9bb800345 100644 (file)
@@ -1,23 +1,27 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>mcprint</STRONG> - ship binary data to printer
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>mcprint</B> - ship binary data to printer
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
 
-       <STRONG>int</STRONG> <STRONG>mcprint(char</STRONG> <STRONG>*data,</STRONG> <STRONG>int</STRONG> <STRONG>len);</STRONG>
+       <B>int</B> <B>mcprint(char</B> <B>*data,</B> <B>int</B> <B>len);</B>
 
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       This  function  uses the <STRONG>mc5p</STRONG> or <STRONG>mc4</STRONG> and <STRONG>mc5</STRONG> capabilities,
+       This  function  uses the <B>mc5p</B> or <B>mc4</B> and <B>mc5</B> capabilities,
        if they are present, to  ship  given  data  to  a  printer
        attached to the terminal.
 
-       Note  that  the <STRONG>mcprint</STRONG> code has no way to do flow control
+       Note  that  the <B>mcprint</B> code has no way to do flow control
        with the printer or to know how  much  buffering  it  has.
        Your  application  is  responsible for keeping the rate of
        writes to the printer below its continuous throughput rate
@@ -30,9 +34,9 @@
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       The  <STRONG>mcprint</STRONG>  function  returns <STRONG>ERR</STRONG> if the write operation
+       The  <B>mcprint</B>  function  returns <B>ERR</B> if the write operation
        aborted for some reason.  In this case, errno will contain
-       either  an  error  associated  with <STRONG>write(2)</STRONG> or one of the
+       either  an  error  associated  with <B>write(2)</B> or one of the
        following:
 
        ENODEV
             Couldn't allocate sufficient  memory  to  buffer  the
             printer write.
 
-            When <STRONG>mcprint</STRONG> succeeds, it returns the number of char-
+            When <B>mcprint</B> succeeds, it returns the number of char-
             acters actually sent to the printer.
 
 
 </PRE>
 <H2>PORTABILITY</H2><PRE>
-       The <STRONG>mcprint</STRONG> call was designed for <STRONG><A HREF="ncurses.3x.html">ncurses(3X)</A></STRONG>, and is  not
+       The <B>mcprint</B> call was designed for <B><A HREF="ncurses.3x.html">ncurses(3x)</A></B>, and is  not
        found in SVr4 curses, 4.4BSD curses, or any other previous
        version of curses.
 
 
 </PRE>
 <H2>BUGS</H2><PRE>
-       Padding in the <STRONG>mc5p</STRONG>, <STRONG>mc4</STRONG> and <STRONG>mc5</STRONG> capabilities will not  be
+       Padding in the <B>mc5p</B>, <B>mc4</B> and <B>mc5</B> capabilities will not  be
        interpreted.
 
 
 </PRE>
 <H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>
+
 
 
 
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_printw.3x.html b/doc/html/man/curs_printw.3x.html
new file mode 100644 (file)
index 0000000..95424b3
--- /dev/null
@@ -0,0 +1,78 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>printw</B>,  <B>wprintw</B>, <B>mvprintw</B>, <B>mvwprintw</B>, <B>vwprintw</B>, <B>vw_printw</B>
+       - print formatted output in <B>curses</B> windows
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>printw(char</B> <B>*fmt</B> [<B>,</B> <B>arg</B>] <B>...);</B>
+       <B>int</B> <B>wprintw(WINDOW</B> <B>*win,</B> <B>char</B> <B>*fmt</B> [<B>,</B> <B>arg</B>] <B>...);</B>
+       <B>int</B> <B>mvprintw(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*fmt</B> [<B>,</B> <B>arg</B>] <B>...);</B>
+       <B>int</B> <B>mvwprintw(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B>
+             <B>char</B> <B>*fmt</B> [<B>,</B> <B>arg]</B> ...);
+
+       <B>#include</B> <B>&lt;varargs.h&gt;</B>
+       <B>int</B> <B>vwprintw(WINDOW</B> <B>*win,</B> <B>char</B> <B>*fmt,</B> <B>varglist);</B>
+       <B>int</B> <B>vw_printw(WINDOW</B> <B>*win,</B> <B>char</B> <B>*fmt,</B> <B>varglist);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <B>printw</B>, <B>wprintw</B>, <B>mvprintw</B> and <B>mvwprintw</B>  routines  are
+       analogous  to  <B>printf</B>  [see  <B><A HREF="printf.3S.html">printf(3S)</A></B>].   In effect, the
+       string that would be output by <B>printf</B> is output instead as
+       though <B>waddstr</B> were used on the given window.
+
+       The   <B>vwprintw</B>   routine  is  analogous  to  <B>vprintf</B>  [see
+       <B><A HREF="printf.3S.html">printf(3S)</A></B>] and performs a <B>wprintw</B> using a variable  argu-
+       ment  list.  The third argument is a <B>va_list</B>, a pointer to
+       a list of arguments, as defined in <B>&lt;varargs.h&gt;</B>.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Routines that return an integer return  <B>ERR</B>  upon  failure
+       and  <B>OK</B>  (SVr4 only specifies "an integer value other than
+       <B>ERR</B>") upon successful completion.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The XSI Curses standard, Issue  4  describes  these  func-
+       tions.   The  function <B>vwprintw</B> is marked TO BE WITHDRAWN,
+       and is to be replaced by a function  <B>vw_printw</B>  using  the
+       <B>&lt;stdarg.h&gt;</B> interface.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="printf.3S.html">printf(3S)</A></B>, <B>vprintf(3S)</B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_refresh.3x.html b/doc/html/man/curs_refresh.3x.html
new file mode 100644 (file)
index 0000000..a0c616c
--- /dev/null
@@ -0,0 +1,134 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>refresh</B>, <B>wrefresh</B>, <B>wnoutrefresh</B>, <B>doupdate</B>, <B>redrawwin</B>, <B>wre-</B>
+       <B>drawln</B> - refresh <B>curses</B> windows and lines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>refresh(void);</B>
+       <B>int</B> <B>wrefresh(WINDOW</B> <B>*win);</B>
+       <B>int</B> <B>wnoutrefresh(WINDOW</B> <B>*win);</B>
+       <B>int</B> <B>doupdate(void);</B>
+       <B>int</B> <B>redrawwin(WINDOW</B> <B>*win);</B>
+       <B>int</B> <B>wredrawln(WINDOW</B> <B>*win,</B> <B>int</B> <B>beg_line,</B> <B>int</B> <B>num_lines);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <B>refresh</B> and <B>wrefresh</B>  routines  (or  <B>wnoutrefresh</B>  and
+       <B>doupdate</B>)  must be called to get actual output to the ter-
+       minal, as other routines  merely  manipulate  data  struc-
+       tures.   The  routine  <B>wrefresh</B> copies the named window to
+       the physical terminal screen, taking into account what  is
+       already  there  in order to do optimizations.  The <B>refresh</B>
+       routine is the same, using <B>stdscr</B> as the  default  window.
+       Unless  <B>leaveok</B>  has  been enabled, the physical cursor of
+       the terminal is left at the location  of  the  cursor  for
+       that window.
+
+       The  <B>wnoutrefresh</B>  and  <B>doupdate</B>  routines  allow multiple
+       updates with more  efficiency  than  <B>wrefresh</B>  alone.   In
+       addition  to  all  the window structures, <B>curses</B> keeps two
+       data structures representing the terminal screen: a physi-
+       cal screen, describing what is actually on the screen, and
+       a virtual screen, describing what the programmer wants  to
+       have on the screen.
+
+       The  routine <B>wrefresh</B> works by first calling <B>wnoutrefresh</B>,
+       which copies the named window to the virtual  screen,  and
+       then  calling  <B>doupdate</B>, which compares the virtual screen
+       to the physical screen and does the actual update.  If the
+       programmer  wishes  to  output  several windows at once, a
+       series of calls to <B>wrefresh</B> results in  alternating  calls
+       to  <B>wnoutrefresh</B>  and  <B>doupdate</B>, causing several bursts of
+       output to the screen.  By first calling  <B>wnoutrefresh</B>  for
+       each  window,  it  is then possible to call <B>doupdate</B> once,
+       resulting in only one burst of output,  with  fewer  total
+       characters transmitted and less CPU time used.  If the <I>win</I>
+       argument to <B>wrefresh</B> is the global  variable  <B>curscr</B>,  the
+       screen  is immediately cleared and repainted from scratch.
+
+       The phrase "copies the named window to the virtual screen"
+       above  is  ambiguous.   What  actually happens is that all
+       <I>touched</I> (changed) lines in the window are  copied  to  the
+       virtual  screen.   This affects programs that use overlap-
+       ping windows; it means that if two  windows  overlap,  you
+       can  refresh  them  in either order and the overlap region
+       will be modified only when it is explicitly changed.  (But
+       see  the  section on <B>PORTABILITY</B> below for a warning about
+       exploiting this behavior.)
+
+       The <B>wredrawln</B> routine indicates to <B>curses</B> that some screen
+       lines  are corrupted and should be thrown away before any-
+       thing is written over  them.   It  touches  the  indicated
+       lines  (marking  them  changed).   The routine <B>redrawwin</B>()
+       touches the entire window.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Routines that return an integer return <B>ERR</B>  upon  failure,
+       and  <B>OK</B>  (SVr4 only specifies "an integer value other than
+       <B>ERR</B>") upon successful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <B>refresh</B> and <B>redrawwin</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The XSI Curses standard, Issue  4  describes  these  func-
+       tions.
+
+       Whether  <B>wnoutrefresh()</B>  copies  to the virtual screen the
+       entire contents of a window or just its  changed  portions
+       has never been well-documented in historic curses versions
+       (including SVr4).  It might be unwise to  rely  on  either
+       behavior  in  programs  that  might have to be linked with
+       other curses implementations.   Instead,  you  can  do  an
+       explicit  <B>touchwin()</B>  before  the  <B>wnoutrefresh()</B>  call to
+       guarantee an entire-contents copy anywhere.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_scanw.3x.html b/doc/html/man/curs_scanw.3x.html
new file mode 100644 (file)
index 0000000..8ac48ad
--- /dev/null
@@ -0,0 +1,78 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>scanw</B>, <B>wscanw</B>, <B>mvscanw</B>, <B>mvwscanw</B>, <B>vwscanw</B>, <B>vw_scanw</B> - con-
+       vert formatted input from a <B>curses</B> widow
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>scanw(char</B> <B>*fmt</B> [<B>,</B> <B>arg</B>] <B>...);</B>
+       <B>int</B> <B>wscanw(WINDOW</B> <B>*win,</B> <B>char</B> <B>*fmt</B> [<B>,</B> <B>arg</B>] <B>...);</B>
+       <B>int</B> <B>mvscanw(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*fmt</B> [<B>,</B> <B>arg</B>] <B>...);</B>
+       <B>int</B> <B>mvwscanw(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B>
+             <B>char</B> <B>*fmt</B> [<B>,</B> <B>arg]</B> <B>...);</B>
+       <B>int</B> <B>vw_scanw(WINDOW</B> <B>*win,</B> <B>char</B> <B>*fmt,</B> <B>va_list</B> <B>varglist);</B>
+       <B>int</B> <B>vwscanw(WINDOW</B> <B>*win,</B> <B>char</B> <B>*fmt,</B> <B>va_list</B> <B>varglist);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <B>scanw</B>, <B>wscanw</B> and <B>mvscanw</B> routines  are  analogous  to
+       <B>scanf</B> [see <B><A HREF="scanf.3S.html">scanf(3S)</A></B>].  The effect of these routines is as
+       though <B>wgetstr</B> were called on the window, and the  result-
+       ing line used as input for <B><A HREF="sscanf.3.html">sscanf(3)</A></B>.  Fields which do not
+       map to a variable in the <I>fmt</I> field are lost.
+
+       The <B>vwscanw</B> routine is similar to <B>vwprintw</B> in that it per-
+       forms  a <B>wscanw</B> using a variable argument list.  The third
+       argument is a <I>va</I>_<I>list</I>, a pointer to a list  of  arguments,
+       as defined in <B>&lt;varargs.h&gt;</B>.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       <B>vwscanw</B> returns <B>ERR</B> on failure and an integer equal to the
+       number of fields scanned on success.
+
+       Applications may use the  return  value  from  the  <B>scanw</B>,
+       <B>wscanw</B>,  <B>mvscanw</B>  and  <B>mvwscanw</B>  routines to determine the
+       number of fields which were mapped in the call.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The XSI Curses standard, Issue  4  describes  these  func-
+       tions.   The  function  <B>vwscanw</B> is marked TO BE WITHDRAWN,
+       and is to be replaced by a  function  <B>vw_scanw</B>  using  the
+       <B>&lt;stdarg.h&gt;</B> interface.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>, <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>, <B><A HREF="scanf.3S.html">scanf(3S)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_scr_dump.3x.html b/doc/html/man/curs_scr_dump.3x.html
new file mode 100644 (file)
index 0000000..7931102
--- /dev/null
@@ -0,0 +1,134 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>scr_dump</B>,  <B>scr_restore</B>, <B>scr_init</B>, <B>scr_set</B> - read (write) a
+       <B>curses</B> screen from (to) a file
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>scr_dump(const</B> <B>char</B> <B>*filename);</B>
+       <B>int</B> <B>scr_restore(const</B> <B>char</B> <B>*filename);</B>
+       <B>int</B> <B>scr_init(const</B> <B>char</B> <B>*filename);</B>
+       <B>int</B> <B>scr_set(const</B> <B>char</B> <B>*filename);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <B>scr_dump</B> routine dumps the  current  contents  of  the
+       virtual screen to the file <I>filename</I>.
+
+       The  <B>scr_restore</B>  routine  sets  the virtual screen to the
+       contents of <I>filename</I>, which must have been  written  using
+       <B>scr_dump</B>.   The  next call to <B>doupdate</B> restores the screen
+       to the way it looked in the dump file.
+
+       The <B>scr_init</B> routine reads in the contents of <I>filename</I> and
+       uses  them  to initialize the <B>curses</B> data structures about
+       what the terminal currently has on  its  screen.   If  the
+       data  is  determined  to  be  valid, <B>curses</B> bases its next
+       update of the  screen  on  this  information  rather  than
+       clearing  the  screen and starting from scratch.  <B>scr_init</B>
+       is used after <B>initscr</B> or  a  <B>system</B>  [see  <B>system</B>(BA_LIB)]
+       call  to  share  the screen with another process which has
+       done a <B>scr_dump</B>  after  its  <B>endwin</B>  call.   The  data  is
+       declared  invalid  if  the terminfo capabilities <B>rmcup</B> and
+       <B>nrrmc</B> exist; also if the  terminal  has  been  written  to
+       since the preceding <B>scr_dump</B> call.
+
+       The  <B>scr_set</B>  routine  is a combination of <B>scr_restore</B> and
+       <B>scr_init</B>.  It tells the program that  the  information  in
+       <I>filename</I> 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 <B>getwin</B>
+       and <B>putwin</B> routines [see <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>].
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All routines return the integer <B>ERR</B> upon  failure  and  <B>OK</B>
+       upon success.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note  that  <B>scr_init</B>,  <B>scr_set</B>,  and  <B>scr_restore</B>  may  be
+       macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The XSI Curses standard, Issue 4,  describes  these  func-
+       tions (adding the const qualifiers).
+       The SVr4 docs merely say under <B>scr_init</B> that the dump data
+       is also considered invalid "if the time-stamp of  the  tty
+       is old" but don't define "old".
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>,       <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>,      <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>,
+       <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>, <B><A HREF="system.3S.html">system(3S)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_scroll.3x.html b/doc/html/man/curs_scroll.3x.html
new file mode 100644 (file)
index 0000000..fb2abac
--- /dev/null
@@ -0,0 +1,80 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>scroll</B>, <B>scrl</B>, <B>wscrl</B> - scroll a <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>scroll(WINDOW</B> <B>*win);</B>
+       <B>int</B> <B>scrl(int</B> <B>n);</B>
+       <B>int</B> <B>wscrl(WINDOW</B> <B>*win,</B> <B>int</B> <B>n);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  <B>scroll</B>  routine scrolls the window up one line.  This
+       involves moving the lines in the  window  data  structure.
+       As  an optimization, if the scrolling region of the window
+       is the entire screen, the physical screen may be  scrolled
+       at the same time.
+
+       For  positive  <I>n</I>,  the  <B>scrl</B> and <B>wscrl</B> routines scroll the
+       window up <I>n</I> lines (line <I>i</I>+<I>n</I> becomes <I>i</I>);  otherwise  scroll
+       the  window  down <I>n</I> lines.  This involves moving the lines
+       in the window character image structure.  The current cur-
+       sor position is not changed.
+
+       For these functions to work, scrolling must be enabled via
+       <B>scrollok</B>.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       These routines return <B>ERR</B> upon failure, and <B>OK</B> (SVr4  only
+       specifies "an integer value other than <B>ERR</B>") upon success-
+       ful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <B>scrl</B> and <B>scroll</B> may be macros.
+
+       The SVr4 documentation says that the optimization of phys-
+       ically  scrolling  immediately if the scroll region is the
+       entire screen "is"  performed,  not  "may  be"  performed.
+       This  implementation  deliberately does not guarantee that
+       this will occur, in order to leave open the possibility of
+       smarter  optimization  of  multiple  scroll actions on the
+       next update.
+
+       Neither the SVr4 nor the XSI documentation specify whether
+       the current attribute or current color-pair of blanks gen-
+       erated by the  scroll  function  is  zeroed.   Under  this
+       implementation it is.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The  XSI  Curses  standard,  Issue 4 describes these func-
+       tions.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_slk.3x.html b/doc/html/man/curs_slk.3x.html
new file mode 100644 (file)
index 0000000..cf77d62
--- /dev/null
@@ -0,0 +1,188 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>slk_init</B>,     <B>slk_set</B>,    <B>slk_refresh</B>,    <B>slk_noutrefresh</B>,
+       <B>slk_label</B>, <B>slk_clear</B>, <B>slk_restore</B>, <B>slk_touch</B>,  <B>slk_attron</B>,
+       <B>slk_attrset</B>,   <B>slk_attroff</B>,   <B>slk_attr_on</B>,   <B>slk_attr_set</B>,
+       <B>slk_attr_off</B>, <B>slk_attr</B> <B>slk_color</B> - <B>curses</B> soft label  rou-
+       tines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>slk_init(int</B> <B>fmt);</B>
+       <B>int</B> <B>slk_set(int</B> <B>labnum,</B> <B>const</B> <B>char</B> <B>*label,</B> <B>int</B> <B>fmt);</B>
+       <B>int</B> <B>slk_refresh(void);</B>
+       <B>int</B> <B>slk_noutrefresh(void);</B>
+       <B>char</B> <B>*slk_label(int</B> <B>labnum);</B>
+       <B>int</B> <B>slk_clear(void);</B>
+       <B>int</B> <B>slk_restore(void);</B>
+       <B>int</B> <B>slk_touch(void);</B>
+       <B>int</B> <B>slk_attron(const</B> <B>chtype</B> <B>attrs);</B>
+       <B>int</B> <B>slk_attroff(const</B> <B>chtype</B> <B>attrs);</B>
+       <B>int</B> <B>slk_attrset(const</B> <B>chtype</B> <B>attrs);</B>
+       <B>int</B> <B>slk_attr_on(attr_t</B> <B>attrs,</B> <B>void*</B> <B>opts);</B>
+       <B>int</B> <B>slk_attr_off(const</B> <B>attr_t</B> <B>attrs,</B> <B>void</B> <B>*</B> <B>opts);</B>
+       <B>int</B> <B>slk_attr_set(const</B> <B>attr_t</B> <B>attrs,</B>
+            <B>short</B> <B>color_pair_number,</B> <B>void*</B> <B>opts);</B>
+       <B>attr_t</B> <B>slk_attr(void);</B>
+       <B>int</B> <B>slk_color(short</B> <B>color_pair_number);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The slk* functions manipulate the set of soft function-key
+       labels that exist on many terminals.  For those  terminals
+       that do not have soft labels, <B>curses</B> takes over the bottom
+       line of <B>stdscr</B>, reducing the size of <B>stdscr</B> and the  vari-
+       able  <B>LINES</B>.  <B>curses</B> 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
+       hardware support for this mode.
+
+       The <B>slk_init</B> routine must  be  called  before  <B>initscr</B>  or
+       <B>newterm</B> is called.  If <B>initscr</B> eventually uses a line from
+       <B>stdscr</B> to emulate the soft labels, then <I>fmt</I> determines how
+       the  labels  are arranged on the screen.  Setting <I>fmt</I> to <B>0</B>
+       indicates a 3-2-3 arrangement of the labels, <B>1</B> indicates a
+       4-4 arrangement and <B>2</B> indicates the PC like 4-4-4 mode. If
+       <B>fmt</B> is set to <B>3</B>, 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 <B>slk_set</B> routine requires <I>labnum</I> to be a label  number,
+       from <B>1</B> to <B>8</B> (resp. <B>12</B>); <I>label</I> 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. <I>fmt</I> is either <B>0</B>, <B>1</B>, or <B>2</B>,  indicating  whether  the
+       label  is  to be left-justified, centered, or right-justi-
+       fied, respectively, within the label.
+
+       The <B>slk_refresh</B> and <B>slk_noutrefresh</B> routines correspond to
+       the <B>wrefresh</B> and <B>wnoutrefresh</B> routines.
+
+       The  <B>slk_label</B> routine returns the current label for label
+       number <I>labnum</I>, with leading and trailing blanks  stripped.
+
+       The  <B>slk_clear</B>  routine  clears  the  soft labels from the
+       screen.
+
+       The <B>slk_restore</B> routine, restores the soft labels  to  the
+       screen after a <B>slk_clear</B> has been performed.
+
+       The  <B>slk_touch</B>  routine  forces  all the soft labels to be
+       output the next time a <B>slk_noutrefresh</B> is performed.
+
+       The <B>slk_attron</B>, <B>slk_attrset</B>, <B>slk_attroff</B> and <B>slk_attr</B> rou-
+       tines correspond to <B>attron</B>, <B>attrset</B>, <B>attroff</B> and <B>attr_get</B>.
+       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  <B>slk_color</B> routine corresponds to <B>color_set</B>. 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 <B>ERR</B> upon failure and OK (SVr4 speci-
+       fies only "an integer value other than <B>ERR</B>") upon success-
+       ful  completion.  <B>slk_attr</B>  returns the attribute used for
+       the soft keys.
+
+       <B>slk_label</B> returns <B>NULL</B> on error.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Most applications would use <B>slk_noutrefresh</B> because a <B>wre-</B>
+       <B>fresh</B> is likely to follow soon.
+
+
+</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     <B>slk_attron</B>,    <B>slk_attroff</B>,
+       <B>slk_attrset</B> to be <B>attr_t</B>, and adds <B>const</B>  qualifiers.  The
+       format  codes  <B>2</B>  and  <B>3</B>  for  <B>slk_init()</B> and the function
+       <B>slk_attr</B> are specific to ncurses.
+
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>,        <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>,        <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>,
+       <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_termattrs.3x.html b/doc/html/man/curs_termattrs.3x.html
new file mode 100644 (file)
index 0000000..2119177
--- /dev/null
@@ -0,0 +1,134 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>baudrate</B>,  <B>erasechar</B>,  <B>has_ic</B>, <B>has_il</B>, <B>killchar</B>, <B>longname</B>,
+       <B>termattrs</B>, <B>termname</B> - <B>curses</B> environment query routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>baudrate(void);</B>
+       <B>char</B> <B>erasechar(void);</B>
+       <B>bool</B> <B>has_ic(void);</B>
+       <B>bool</B> <B>has_il(void);</B>
+       <B>char</B> <B>killchar(void);</B>
+       <B>char</B> <B>*longname(void);</B>
+       <B>attr_t</B> <B>termattrs(void);</B>
+       <B>char</B> <B>*termname(void);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <B>baudrate</B> routine returns the output speed of the  ter-
+       minal.   The  number  returned  is in bits per second, for
+       example <B>9600</B>, and is an integer.
+
+       The <B>erasechar</B> routine returns  the  user's  current  erase
+       character.
+
+       The <B>has_ic</B> routine is true if the terminal has insert- and
+       delete- character capabilities.
+
+       The <B>has_il</B> routine is true if the terminal has insert- and
+       delete-line  capabilities,  or  can  simulate  them  using
+       scrolling regions.  This might be used to determine if  it
+       would  be  appropriate to turn on physical scrolling using
+       <B>scrollok</B>.
+
+       The <B>killchar</B> routine returns the user's current line  kill
+       character.
+
+       The  <B>longname</B>  routine  returns a pointer to a static area
+       containing a verbose description of the current  terminal.
+       The maximum length of a verbose description is 128 charac-
+       ters.  It is defined only after the  call  to  <B>initscr</B>  or
+       <B>newterm</B>.   The area is overwritten by each call to <B>newterm</B>
+       and is not restored by <B>set_term</B>, so the  value  should  be
+       saved  between calls to <B>newterm</B> if <B>longname</B> is going to be
+       used with multiple terminals.
+
+       If a given terminal doesn't support a video attribute that
+       an  application  program is trying to use, <B>curses</B> may sub-
+       stitute a different video attribute for it.  The <B>termattrs</B>
+       function returns a logical <B>OR</B> of all video attributes sup-
+       ported by the terminal.  This information is useful when a
+       <B>curses</B>  program needs complete control over the appearance
+       of the screen.
+
+       The  <B>termname</B>   routine   returns   the   value   of   the
+       environmental  variable <B>TERM</B> (truncated to 14 characters).
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       <B>longname</B> and <B>termname</B> return <B>NULL</B> on error.
+
+       Routines that return an integer return  <B>ERR</B>  upon  failure
+       and  <B>OK</B>  (SVr4 only specifies "an integer value other than
+       <B>ERR</B>") upon successful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <B>termattrs</B> may be a macro.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The XSI Curses standard, Issue  4  describes  these  func-
+       tions.  It changes the return type of <B>termattrs</B> to the new
+       type <B>attr_t</B>.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>, <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_termcap.3x.html b/doc/html/man/curs_termcap.3x.html
new file mode 100644 (file)
index 0000000..a301dd1
--- /dev/null
@@ -0,0 +1,134 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>tgetent</B>, <B>tgetflag</B>, <B>tgetnum</B>, <B>tgetstr</B>, <B>tgoto</B>, <B>tputs</B> - direct
+       <B>curses</B> interface to the terminfo capability database
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+       <B>#include</B> <B>&lt;term.h&gt;</B>
+       <B>int</B> <B>tgetent(const</B> <B>char</B> <B>*bp,</B> <B>char</B> <B>*name);</B>
+       <B>int</B> <B>tgetflag(const</B> <B>char</B> <B>*id);</B>
+       <B>int</B> <B>tgetnum(const</B> <B>char</B> <B>*id);</B>
+       <B>char</B> <B>*tgetstr(const</B> <B>char</B> <B>*id,</B> <B>char</B> <B>**area);</B>
+       <B>char</B> <B>*tgoto(const</B> <B>char</B> <B>*cap,</B> <B>int</B> <B>col,</B> <B>int</B> <B>row);</B>
+       <B>int</B> <B>tputs(const</B> <B>char</B> <B>*str,</B> <B>int</B> <B>affcnt,</B> <B>int</B> <B>(*putc)(int));</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These routines are included as a conversion aid  for  pro-
+       grams  that use the <I>termcap</I> library.  Their parameters are
+       the same and the routines are emulated using the  <I>terminfo</I>
+       database.   Thus, they can only be used to query the capa-
+       bilities of entries for which a terminfo  entry  has  been
+       compiled.
+
+       The  <B>tgetent</B> routine loads the entry for <I>name</I>.  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 <I>bp</I>.
+
+       The <B>tgetflag</B> routine gets the boolean  entry  for  <I>id</I>,  or
+       zero if it is not available.
+
+       The  <B>tgetnum</B>  routine gets the numeric entry for <I>id</I>, or -1
+       if it is not available.
+
+       The <B>tgetstr</B> routine returns the string entry  for  <I>id</I>,  or
+       zero  if  it  is  not  available.  Use <B>tputs</B> to output the
+       returned string.  The return value will also be copied  to
+       the  buffer pointed to by <I>area</I>, and the <I>area</I> value will be
+       updated to point past the null ending this value.
+
+       The <B>tgoto</B> routine instantiates  the  parameters  into  the
+       given  capability.   The output from this routine is to be
+       passed to <B>tputs</B>.
+
+       The <B>tputs</B> routine is described  on  the  <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+       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  <B>ERR</B> upon failure and <B>OK</B> (SVr4 only speci-
+       fies "an integer value other than  <B>ERR</B>")  upon  successful
+       completion.
+
+       Routines that return pointers return <B>NULL</B> on error.
+
+
+</PRE>
+<H2>BUGS</H2><PRE>
+       If you call <B>tgetstr</B> to fetch <B>ca</B> 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 <B>tgoto</B> or <B>tparm</B>, which both expand terminfo-style.
+
+       Because terminfo conventions for representing  padding  in
+       string  capabilities  differ  from termcap's, <B>tputs("50");</B>
+       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
+       be removed in future versions.
+
+       Neither  the  XSI  Curses  standard nor the SVr4 man pages
+       documented the return values of <B>tgetent</B> correctly,  though
+       all three were in fact returned ever since SVr1.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>, <B><A HREF="putc.3S.html">putc(3S)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_terminfo.3x.html b/doc/html/man/curs_terminfo.3x.html
new file mode 100644 (file)
index 0000000..8a53cbc
--- /dev/null
@@ -0,0 +1,296 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>setupterm</B>, <B>setterm</B>, <B>set_curterm</B>, <B>del_curterm</B>, <B>restartterm</B>,
+       <B>tparm</B>, <B>tputs</B>, <B>putp</B>, <B>vidputs</B>,  <B>vidattr</B>,  <B>mvcur</B>,  <B>tigetflag</B>,
+       <B>tigetnum</B>,   <B>tigetstr</B>   -  <B>curses</B>  interfaces  to  terminfo
+       database
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+       <B>#include</B> <B>&lt;term.h&gt;</B>
+
+       <B>int</B> <B>setupterm(const</B> <B>char</B> <B>*term,</B> <B>int</B> <B>fildes,</B> <B>int</B> <B>*errret);</B>
+       <B>int</B> <B>setterm(const</B> <B>char</B> <B>*term);</B>
+       <B>TERMINAL</B> <B>*set_curterm(TERMINAL</B> <B>*nterm);</B>
+       <B>int</B> <B>del_curterm(TERMINAL</B> <B>*oterm);</B>
+       <B>int</B>  <B>restartterm(const</B>  <B>char</B>  <B>*term,</B>   <B>int</B>   <B>fildes,</B>   <B>int</B>
+       <B>*errret);</B>
+       <B>char</B> <B>*tparm(const</B> <B>char</B> <B>*str,</B> <B>...);</B>
+       <B>int</B> <B>tputs(const</B> <B>char</B> <B>*str,</B> <B>int</B> <B>affcnt,</B> <B>int</B> <B>(*putc)(int));</B>
+       <B>int</B> <B>putp(const</B> <B>char</B> <B>*str);</B>
+       <B>int</B> <B>vidputs(chtype</B> <B>attrs,</B> <B>int</B> <B>(*putc)(char));</B>
+       <B>int</B> <B>vidattr(chtype</B> <B>attrs);</B>
+       <B>int</B> <B>mvcur(int</B> <B>oldrow,</B> <B>int</B> <B>oldcol,</B> <B>int</B> <B>newrow,</B> <B>int</B> <B>newcol);</B>
+       <B>int</B> <B>tigetflag(const</B> <B>char</B> <B>*capname);</B>
+       <B>int</B> <B>tigetnum(const</B> <B>char</B> <B>*capname);</B>
+       <B>char</B> <B>*tigetstr(const</B> <B>char</B> <B>*capname);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These low-level routines must be called by  programs  that
+       have to deal directly with the <B>terminfo</B> database to handle
+       certain terminal capabilities, such as  programming  func-
+       tion  keys.   For all other functionality, <B>curses</B> routines
+       are more suitable and their use is recommended.
+
+       Initially,  <B>setupterm</B>  should  be   called.    Note   that
+       <B>setupterm</B>  is automatically called by <B>initscr</B> and <B>newterm</B>.
+       This  defines  the  set  of  terminal-dependent  variables
+       [listed in <B><A HREF="terminfo.5.html">terminfo(5)</A></B>].  The <B>terminfo</B> variables <B>lines</B> and
+       <B>columns</B>  are  initialized  by  <B>setupterm</B>  as  follows:  If
+       <B>use_env(FALSE)</B>  has  been  called,  values  for  <B>lines</B> and
+       <B>columns</B> specified in <B>terminfo</B> are used.  Otherwise, if the
+       environment  variables <B>LINES</B> and <B>COLUMNS</B> exist, their val-
+       ues are used.  If these environment variables do not exist
+       and the program is running in a window, the current window
+       size is used.  Otherwise, if the environment variables  do
+       not  exist,  the values for <B>lines</B> and <B>columns</B> specified in
+       the <B>terminfo</B> database are used.
+
+       The header files <B>curses.h</B> and <B>term.h</B>  should  be  included
+       (in  this order) to get the definitions for these strings,
+       numbers,  and  flags.   Parameterized  strings  should  be
+       passed  through  <B>tparm</B>  to instantiate them.  All <B>terminfo</B>
+       strings [including the output of <B>tparm</B>] should be  printed
+       with  <B>tputs</B> or <B>putp</B>.  Call the <B>reset_shell_mode</B> to restore
+       the  tty  modes  before  exiting  [see   <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>].
+       Programs   which   use  cursor  addressing  should  output
+       <B>enter_ca_mode</B> upon startup and should output  <B>exit_ca_mode</B>
+       before  exiting.   Programs  desiring shell escapes should
+       call
+
+       <B>reset_shell_mode</B> and output <B>exit_ca_mode</B> before the  shell
+       is   called  and  should  output  <B>enter_ca_mode</B>  and  call
+       <B>reset_prog_mode</B> after returning from the shell.
+
+       The <B>setupterm</B> routine reads in the <B>terminfo</B> database, ini-
+       tializing the <B>terminfo</B> structures, but does not set up the
+       output virtualization structures used by <B>curses</B>.  The ter-
+       minal  type is the character string <I>term</I>; if <I>term</I> is null,
+       the environment variable <B>TERM</B> is used.  All output  is  to
+       file  descriptor  <B>fildes</B>  which is initialized for output.
+       If <I>errret</I> is not null, then <B>setupterm</B> returns  <B>OK</B>  or  <B>ERR</B>
+       and  stores  a  status  value in the integer pointed to by
+       <I>errret</I>.  A return value of <B>OK</B> combined with status of <B>1</B> in
+       <I>errret</I> is normal.  If <B>ERR</B> is returned, examine <I>errret</I>:
+
+              <B>1</B>    means that the terminal is hardcopy, cannot be
+                   used for curses applications.
+
+              <B>0</B>    means that the terminal could not be found, or
+                   that  it  is a generic type, having too little
+                   information for curses applications to run.
+
+              <B>-1</B>   means that the <B>terminfo</B> database could not  be
+                   found.
+
+       If  <I>errret</I> is null, <B>setupterm</B> prints an error message upon
+       finding an error and exits.  Thus, the simplest call is:
+
+             <B>setupterm((char</B> <B>*)0,</B> <B>1,</B> <B>(int</B> <B>*)0);</B>,
+
+       which uses all the defaults and sends the output  to  <B>std-</B>
+       <B>out</B>.
+
+       The  <B>setterm</B>  routine is being replaced by <B>setupterm</B>.  The
+       call:
+
+             <B>setupterm(</B><I>term</I><B>,</B> <B>1,</B> <B>(int</B> <B>*)0)</B>
+
+       provides the same  functionality  as  <B>setterm(</B><I>term</I><B>)</B>.   The
+       <B>setterm</B>  routine  is  included here for BSD compatibility,
+       and is not recommended for new programs.
+
+       The <B>set_curterm</B> routine  sets  the  variable  <B>cur_term</B>  to
+       <I>nterm</I>, and makes all of the <B>terminfo</B> boolean, numeric, and
+       string variables use the values from  <I>nterm</I>.   It  returns
+       the old value of <B>cur_term</B>.
+
+       The  <B>del_curterm</B>  routine  frees  the  space pointed to by
+       <I>oterm</I> and makes it available for further use.  If <I>oterm</I> is
+       the  same  as  <B>cur_term</B>, references to any of the <B>terminfo</B>
+       boolean, numeric,  and  string  variables  thereafter  may
+       refer  to invalid memory locations until another <B>setupterm</B>
+       has been called.
+
+       The  <B>restartterm</B>  routine  is  similar  to  <B>setupterm</B>  and
+       <B>initscr</B>,  except  that it is called after restoring memory
+       to a previous state (for example, when  reloading  a  game
+       saved  as a core image dump).  It assumes that the windows
+       and the input and output options are the same as when mem-
+       ory  was saved, but the terminal type and baud rate may be
+       different.  Accordingly, it saves various tty state  bits,
+       does a setupterm, and then restores the bits.
+
+       The <B>tparm</B> routine instantiates the string <I>str</I> with parame-
+       ters <I>pi</I>.  A pointer is returned to the result of <I>str</I>  with
+       the parameters applied.
+
+       The  <B>tputs</B>  routine  applies  padding  information  to the
+       string <I>str</I> and outputs it.  The <I>str</I>  must  be  a  terminfo
+       string  variable  or the return value from <B>tparm</B>, <B>tgetstr</B>,
+       or <B>tgoto</B>.  <I>affcnt</I> is the number of lines affected, or 1 if
+       not  applicable.   <I>putc</I> is a <B>putchar</B>-like routine to which
+       the characters are passed, one at a time.
+
+       The <B>putp</B> routine calls <B>tputs(</B><I>str</I><B>,</B> <B>1,</B> <B>putchar)</B>.  Note  that
+       the  output  of  <B>putp</B>  always  goes  to <B>stdout</B>, not to the
+       <I>fildes</I> specified in <B>setupterm</B>.
+
+       The <B>vidputs</B> routine displays the string on the terminal in
+       the  video  attribute mode <I>attrs</I>, which is any combination
+       of the attributes listed in  <B><A HREF="ncurses.3x.html">curses(3x)</A></B>.   The  characters
+       are passed to the <B>putchar</B>-like routine <I>putc</I>.
+
+       The  <B>vidattr</B>  routine  is like the <B>vidputs</B> routine, except
+       that it outputs through <B>putchar</B>.
+
+       The <B>mvcur</B> routine provides low-level  cursor  motion.   It
+       takes   effect   immediately  (rather  than  at  the  next
+       refresh).
+
+       The <B>tigetflag</B>, <B>tigetnum</B> and <B>tigetstr</B> routines  return  the
+       value of the capability corresponding to the <B>terminfo</B> <I>cap-</I>
+       <I>name</I> passed to them, such as <B>xenl</B>.
+
+       The <B>tigetflag</B> routine returns the value <B>-1</B> if  <I>capname</I>  is
+       not a boolean capability, or <B>0</B> if it is canceled or absent
+       from the terminal description.
+
+       The <B>tigetnum</B> routine returns the value <B>-2</B>  if  <I>capname</I>  is
+       not  a  numeric  capability,  or  <B>-1</B>  if it is canceled or
+       absent from the terminal description.
+
+       The <B>tigetstr</B> routine  returns  the  value  <B>(char</B>  <B>*)-1</B>  if
+       <I>capname</I> is not a string capability, or <B>0</B> if it is canceled
+       or absent from the terminal description.
+
+       The <I>capname</I> for each capability is given in the table col-
+       umn  entitled  <I>capname</I> code in the capabilities section of
+       <B><A HREF="terminfo.5.html">terminfo(5)</A></B>.
+
+       <B>char</B> <B>*boolnames</B>, <B>*boolcodes</B>, <B>*boolfnames</B>
+
+       <B>char</B> <B>*numnames</B>, <B>*numcodes</B>, <B>*numfnames</B>
+
+       <B>char</B> <B>*strnames</B>, <B>*strcodes</B>, <B>*strfnames</B>
+
+       These null-terminated arrays  contain  the  <I>capnames</I>,  the
+       <B>termcap</B>  codes, and the full C names, for each of the <B>ter-</B>
+       <B>minfo</B> variables.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Routines that return an integer return  <B>ERR</B>  upon  failure
+       and  <B>OK</B>  (SVr4 only specifies "an integer value other than
+       <B>ERR</B>") upon successful completion, unless  otherwise  noted
+       in the preceding routine descriptions.
+
+       Routines that return pointers always return <B>NULL</B> on error.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The <B>setupterm</B> routine should be used in place of  <B>setterm</B>.
+       It  may be useful when you want to test for terminal capa-
+       bilities without committing to the allocation  of  storage
+       involved in <B>initscr</B>.
+
+       Note that <B>vidattr</B> and <B>vidputs</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The  function  <B>setterm</B>  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, <B>set_curterm</B> has an <B>int</B> return type
+       and returns <B>OK</B> or <B>ERR</B>.  We have chosen  to  implement  the
+       XSI Curses semantics.
+
+       In System V Release 4, the third argument of <B>tputs</B> has the
+       type <B>int</B> <B>(*putc)(char)</B>.
+
+       The XSI Curses standard prototypes <B>tparm</B> with a fixed num-
+       ber of parameters, rather than a variable argument list.
+
+       XSI  notes  that after calling <B>mvcur</B>, the curses state may
+       not match the actual terminal state, and that an  applica-
+       tion  should  touch and refresh the window before resuming
+       normal curses calls.  Both ncurses and System V Release  4
+       curses  implement <B>mvcur</B> using the SCREEN data allocated in
+       either <B>initscr</B> or <B>newterm</B>.  So though it is documented  as
+       a  terminfo  function,  <B>mvcur</B>  is really a curses function
+       which is not well specified.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>, <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>,  <B>curs_term-</B>
+       <B><A HREF="cap.3x.html">cap(3x)</A></B>, <B><A HREF="putc.3S.html">putc(3S)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_touch.3x.html b/doc/html/man/curs_touch.3x.html
new file mode 100644 (file)
index 0000000..198fc85
--- /dev/null
@@ -0,0 +1,135 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>touchwin</B>, <B>touchline</B>, <B>untouchwin</B>, <B>wtouchln</B>, <B>is_linetouched</B>,
+       <B>is_wintouched</B> - <B>curses</B> refresh control routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+       <B>int</B> <B>touchwin(WINDOW</B> <B>*win);</B>
+       <B>int</B> <B>touchline(WINDOW</B> <B>*win,</B> <B>int</B> <B>start,</B> <B>int</B> <B>count);</B>
+       <B>int</B> <B>untouchwin(WINDOW</B> <B>*win);</B>
+       <B>int</B> <B>wtouchln(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>n,</B> <B>int</B> <B>changed);</B>
+       <B>bool</B> <B>is_linetouched(WINDOW</B> <B>*win,</B> <B>int</B> <B>line);</B>
+       <B>bool</B> <B>is_wintouched(WINDOW</B> <B>*win);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <B>touchwin</B> and <B>touchline</B> routines throw away  all  opti-
+       mization  information about which parts of the window have
+       been touched, by pretending that  the  entire  window  has
+       been  drawn  on.   This  is sometimes necessary when using
+       overlapping windows, since a change to one window  affects
+       the other window, but the records of which lines have been
+       changed in the other window do  not  reflect  the  change.
+       The  routine <B>touchline</B> only pretends that <I>count</I> lines have
+       been changed, beginning with line <I>start</I>.
+
+       The <B>untouchwin</B> routine marks all lines in  the  window  as
+       unchanged since the last call to <B>wrefresh</B>.
+
+       The <B>wtouchln</B> routine makes <I>n</I> lines in the window, starting
+       at line <I>y</I>, look as if they have (<I>changed</I><B>=1</B>)  or  have  not
+       (<I>changed</I><B>=0</B>)  been changed since the last call to <B>wrefresh</B>.
+
+       The <B>is_linetouched</B> and <B>is_wintouched</B> routines return  <B>TRUE</B>
+       if  the  specified line/window was modified since the last
+       call to <B>wrefresh</B>; otherwise they return <B>FALSE</B>.   In  addi-
+       tion,  <B>is_linetouched</B> returns <B>ERR</B> if <I>line</I> is not valid for
+       the given window.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All routines return the integer <B>ERR</B> upon  failure  and  an
+       integer  value  other than <B>ERR</B> upon successful completion,
+       unless otherwise noted in the preceding  routine  descrip-
+       tions.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The  XSI  Curses  standard,  Issue 4 describes these func-
+       tions.
+
+       Some historic curses implementations had,  as  an  undocu-
+       mented  feature,  the  ability  to  do  the  equivalent of
+       <B>clearok(...,</B> <B>1)</B> by saying <B>touchwin(stdscr)</B>  or  <B>clear(std-</B>
+       <B>scr)</B>.  This will not work under ncurses.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that all routines except <B>wtouchln</B> may be macros.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_trace.3x.html b/doc/html/man/curs_trace.3x.html
new file mode 100644 (file)
index 0000000..8280426
--- /dev/null
@@ -0,0 +1,132 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>_tracef</B>,      <B>_tracedump</B>,     <B>_traceattr</B>,     <B>_traceattr2</B>,
+       <B>_nc_tracebits</B>,  <B>_tracechar</B>,  <B>_tracechtype</B>,  <B>_tracechtype2</B>,
+       <B>_tracemouse</B>, <B>trace</B> - <B>curses</B> debugging routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+       <B>void</B> <B>_tracef(const</B> <B>char</B> <B>*format,</B> <B>...);</B>
+       <B>void</B> <B>_tracedump(const</B> <B>char</B> <B>*label,</B> <B>WINDOW</B> <B>*win);</B>
+       <B>char</B> <B>*_traceattr(attr_t</B> <B>attr);</B>
+       <B>char</B> <B>*_traceattr2(int</B> <B>buffer,</B> <B>chtype</B> <B>ch);</B>
+       <B>char</B> <B>*_nc_tracebits(void);</B>
+       <B>char</B> <B>*_tracechar(const</B> <B>unsigned</B> <B>char</B> <B>ch);</B>
+       <B>char</B> <B>*_tracechtype(chtype</B> <B>ch);</B>
+       <B>char</B> <B>*_tracechtype2(int</B> <B>buffer,</B> <B>chtype</B> <B>ch);</B>
+       <B>char</B> <B>*_tracemouse(const</B> <B>MEVENT</B> <B>*event);</B>
+       <B>void</B> <B>trace(const</B> <B>unsigned</B> <B>int</B> <B>param);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  <B>trace</B>  routines  are  used  for debugging the ncurses
+       libraries, as well as applications which use  the  ncurses
+       libraries.   These  functions  are normally available only
+       with the debugging library <I>libncurses</I><B>_</B><I>g.a</I>, but may be com-
+       piled into any model (shared, static, profile) by defining
+       the symbol <B>TRACE</B>.
+
+       The principal parts of this interface are the  <B>trace</B>  rou-
+       tine which selectively enables different tracing features,
+       and the <B>_tracef</B> routine which writes formatted data to the
+       <I>trace</I> file.
+
+       Calling  <B>trace</B>  with  a  nonzero  parameter opens the file
+       <B>trace</B> in the current directory for output.  The  parameter
+       is formed by OR'ing values from the list of <B>TRACE_</B><I>xxx</I> def-
+       initions in <B>&lt;curses.h&gt;</B>.  These include:
+
+       TRACE_DISABLE
+            turn off tracing.
+
+       TRACE_TIMES
+            trace user and system times of updates.
+
+       TRACE_TPUTS
+            trace tputs calls.
+
+       TRACE_UPDATE
+            trace update actions, old &amp; new screens.
+
+       TRACE_MOVE
+            trace cursor movement and scrolling.
+
+       TRACE_CHARPUT
+            trace all character outputs.
+
+       TRACE_ORDINARY
+            trace all update actions.  The  old  and  new  screen
+            contents  are  written  to  the  trace  file for each
+            refresh.
+
+       TRACE_CALLS
+            trace all curses calls.  The parameters for each call
+            are traced, as well as return values.
+
+       TRACE_VIRTPUT
+            trace virtual character puts, i.e., calls to <B>addch</B>.
+
+       TRACE_IEVENT
+            trace low-level input processing, including timeouts.
+
+       TRACE_BITS
+            trace state of TTY control bits.
+
+       TRACE_ICALLS
+            trace internal/nested calls.
+
+       TRACE_CCALLS
+            trace per-character calls.
+
+       TRACE_DATABASE
+            trace read/write of terminfo/termcap data.
+
+       TRACE_MAXIMUM
+            maximum trace level,  enables  all  of  the  separate
+            trace features.
+
+            Some  tracing features are enabled whenever the <B>trace</B>
+            parameter is nonzero.  Some  features  overlap.   The
+            specific names are used as a guideline.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Routines  which  return a value are designed to be used as
+       parameters to the <B>_tracef</B> routine.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These functions are not part of the XSI  interface.   Some
+       other  curses  implementations  are known to have similar,
+       undocumented features, but they are  not  compatible  with
+       ncurses.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>.
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_util.3x.html b/doc/html/man/curs_util.3x.html
new file mode 100644 (file)
index 0000000..5fc178c
--- /dev/null
@@ -0,0 +1,134 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>unctrl</B>,   <B>keyname</B>,   <B>filter</B>,   <B>use_env</B>,   <B>putwin</B>,  <B>getwin</B>,
+       <B>delay_output</B>, <B>flushinp</B> - miscellaneous <B>curses</B> utility rou-
+       tines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>char</B> <B>*unctrl(chtype</B> <B>c);</B>
+       <B>char</B> <B>*keyname(int</B> <B>c);</B>
+       <B>void</B> <B>filter(void);</B>
+       <B>void</B> <B>use_env(char</B> <B>bool);</B>
+       <B>int</B> <B>putwin(WINDOW</B> <B>*win,</B> <B>FILE</B> <B>*filep);</B>
+       <B>WINDOW</B> <B>*getwin(FILE</B> <B>*filep);</B>
+       <B>int</B> <B>delay_output(int</B> <B>ms);</B>
+       <B>int</B> <B>flushinp(void);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  <B>unctrl</B> macro expands to a character string which is a
+       printable representation  of  the  character  <I>c</I>.   Control
+       characters  are  displayed  in  the <B>^</B><I>X</I> notation.  Printing
+       characters are displayed as is.
+
+       The <B>keyname</B> routine returns a character string correspond-
+       ing to the key <I>c</I>.
+
+       The <B>filter</B> routine, if used, must be called before <B>initscr</B>
+       or <B>newterm</B> are called.  The effect is that,  during  those
+       calls,  <B>LINES</B>  is  set  to 1; the capabilities <B>clear</B>, <B>cup</B>,
+       <B>cud</B>, <B>cud1</B>, <B>cuu1</B>, <B>cuu</B>,  <B>vpa</B>  are  disabled;  and  the  <B>home</B>
+       string is set to the value of <B>cr</B>.
+
+       The  <B>use_env</B> routine, if used, is called before <B>initscr</B> or
+       <B>newterm</B> are called.  When called with <B>FALSE</B>  as  an  argu-
+       ment,  the  values  of  <B>lines</B> and <B>columns</B> specified in the
+       <I>terminfo</I> database will be used, even if environment  vari-
+       ables  <B>LINES</B>  and <B>COLUMNS</B> (used by default) are set, or if
+       <B>curses</B> is running in  a  window  (in  which  case  default
+       behavior  would  be  to  use  the window size if <B>LINES</B> and
+       <B>COLUMNS</B> are not set).
+
+       The <B>putwin</B> routine writes all data associated with  window
+       <I>win</I> into the file to which <I>filep</I> points.  This information
+       can be later retrieved using the <B>getwin</B> function.
+
+       The <B>getwin</B> routine reads window related data stored in the
+       file  by <B>putwin</B>.  The routine then creates and initializes
+       a new window using that data.  It returns a pointer to the
+       new window.
+
+       The  <B>delay_output</B>  routine inserts an <I>ms</I> millisecond pause
+       in output.  This routine should not  be  used  extensively
+       because  padding  characters  are  used  rather than a CPU
+       pause.
+       The <B>flushinp</B> routine throws away any  typeahead  that  has
+       been  typed  by  the user and has not yet been read by the
+       program.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Except for  <B>flushinp</B>,  routines  that  return  an  integer
+       return  <B>ERR</B>  upon  failure and <B>OK</B> (SVr4 specifies only "an
+       integer value other than <B>ERR</B>") upon successful completion.
+
+       <B>flushinp</B> always returns <B>OK</B>.
+
+       Routines that return pointers return <B>NULL</B> on error.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The  XSI  Curses  standard,  Issue 4 describes these func-
+       tions.
+
+       The SVr4 documentation describes the action of <B>filter</B> only
+       in  the  vaguest  terms.   The description here is adapted
+       from the XSI Curses standard (which erroneously  fails  to
+       describe the disabling of <B>cuu</B>).
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note  that  <B>unctrl</B>  is  a macro, which is defined in &lt;<B>unc-</B>
+       <B>trl.h</B>&gt;.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>, <B><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_window.3x.html b/doc/html/man/curs_window.3x.html
new file mode 100644 (file)
index 0000000..1fae384
--- /dev/null
@@ -0,0 +1,190 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>newwin</B>,  <B>delwin</B>,  <B>mvwin</B>, <B>subwin</B>, <B>derwin</B>, <B>mvderwin</B>, <B>dupwin</B>,
+       <B>wsyncup</B>, <B>syncok</B>, <B>wcursyncup</B>,  <B>wsyncdown</B>  -  create  <B>curses</B>
+       windows
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>WINDOW</B> <B>*newwin(int</B> <B>nlines,</B> <B>int</B> <B>ncols,</B> <B>int</B> <B>begin_y,</B>
+             <B>int</B> <B>begin_x);</B>
+       <B>int</B> <B>delwin(WINDOW</B> <B>*win);</B>
+       <B>int</B> <B>mvwin(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+       <B>WINDOW</B> <B>*subwin(WINDOW</B> <B>*orig,</B> <B>int</B> <B>nlines,</B> <B>int</B> <B>ncols,</B>
+             <B>int</B> <B>begin_y,</B> <B>int</B> <B>begin_x);</B>
+       <B>WINDOW</B> <B>*derwin(WINDOW</B> <B>*orig,</B> <B>int</B> <B>nlines,</B> <B>int</B> <B>ncols,</B>
+             <B>int</B> <B>begin_y,</B> <B>int</B> <B>begin_x);</B>
+       <B>int</B> <B>mvderwin(WINDOW</B> <B>*win,</B> <B>int</B> <B>par_y,</B> <B>int</B> <B>par_x);</B>
+       <B>WINDOW</B> <B>*dupwin(WINDOW</B> <B>*win);</B>
+       <B>void</B> <B>wsyncup(WINDOW</B> <B>*win);</B>
+       <B>int</B> <B>syncok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+       <B>void</B> <B>wcursyncup(WINDOW</B> <B>*win);</B>
+       <B>void</B> <B>wsyncdown(WINDOW</B> <B>*win);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       Calling <B>newwin</B> creates and returns a pointer to a new win-
+       dow with the given number of lines and columns.  The upper
+       left-hand  corner of the window is at line <I>begin</I>_<I>y</I>, column
+       <I>begin</I>_<I>x</I>.  If either <I>nlines</I> or <I>ncols</I> is zero, they  default
+       to  <B>LINES</B> <B>-</B> <I>begin</I>_<I>y</I> and <B>COLS</B> <B>-</B> <I>begin</I>_<I>x</I>.  A new full-screen
+       window is created by calling <B>newwin(0,0,0,0)</B>.
+
+       Calling <B>delwin</B> deletes the named window, freeing all  mem-
+       ory  associated  with  it  (it does not actually erase the
+       window's screen image).  Subwindows must be deleted before
+       the main window can be deleted.
+
+       Calling <B>mvwin</B> moves the window so that the upper left-hand
+       corner is at position (<I>x</I>, <I>y</I>).  If the move would cause the
+       window to be off the screen, it is an error and the window
+       is not moved.  Moving subwindows is allowed, but should be
+       avoided.
+
+       Calling <B>subwin</B> creates and returns a pointer to a new win-
+       dow with the given number of lines, <I>nlines</I>,  and  columns,
+       <I>ncols</I>.   The  window  is at position (<I>begin</I>_<I>y</I>, <I>begin</I>_<I>x</I>) on
+       the screen.  (This position is relative to the screen, and
+       not to the window <I>orig</I>.)  The window is made in the middle
+       of the window <I>orig</I>, so that changes  made  to  one  window
+       will  affect  both  windows.   The subwindow shares memory
+       with the window <I>orig</I>.  When using this routine, it is nec-
+       essary  to call <B>touchwin</B> or <B>touchline</B> on <I>orig</I> before call-
+       ing <B>wrefresh</B> on the subwindow.
+
+       Calling <B>derwin</B> is the same as calling <B>subwin,</B> except  that
+       <I>begin</I>_<I>y</I> and <I>begin</I>_<I>x</I> are relative to the origin of the win-
+       dow <I>orig</I> rather than the screen.  There is  no  difference
+       between the subwindows and the derived windows.
+
+       Calling  <B>mvderwin</B>  moves  a  derived window (or subwindow)
+       inside its parent window.  The screen-relative  parameters
+       of  the  window  are not changed.  This routine is used to
+       display different parts of the parent window at  the  same
+       physical position on the screen.
+
+       Calling  <B>dupwin</B>  creates  an exact duplicate of the window
+       <I>win</I>.
+
+       Calling <B>wsyncup</B> touches all locations in ancestors of  <I>win</I>
+       that  are changed in <I>win</I>.  If <B>syncok</B> is called with second
+       argument <B>TRUE</B> then <B>wsyncup</B> is called  automatically  when-
+       ever there is a change in the window.
+
+       The  <B>wsyncdown</B>  routine  touches each location in <I>win</I> that
+       has been touched in any of  its  ancestor  windows.   This
+       routine  is  called by <B>wrefresh</B>, so it should almost never
+       be necessary to call it manually.
+
+       The routine <B>wcursyncup</B> updates the current cursor position
+       of  all the ancestors of the window to reflect the current
+       cursor position of the window.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Routines that return an integer  return  the  integer  <B>ERR</B>
+       upon failure and <B>OK</B> (SVr4 only specifies "an integer value
+       other than <B>ERR</B>") upon successful completion.
+
+       <B>delwin</B> returns the integer <B>ERR</B> upon failure  and  <B>OK</B>  upon
+       successful completion.
+
+       Routines that return pointers return <B>NULL</B> on error.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       If  many small changes are made to the window, the <B>wsyncup</B>
+       option could degrade performance.
+
+       Note that <B>syncok</B> may be a macro.
+
+
+</PRE>
+<H2>BUGS</H2><PRE>
+       The subwindow functions (<I>subwin</I>, <I>derwin</I>,  <I>mvderwin</I>,  <B>wsyn-</B>
+       <B>cup</B>,  <B>wsyncdown</B>,  <B>wcursyncup</B>,  <B>syncok</B>)  are  flaky, incom-
+       pletely implemented, and not well tested.
+
+       The System V curses documentation is  very  unclear  about
+       what <B>wsyncup</B> and <B>wsyncdown</B> actually do.  It seems to imply
+       that they are only supposed to touch exactly  those  lines
+       that are affected by ancestor changes.  The language here,
+       and the behavior of the  <B>curses</B>  implementation,  is  pat-
+       terned  on the XPG4 curses standard.  The weaker XPG4 spec
+       may result in slower updates.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The XSI Curses standard, Issue  4  describes  these  func-
+       tions.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>, <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
similarity index 72%
rename from Ada95/html/man/define_key.3x.html
rename to doc/html/man/define_key.3x.html
index 2e18202b0b6fadd4efbd07485871fc949a85bfe4..7e914c7e0388dae045ffdae53624c0acc5c13279 100644 (file)
@@ -1,14 +1,18 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>define_key</STRONG> - define a keycode
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>define_key</B> - define a keycode
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
 
-       <STRONG>int</STRONG> <STRONG>define_key(char</STRONG> <STRONG>*definition,</STRONG> <STRONG>int</STRONG> <STRONG>keycode);</STRONG>
+       <B>int</B> <B>define_key(char</B> <B>*definition,</B> <B>int</B> <B>keycode);</B>
 
 
 </PRE>
@@ -41,7 +45,7 @@
 
 </PRE>
 <H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="keyok.3x.html">keyok(3X)</A></STRONG>.
+       <B><A HREF="keyok.3x.html">keyok(3x)</A></B>.
 
 
 </PRE>
 
 
 
+
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
diff --git a/doc/html/man/dft_fgbg.3x.html b/doc/html/man/dft_fgbg.3x.html
new file mode 100644 (file)
index 0000000..8d5bf7b
--- /dev/null
@@ -0,0 +1,136 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>dft_fgbg</B>:  <B>use_default_colors</B>, <B>assume_default_colors</B> - use
+       terminal's default colors
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>use_default_colors(void);</B>
+       <B>int</B> <B>assume_default_colors(int</B> <B>fg,</B> <B>int</B> <B>bg);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <I>use</I><B>_</B><I>default</I><B>_</B><I>colors()</I> and <I>assume</I><B>_</B><I>default</I><B>_</B><I>colors()</I> func-
+       tions are extensions to the curses library.  They are used
+       with terminals that support ISO 6429 color, or equivalent.
+       These terminals allow the application to reset color to an
+       unspecified default value (e.g., with SGR 39 or SGR 49).
+
+       Applications that paint  a  colored  background  over  the
+       whole  screen  do not take advantage of SGR 39 and SGR 49.
+       Some applications are designed to work  with  the  default
+       background,  using  colors  only  for  text.  For example,
+       there are several implementations of the <B>ls</B> program  which
+       use  colors to denote different file types or permissions.
+       These "color ls" programs do not  necessarily  modify  the
+       background  color, typically using only the <I>setaf</I> terminfo
+       capability  to  set  the  foreground  color.   Full-screen
+       applications  that  use default colors can achieve similar
+       visual effects.
+
+       The first function, <I>use</I><B>_</B><I>default</I><B>_</B><I>colors()</I> tells the  curses
+       library  to  assign terminal default foreground/background
+       colors to color number  -1.  So  init_pair(x,COLOR_RED,-1)
+       will  initialize  pair  x as red on default background and
+       init_pair(x,-1,COLOR_BLUE)  will  initialize  pair  x   as
+       default foreground on blue.
+
+       The  other,  <I>assume</I><B>_</B><I>default</I><B>_</B><I>colors()</I> is a refinement which
+       tells which colors to paint for color pair 0.  This  func-
+       tion  recognizes  a special color number -1, which denotes
+       the default terminal color.
+
+       The following are equivalent:
+              <I>use</I><B>_</B><I>default</I><B>_</B><I>colors();</I>
+              <I>assume</I><B>_</B><I>default</I><B>_</B><I>colors(-1,-1);</I>
+
+       These are ncurses extensions.  For other curses  implemen-
+       tations,  color  number -1 does not mean anything, just as
+       for ncurses before a successful call  of  <I>use</I><B>_</B><I>default</I><B>_</B><I>col-</I>
+       <I>ors()</I> or <I>assume</I><B>_</B><I>default</I><B>_</B><I>colors()</I>.
+
+       Other  curses  implementations do not allow an application
+       to modify color pair 0.  They assume that  the  background
+       is COLOR_BLACK, but do not ensure that the color pair 0 is
+       painted to match the assumption.  If your application does
+       not use either <I>use</I><B>_</B><I>default</I><B>_</B><I>colors()</I> or <I>assume</I><B>_</B><I>default</I><B>_</B><I>col-</I>
+       <I>ors()</I> ncurses will paint a white  foreground  (text)  with
+       black background for color pair 0.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       These functions return the integer <B>ERR</B> upon failure and <B>OK</B>
+       on success.  They will fail if either  the  terminal  does
+       not  support  the <I>orig</I><B>_</B><I>pair</I> or <I>orig</I><B>_</B><I>colors</I> capability.  If
+       the <I>initialize</I><B>_</B><I>pair</I> capability is found,  this  causes  an
+       error as well.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Associated with this extension, the <B><A HREF="init_pair.3x.html">init_pair(3x)</A></B> function
+       accepts negative arguments to specify  default  foreground
+       or background colors.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       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 con-
+       ditioned using NCURSES_VERSION.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>, <B><A HREF="ded.1.html">ded(1)</A></B>.
+
+
+</PRE>
+<H2>AUTHOR</H2><PRE>
+       Thomas Dickey (from an analysis of  the  requirements  for
+       color xterm for XFree86 3.1.2C, February 1996).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/form.3x.html b/doc/html/man/form.3x.html
new file mode 100644 (file)
index 0000000..a15a712
--- /dev/null
@@ -0,0 +1,245 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form</B> - curses extension for programming forms
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  <B>form</B> library provides terminal-independent facilities
+       for composing form screens  on  character-cell  terminals.
+       The  library  includes:  field  routines, which create and
+       modify form fields; and form routines, which group  fields
+       into forms, display forms on the screen, and handle inter-
+       action with the user.
+
+       The <B>form</B> library uses the <B>curses</B> libraries, and  a  curses
+       initialization  routine  such  as  <B>initscr</B>  must be called
+       before using any of these  functions.   To  use  the  <B>form</B>
+       library, link with the options <B>-lform</B> <B>-lcurses</B>.
+
+
+   <B>Current</B> <B>Default</B> <B>Values</B> <B>for</B> <B>Field</B> <B>Attributes</B>
+       The  <B>form</B>  library  maintains  a  default  value for field
+       attributes.  You can get or set this  default  by  calling
+       the  appropriate  <B>set_</B>  or  retrieval  routine with a <B>NULL</B>
+       field pointer.  Changing this default with a <B>set_</B> function
+       affects  future  field  creations, but does not change the
+       rendering of fields already created.
+
+
+   <B>Routine</B> <B>Name</B> <B>Index</B>
+       The following table lists each <B>form</B> routine and  the  name
+       of the manual page on which it is described.
+
+       <B>curses</B> Routine Name    Manual Page Name
+       -------------------------------------------------
+       current_field          <B><A HREF="form_page.3x.html">form_page(3x)</A></B>
+       data_ahead             <B><A HREF="form_data.3x.html">form_data(3x)</A></B>
+       data_behind            <B><A HREF="form_data.3x.html">form_data(3x)</A></B>
+       dup_field              <B><A HREF="form_field_new.3x.html">form_field_new(3x)</A></B>
+       dynamic_fieldinfo      <B><A HREF="form_field_info.3x.html">form_field_info(3x)</A></B>
+       field_arg              <B><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></B>
+       field_back             <B><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></B>
+       field_buffer           <B><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></B>
+       field_count            <B><A HREF="form_field.3x.html">form_field(3x)</A></B>
+       field_fore             <B><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></B>
+       field_index            <B><A HREF="form_page.3x.html">form_page(3x)</A></B>
+       field_info             <B><A HREF="form_field_info.3x.html">form_field_info(3x)</A></B>
+       field_init             <B><A HREF="form_hook.3x.html">form_hook(3x)</A></B>
+       field_just             <B><A HREF="form_field_just.3x.html">form_field_just(3x)</A></B>
+       field_opts             <B><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></B>
+       field_opts_off         <B><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></B>
+       field_opts_on          <B><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></B>
+       field_pad              <B><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></B>
+
+       field_status           <B><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></B>
+       field_term             <B><A HREF="form_hook.3x.html">form_hook(3x)</A></B>
+       field_type             <B><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></B>
+       field_userptr          <B><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></B>
+       form_driver            <B><A HREF="form_driver.3x.html">form_driver(3x)</A></B>
+       form_fields            <B><A HREF="form_field.3x.html">form_field(3x)</A></B>
+       form_init              <B><A HREF="form_hook.3x.html">form_hook(3x)</A></B>
+       form_opts              <B><A HREF="form_opts.3x.html">form_opts(3x)</A></B>
+       form_opts_off          <B><A HREF="form_opts.3x.html">form_opts(3x)</A></B>
+       form_opts_on           <B><A HREF="form_opts.3x.html">form_opts(3x)</A></B>
+       form_page              <B><A HREF="form_page.3x.html">form_page(3x)</A></B>
+       form_request_by_name   <B><A HREF="form_requestname.3x.html">form_requestname(3x)</A></B>
+       form_request_name      <B><A HREF="form_requestname.3x.html">form_requestname(3x)</A></B>
+       form_sub               <B><A HREF="form_win.3x.html">form_win(3x)</A></B>
+       form_term              <B><A HREF="form_hook.3x.html">form_hook(3x)</A></B>
+       form_userptr           <B><A HREF="form_userptr.3x.html">form_userptr(3x)</A></B>
+       form_win               <B><A HREF="form_win.3x.html">form_win(3x)</A></B>
+       free_field             <B><A HREF="form_field_new.3x.html">form_field_new(3x)</A></B>
+       free_form              <B><A HREF="form_new.3x.html">form_new(3x)</A></B>
+       link_field             <B><A HREF="form_field_new.3x.html">form_field_new(3x)</A></B>
+       link_fieldtype         <B><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></B>
+       move_field             <B><A HREF="form_field.3x.html">form_field(3x)</A></B>
+       new_field              <B><A HREF="form_field_new.3x.html">form_field_new(3x)</A></B>
+       new_form               <B><A HREF="form_new.3x.html">form_new(3x)</A></B>
+       new_page               <B><A HREF="form_new_page.3x.html">form_new_page(3x)</A></B>
+       pos_form_cursor        <B><A HREF="form_cursor.3x.html">form_cursor(3x)</A></B>
+       post_form              <B><A HREF="form_post.3x.html">form_post(3x)</A></B>
+       scale_form             <B><A HREF="form_win.3x.html">form_win(3x)</A></B>
+       set_current_field      <B><A HREF="form_page.3x.html">form_page(3x)</A></B>
+       set_field_back         <B><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></B>
+       set_field_buffer       <B><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></B>
+       set_field_fore         <B><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></B>
+       set_field_init         <B><A HREF="form_hook.3x.html">form_hook(3x)</A></B>
+       set_field_just         <B><A HREF="form_field_just.3x.html">form_field_just(3x)</A></B>
+       set_field_opts         <B><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></B>
+       set_field_pad          <B><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></B>
+       set_field_status       <B><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></B>
+       set_field_term         <B><A HREF="form_hook.3x.html">form_hook(3x)</A></B>
+       set_field_type         <B><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></B>
+       set_field_userptr      <B><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></B>
+       set_fieldtype_arg      <B><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></B>
+       set_fieldtype_choice   <B><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></B>
+       set_form_fields        <B><A HREF="form_field.3x.html">form_field(3x)</A></B>
+       set_form_init          <B><A HREF="form_hook.3x.html">form_hook(3x)</A></B>
+       set_form_opts          <B><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></B>
+       set_form_page          <B><A HREF="form_page.3x.html">form_page(3x)</A></B>
+       set_form_sub           <B><A HREF="form_win.3x.html">form_win(3x)</A></B>
+       set_form_term          <B><A HREF="form_hook.3x.html">form_hook(3x)</A></B>
+       set_form_userptr       <B><A HREF="form_userptr.3x.html">form_userptr(3x)</A></B>
+       set_form_win           <B><A HREF="form_win.3x.html">form_win(3x)</A></B>
+       set_max_field          <B><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></B>
+       set_new_page           <B><A HREF="form_new_page.3x.html">form_new_page(3x)</A></B>
+       unpost_form            <B><A HREF="form_post.3x.html">form_post(3x)</A></B>
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Routines  that return pointers return <B>NULL</B> on error.  Rou-
+       tines that return an integer return one of  the  following
+       error codes:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_CONNECTED</B>
+            The field is already connected to a form.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       <B>E_POSTED</B>
+            The form is already posted.
+
+       <B>E_BAD_STATE</B>
+            Routine was called from an initialization or termina-
+            tion function.
+
+       <B>E_NO_ROOM</B>
+            Form is too large for its window.
+
+       <B>E_NOT_POSTED</B>
+            The form has not been posted.
+
+       <B>E_UNKNOWN_COMMAND</B>
+            The form driver code saw an unknown request code.
+
+       <B>E_INVALID_FIELD</B>
+            Contents of a field are not valid.
+
+       <B>E_NOT_CONNECTED</B>
+            No fields are connected to the form.
+
+       <B>E_REQUEST_DENIED</B>
+            The form driver could not process the request.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>  and  3x  pages  whose  names begin "form_" for
+       detailed descriptions of the entry points.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       files <B>&lt;curses.h&gt;</B> and <B>&lt;eti.h&gt;</B>.
+
+       In  your  library  list,  libform.a should be before libn-
+       curses.a; that is, you want to say `-lform -lncurses', not
+       the  other  way  around (which would give you a link error
+       using GNU <B><A HREF="ld.1.html">ld(1)</A></B> and many other linkers).
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen  Pfeifer.  Manual pages and adaptation for ncurses
+       by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
similarity index 50%
rename from Ada95/html/man/form_cursor.3x.html
rename to doc/html/man/form_cursor.3x.html
index fbfbac863dbc39d07e108e08be7439506d039ce0..b99b8241c9efcf7f1f9c2de684345f9c98e6a145 100644 (file)
@@ -1,20 +1,24 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>form_cursor</STRONG> - position a form window cursor
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_cursor</B> - position a form window cursor
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
        int pos_form_cursor(FORM *form);
 
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       The  function  <STRONG>pos_form_cursor</STRONG>  restores the cursor to the
+       The  function  <B>pos_form_cursor</B>  restores the cursor to the
        position required for the forms driver  to  continue  pro-
-       cessing  requests.   This  is useful after <STRONG>curses</STRONG> routines
+       cessing  requests.   This  is useful after <B>curses</B> routines
        have been called to do screen-painting in  response  to  a
        form operation.
 
 <H2>RETURN VALUE</H2><PRE>
        This routine returns one of the following:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
+       <B>E_OK</B> The routine succeeded.
 
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
 
-       <STRONG>E_BAD_ARGUMENT</STRONG>
+       <B>E_BAD_ARGUMENT</B>
             Routine  detected  an incorrect or out-of-range argu-
             ment.
 
-       <STRONG>E_NOT_POSTED</STRONG>
+       <B>E_NOT_POSTED</B>
             The form has not been posted.
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><form.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 
 
 
+
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
similarity index 52%
rename from Ada95/html/man/form_data.3x.html
rename to doc/html/man/form_data.3x.html
index d07992cc5fd38cd1633822b20d4bfa2ddc15fe0d..502495edfde303fc98e14a4e5f5f7d86e5287455 100644 (file)
@@ -1,36 +1,40 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>form_data</STRONG> - test for off-screen data in given forms
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_data</B> - test for off-screen data in given forms
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
        bool data_ahead(const FORM *form);
        bool data_behind(const FORM *form);
 
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       The  function <STRONG>data_ahead</STRONG> tests whether there is off-screen
+       The  function <B>data_ahead</B> tests whether there is off-screen
        data ahead in the given form.   It  returns  TRUE  (1)  or
        FALSE (0).
 
-       The function <STRONG>data_behind</STRONG> tests whether there is off-screen
+       The function <B>data_behind</B> tests whether there is off-screen
        data behind in the given form.  It  returns  TRUE  (1)  or
        FALSE (0).
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><form.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 
 
 
+
 
 
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
similarity index 78%
rename from Ada95/html/man/form_driver.3x.html
rename to doc/html/man/form_driver.3x.html
index c3c2a623a7432c426164e7bcff83efa2037a2912..36a27aa81bc531a45453985b2f6eeaf47cc7ce20 100644 (file)
@@ -1,19 +1,23 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>form_driver</STRONG> - command-processing loop of the form system
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_driver</B> - command-processing loop of the form system
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
        int form_driver(FORM *form, int c);
 
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
        Once a form has been posted (displayed), you should funnel
-       input events to it through <STRONG>form_driver</STRONG>.  This routine  has
+       input events to it through <B>form_driver</B>.  This routine  has
        two  major input cases; either the input is a form naviga-
        tion request or it's a  printable  ASCII  character.   The
        form driver requests are as follows:
@@ -57,6 +61,8 @@
 
        REQ_LEFT_FIELD
             Move left to a field.
+
+       REQ_RIGHT_FIELD
             Move right to a field.
 
        REQ_UP_FIELD
             Move down in the field.
 
 
+
+       REQ_NEW_LINE
             Insert or overlay a new line.
 
        REQ_INS_CHAR
             Scroll the field forward half a page.
 
        REQ_SCR_BHPAGE
+            Scroll the field backward half a page.
+
+       REQ_SCR_FCHAR
             Scroll the field forward a character.
 
        REQ_SCR_BCHAR
        that request is executed.
 
        If the second argument is neither printable ASCII nor  one
-       of  the above pre-defined form requests, the drive assumes
+       of the above pre-defined form requests, the driver 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
+       <B>E_UNKNOWN_COMMAND</B>.  Application-defined commands should be
+       defined relative to  <B>MAX_COMMAND</B>,  the  maximum  value  of
        these pre-defined requests.
 
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       <STRONG>form_driver</STRONG> return one of the following error codes:
+       <B>form_driver</B> return one of the following error codes:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
+       <B>E_OK</B> The routine succeeded.
 
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
 
-       <STRONG>E_BAD_ARGUMENT</STRONG>
+       <B>E_BAD_ARGUMENT</B>
             Routine  detected  an incorrect or out-of-range argu-
             ment.
 
-       <STRONG>E_BAD_STATE</STRONG>
+       <B>E_BAD_STATE</B>
+            Routine  was  called  from   an   initialization   or
+            termination function.
 
-       <STRONG>E_NOT_POSTED</STRONG>
+       <B>E_NOT_POSTED</B>
             The form has not been posted.
 
-       <STRONG>E_UNKNOWN_COMMAND</STRONG>
+       <B>E_UNKNOWN_COMMAND</B>
             The form driver code saw an unknown request code.
 
-       <STRONG>E_INVALID_FIELD</STRONG>
+       <B>E_INVALID_FIELD</B>
             Contents of field is invalid.
 
-       <STRONG>E_REQUEST_DENIED</STRONG>
+       <B>E_REQUEST_DENIED</B>
             The form driver could not process the request.
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><form.h></STRONG> automatically includes the header
-       files <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       files <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 
 
 
+
 
 
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_field.3x.html b/doc/html/man/form_field.3x.html
new file mode 100644 (file)
index 0000000..2f14eaf
--- /dev/null
@@ -0,0 +1,136 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_field</B> - make and break connections between fields and
+       forms
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
+       int set_form_fields(FORM *form, FIELD **fields);
+       FIELD **form_fields(const FORM *form);
+       int field_count(const FORM *form);
+       int move_field(FIELD *field, int frow, int fcol);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The function <B>set_form_fields</B>  changes  the  field  pointer
+       array  of the given <I>form</I>.  The array must be terminated by
+       a <B>NULL</B>.
+
+       The function <B>form_fields</B> returns the field  array  of  the
+       given form.
+
+       The  function  <B>field_count</B>  returns the count of fields in
+       <I>form</I>.
+
+       The function <B>move_field</B> move the given field  (which  must
+       be disconnected) to a specified location on the screen.
+
+
+</PRE>
+<H2>RETURN VALUES</H2><PRE>
+       The function <B>form_fields</B> returns <B>NULL</B> on error.
+
+       The  function  <B>field_count</B> returns <B>ERR</B> (the general <B>curses</B>
+       error return value) on error.
+
+       The functions <B>set_form_fields</B> and <B>move_field</B> return one of
+       the following codes on error:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       <B>E_POSTED</B>
+            The form is already posted.
+
+       <B>E_CONNECTED</B>
+            The field is already connected to a form.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  routines  emulate the System V forms library.  They
+       were not supported on Version 7 or BSD versions.
+
+       The  SVr4  forms  library  documentation   specifies   the
+       <B>field_count</B> error value as -1 (which is the value of <B>ERR</B>).
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/form_field_attributes.3x.html b/doc/html/man/form_field_attributes.3x.html
new file mode 100644 (file)
index 0000000..9e11aaf
--- /dev/null
@@ -0,0 +1,136 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_field_attributes</B>  -  color  and attribute control for
+       form fields
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
+       int set_field_fore(FIELD *field, chtype attr);
+       chtype field_fore(const FIELD *field);
+       int set_field_back(FIELD *field, chtype attr);
+       chtype field_back(const FIELD *field);
+       int set_field_pad(FIELD *field, int pad);
+       chtype field_pad(const FIELD *field);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The function <B>set_field_fore</B> sets the foreground  attribute
+       of  <I>field</I>. This is the highlight used to display the field
+       contents.  The function <B>field_fore</B> returns the  foreground
+       attribute.  The default is <B>A_STANDOUT</B>.
+
+       The  function <B>set_field_back</B> sets the background attribute
+       of <I>form</I>. This is the highlight used to display the  extent
+       fields  in  the form.  The function <B>field_back</B> returns the
+       background attribute.  The default is <B>A_NORMAL</B>.
+
+       The function <B>set_field_pad</B> sets the character used to fill
+       the  field.   The  function  <B>field_pad</B>  returns  the given
+       form's pad character.  The default is a blank.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       These routines return one of the following:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>  and  3x  pages  whose  names begin "form_" for
+       detailed descriptions of the entry points.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  routines  emulate the System V forms library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/form_field_buffer.3x.html b/doc/html/man/form_field_buffer.3x.html
new file mode 100644 (file)
index 0000000..a4f3dcd
--- /dev/null
@@ -0,0 +1,137 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_field_buffer</B> - field buffer control
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
+       int  set_field_buffer(FIELD  *field,  int  buf, const char
+       *value);
+       char *field_buffer(const FIELD *field, int buffer);
+       int set_field_status(FIELD *field, bool status);
+       bool field_status(const FIELD *field);
+       int set_max_field(FIELD *field, int max);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The function <B>set_field_buffer</B> 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 <B>nbuf</B> argument
+       of (see <B><A HREF="form_field_new.3x.html">form_field_new(3x)</A></B>) but are not manipulated by the
+       forms  library.   The  function  <B>field_buffer</B>  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 trail-
+       ing 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  <B>set_field_status</B> sets the associated status
+       flag of <I>field</I>; <B>field_status</B> gets the current  value.   The
+       status  flag  is set to a nonzero value whenever the field
+       changes.
+
+       The function <B>set_max_field</B> sets the  maximum  size  for  a
+       dynamic  field.   An  argument  of 0 turns off any maximum
+       size threshold for that field.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       The <B>field_buffer</B> function returns NULL on error.
+
+       The <B>field_status</B> function returns <B>TRUE</B> or <B>FALSE</B>.
+
+       The remaining routines return one of the following:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>  and  3x  pages  whose  names begin "form_" for
+       detailed descriptions of the entry points.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  routines  emulate the System V forms library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
similarity index 56%
rename from Ada95/html/man/form_field_info.3x.html
rename to doc/html/man/form_field_info.3x.html
index a13d3adae65da8848aa8549d42118ad8269c7a10..40ef3a2d801a1814e24728cc554c98c4d1c04841 100644 (file)
@@ -1,12 +1,16 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>form_field_info</STRONG> - retrieve field characteristics
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_field_info</B> - retrieve field characteristics
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
        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
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       The  function  <STRONG>field_info</STRONG>  returns  the  sizes  and  other
+       The  function  <B>field_info</B>  returns  the  sizes  and  other
        attributes passed in to the field at  its  creation  time.
        The  attributes are: height, width, row of upper-left cor-
        ner, column of upper-left corner, number off-screen  rows,
        and number of working buffers.
 
-       The function <STRONG>dynamic_field_info</STRONG> returns the actual size of
+       The function <B>dynamic_field_info</B> returns the actual size of
        the field, and its maximum possible size.   If  the  field
        has  no  size  limit,  the location addressed by the third
        argument will be set to 0.  (A field can be  made  dynamic
-       by turning off the <STRONG>O_STATIC</STRONG>).
+       by turning off the <B>O_STATIC</B>).
 
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
        These routines return one of the following:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
+       <B>E_OK</B> The routine succeeded.
 
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
 
-       <STRONG>E_BAD_ARGUMENT</STRONG>
+       <B>E_BAD_ARGUMENT</B>
             Routine  detected  an incorrect or out-of-range argu-
             ment.
 
 
 </PRE>
 <H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> and 3X pages  whose  names  begin  "form_"  for
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B> and 3x pages  whose  names  begin  "form_"  for
        detailed descriptions of the entry points.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><form.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
        These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
+       A  null  (zero  pointer) is accepted for any of the return
+       values, to ignore that  value.   Not  all  implementations
+       allow this, e.g., Solaris 2.7 does not.
+
 
 </PRE>
 <H2>AUTHORS</H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
-
-
-
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_field_just.3x.html b/doc/html/man/form_field_just.3x.html
new file mode 100644 (file)
index 0000000..1643c44
--- /dev/null
@@ -0,0 +1,82 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_field_just</B> - retrieve field characteristics
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
+       int set_field_just(FIELD *field, int justification);
+       int field_just(const FIELD *field);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The   function   <B>set_field_just</B>   sets  the  justification
+       attribute of a field; <B>field_just</B> returns a field's  justi-
+       fication attribute.  The attribute may be one of NO_JUSTI-
+       FICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, or  JUSTIFY_CENTER.
+
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       The  function <B>field_just</B> returns one of: NO_JUSTIFICATION,
+       JUSTIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER.
+
+       The function <B>set_field_just</B> return one of the following:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>  and  3x  pages  whose  names begin "form_" for
+       detailed descriptions of the entry points.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  routines  emulate the System V forms library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
similarity index 56%
rename from Ada95/html/man/form_field_new.3x.html
rename to doc/html/man/form_field_new.3x.html
index f581e77c9a2cd2f0b020053c20f004a25e9f1b9b..f6dd76a161ed79bb076fe349a58bc370f76879a7 100644 (file)
@@ -1,12 +1,16 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>form_field_new</STRONG> - create and destroy form fields
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_field_new</B> - create and destroy form fields
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
        FIELD *new_field(int height, int width,
                         int toprow, int leftcol,
                         int offscreen, int nbuffers);
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       The  function <STRONG>new_field</STRONG> allocates a new field and initial-
+       The  function <B>new_field</B> allocates a new field and initial-
        izes it from the parameters given: height, width,  row  of
        upper-left  corner,  column  of  upper-left corner, number
        off-screen rows, and number of additional working buffers.
 
-       The  function  <STRONG>dup_field</STRONG> duplicates a field at a new loca-
+       The  function  <B>dup_field</B> duplicates a field at a new loca-
        tion.  Most attributes (including current contents,  size,
        validation  type, buffer count, growth threshold, justifi-
        cation, foreground, background,  pad  character,  options,
        and  user pointer) are copied.  Field status and the field
        page bit are not copied.
 
-       The function <STRONG>link_field</STRONG> acts like <STRONG>dup_field</STRONG>, but  the  new
+       The function <B>link_field</B> acts like <B>dup_field</B>, but  the  new
        field  shares  buffers with its parent.  Attribute data is
        separate.
 
-       The function <STRONG>free_field</STRONG>  de-allocates  storage  associated
+       The function <B>free_field</B>  de-allocates  storage  associated
        with a field.
 
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       The function, <STRONG>new_field</STRONG>, <STRONG>dup_field</STRONG>, <STRONG>link_field</STRONG> return <STRONG>NULL</STRONG>
+       The function, <B>new_field</B>, <B>dup_field</B>, <B>link_field</B> return <B>NULL</B>
        on error.
 
-       The function <STRONG>free_field</STRONG> returns one of the following:
+       The function <B>free_field</B> returns one of the following:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
+       <B>E_OK</B> The routine succeeded.
 
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
 
-       <STRONG>E_BAD_ARGUMENT</STRONG>
+       <B>E_BAD_ARGUMENT</B>
             Routine detected an incorrect or  out-of-range  argu-
             ment.
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><form.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
        These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
        It  may be unwise to count on the set of attributes copied
-       by  <STRONG><A HREF="dup_field.3x.html">dup_field(3X)</A></STRONG>  being  portable;  the  System  V  forms
+       by  <B><A HREF="dup_field.3x.html">dup_field(3x)</A></B>  being  portable;  the  System  V  forms
        library  documents  are  not  very  explicit  on what gets
        copied and was not.
 
 
 
 
+
 
 
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
similarity index 65%
rename from Ada95/html/man/form_field_opts.3x.html
rename to doc/html/man/form_field_opts.3x.html
index 5eabb112ad6a8ff0ab40848530e9e520840989f1..576dcad8a2701297ac6e6f2d297e0f3f8e7bb325 100644 (file)
@@ -1,12 +1,16 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>form_field_opts</STRONG> - set and get field options
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_field_opts</B> - set and get field options
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
        int set_field_opts(FIELD *field, OPTIONS opts);
        int field_opts_on(FIELD *field, OPTIONS opts);
        int field_opts_off(FIELD *field, OPTIONS opts);
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       The  function  <STRONG>set_field_opts</STRONG>  sets  all the given field's
+       The  function  <B>set_field_opts</B>  sets  all the given field's
        option bits (field  option  bits  may  be  logically-OR'ed
        together).
 
-       The function <STRONG>field_opts_on</STRONG> turns on the given option bits,
+       The function <B>field_opts_on</B> turns on the given option bits,
        and leaves others alone.
 
-       The function <STRONG>field_opts_off</STRONG> turns  off  the  given  option
+       The function <B>field_opts_off</B> turns  off  the  given  option
        bits, and leaves others alone.
 
-       The function <STRONG>field_opts</STRONG> returns the field's current option
+       The function <B>field_opts</B> returns the field's current option
        bits.
 
        The following options are defined (all are on by default):
@@ -57,6 +61,8 @@
        O_AUTOSKIP
             Skip to the next field when this one fills
 
+
+       O_NULLOK
             Allow a blank field.
 
        O_STATIC
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       Except for <STRONG>field_opts</STRONG>, each routine  returns  one  of  the
+       Except for <B>field_opts</B>, each routine  returns  one  of  the
        following:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
+       <B>E_OK</B> The routine succeeded.
 
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
 
-       <STRONG>E_CURRENT</STRONG>
+       <B>E_CURRENT</B>
             The field is the current field.
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
 
 
-       <STRONG>NOTES</STRONG>  The header file <STRONG><form.h></STRONG> automatically includes the
-              header file <STRONG><curses.h></STRONG>.
+       <B>NOTES</B>  The header file <B>&lt;form.h&gt;</B> automatically includes the
+              header file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 
 
 
+
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
similarity index 53%
rename from Ada95/html/man/form_field_userptr.3x.html
rename to doc/html/man/form_field_userptr.3x.html
index 5c626dd73799585d598512488bac3d634d0d8f8f..46977c9ffcc535a0f8621ec942796fb810183e5e 100644 (file)
@@ -1,13 +1,17 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>form_field_userptr</STRONG>  -  associate  application  data with a
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_field_userptr</B>  -  associate  application  data with a
        form field
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
        int set_field_userptr(FIELD *field, void*userptr);
        void *field_userptr(const FIELD *field);
 
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       The  function  <STRONG>field_userptr</STRONG>  returns  <STRONG>NULL</STRONG>  on error. The
-       function <STRONG>set_field_userptr</STRONG> returns one of the following:
+       The  function  <B>field_userptr</B>  returns  <B>NULL</B>  on error. The
+       function <B>set_field_userptr</B> returns one of the following:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
+       <B>E_OK</B> The routine succeeded.
 
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><form.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 
 
 
+
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
similarity index 54%
rename from Ada95/html/man/form_field_validation.3x.html
rename to doc/html/man/form_field_validation.3x.html
index 34f39b45d9b95854f686f0e53553c733788eda9e..34ae0dc78902eb62728b9c41bf2ae725c8a56b53 100644 (file)
@@ -1,12 +1,16 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>form_field_validation</STRONG> - data type validation for fields
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_field_validation</B> - data type validation for fields
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
        int set_field_type(FIELD *field, FIELDTYPE *type, ...);
        FIELDTYPE *field_type(const FIELD *field);
        void *field_arg(const FIELD *field);
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       The  function  <STRONG>set_field_type</STRONG>  declares  a data type for a
+       The  function  <B>set_field_type</B>  declares  a data type for a
        given form field.  This is the type checked by  validation
        functions.  The types are as follows:
 
        TYPE_ALNUM
-            Alphanumeric  data.  Requires a third <STRONG>int</STRONG> argument, a
+            Alphanumeric  data.  Requires a third <B>int</B> argument, a
             minimum field width.
 
        TYPE_ALPHA
-            Character data.  Requires a  third  <STRONG>int</STRONG>  argument,  a
+            Character data.  Requires a  third  <B>int</B>  argument,  a
             minimum field width.
 
        TYPE_ENUM
             Accept one of a specified set of strings.  Requires a
-            third <STRONG>(char</STRONG> <STRONG>**)</STRONG> argument pointing to a string list; a
-            fourth  <STRONG>int</STRONG> flag argument to enable case-sensitivity;
-            and a fifth <STRONG>int</STRONG> flag argument  specifying  whether  a
+            third <B>(char</B> <B>**)</B> argument pointing to a string list; a
+            fourth  <B>int</B> flag argument to enable case-sensitivity;
+            and a fifth <B>int</B> flag argument  specifying  whether  a
             partial  match  must be a unique one (if this flag is
             off, a prefix matches the first of any  set  of  more
             than  one  list  elements  with  that prefix). Please
             on the stack.
 
        TYPE_INTEGER
-            Integer  data,  parsable  to  an  integer by <STRONG>atoi(3)</STRONG>.
-            Requires a third <STRONG>int</STRONG> argument controlling the  preci-
-            sion,  a  fourth  <STRONG>long</STRONG>  argument constraining minimum
-            value, and a fifth <STRONG>long</STRONG> constraining  maximum  value.
+            Integer  data,  parsable  to  an  integer by <B>atoi(3)</B>.
+            Requires a third <B>int</B> argument controlling the  preci-
+            sion,  a  fourth  <B>long</B>  argument constraining minimum
+            value, and a fifth <B>long</B> constraining  maximum  value.
             If  the  maximum  value  is less or equal the minimum
             value, the range is simply  ignored.  On  return  the
-            field  buffer  is  formatted  according to the <STRONG>printf</STRONG>
+            field  buffer  is  formatted  according to the <B>printf</B>
             format  specification  ".*ld",  where  the   '*'   is
             replaced  by  the precision argument.  For details of
-            the precision handling see <STRONG>printf's</STRONG> man-page.
+            the precision handling see <B>printf's</B> man-page.
 
        TYPE_NUMERIC
             Numeric  data  (may  have  a   decimal-point   part).
-            Requires  a third <STRONG>int</STRONG> argument controlling the preci-
-            sion, a fourth <STRONG>double</STRONG> argument  constraining  minimum
-            value, and a fifth <STRONG>double</STRONG> constraining maximum value.
+            Requires  a third <B>int</B> argument controlling the preci-
+            sion, a fourth <B>double</B> argument  constraining  minimum
+            value, and a fifth <B>double</B> constraining maximum value.
             If your system supports locale's, the  decimal  point
+            character  to  be  used  must be the one specified by
+            your locale.  If the maximum value is less  or  equal
             the  minimum  value,  the range is simply ignored. On
             return the field buffer is formatted according to the
-            <STRONG>printf</STRONG>  format  specification ".*f", where the '*' is
+            <B>printf</B>  format  specification ".*f", where the '*' is
             replaced by the precision argument.  For  details  of
-            the precision handling see <STRONG>printf's</STRONG> man-page.
+            the precision handling see <B>printf's</B> man-page.
 
        TYPE_REGEXP
             Regular  expression data.  Requires a regular expres-
-            sion <STRONG>(char</STRONG> <STRONG>*)</STRONG> third argument; the data  is  valid  if
+            sion <B>(char</B> <B>*)</B> third argument; the data  is  valid  if
             the  regular  expression matches it.  Regular expres-
-            sions  are  in  the   format   of   <STRONG><A HREF="regcomp.3x.html">regcomp(3X)</A></STRONG>   and
-            <STRONG><A HREF="regexec.3x.html">regexec(3X)</A></STRONG>.  Please  notice that the regular expres-
+            sions  are  in  the   format   of   <B><A HREF="regcomp.3x.html">regcomp(3x)</A></B>   and
+            <B><A HREF="regexec.3x.html">regexec(3x)</A></B>.  Please  notice that the regular expres-
             sion must match the whole  field.  If  you  have  for
             example  an  eight  character  wide  field, a regular
             expression "^[0-9]*$" always means that you  have  to
             implementations.
 
             It is possible to set up new programmer-defined field
-            types.  See the <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3X)</A></STRONG> manual page.
+            types.  See the <B><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></B> manual page.
 
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       The  functions  <STRONG>field_type</STRONG>  and  <STRONG>field_arg</STRONG>  return <STRONG>NULL</STRONG> on
-       error. The function <STRONG>set_field_type</STRONG> returns one of the fol-
+       The  functions  <B>field_type</B>  and  <B>field_arg</B>  return <B>NULL</B> on
+       error. The function <B>set_field_type</B> returns one of the fol-
        lowing:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
+       <B>E_OK</B> The routine succeeded.
 
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><form.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 <H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
 
 
 </PRE>
 
 
 
+
 
 
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
similarity index 61%
rename from Ada95/html/man/form_fieldtype.3x.html
rename to doc/html/man/form_fieldtype.3x.html
index f70a9400095efae69c092863d070dc288c1311d9..dec43a354d1368605ee4b0f4daedba055f395c32 100644 (file)
@@ -1,12 +1,16 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>form_fieldtype</STRONG> - define validation-field types
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_fieldtype</B> - define validation-field types
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
        FIELDTYPE *new_fieldtype(
            bool (* const field_check)(FIELD *, const void *),
            bool (* const char_check)(int, const void *));
@@ -26,8 +30,8 @@
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       The function <STRONG>new_fieldtype</STRONG> creates a new field type usable
-       for data validation.  You supply it  with  <EM>field</EM><STRONG>_</STRONG><EM>check</EM>,  a
+       The function <B>new_fieldtype</B> creates a new field type usable
+       for data validation.  You supply it  with  <I>field</I><B>_</B><I>check</I>,  a
        predicate  to check the validity of an entered data string
        whenever the user attempt to leave a field.  The (FIELD *)
        argument  is passed in so the validation predicate can see
        argument  is an argument-block structure, about which more
        below.
 
-       You also supply <STRONG>new_fieldtype</STRONG> with <EM>char</EM><STRONG>_</STRONG><EM>check</EM>, a  function
+       You also supply <B>new_fieldtype</B> with <I>char</I><B>_</B><I>check</I>, a  function
        to  validate input characters as they are entered; it will
        be passed the character to be checked and a pointer to  an
        argument-block structure.
 
-       The  function <STRONG>free_fieldtype</STRONG> frees the space allocated for
+       The  function <B>free_fieldtype</B> frees the space allocated for
        a given validation type.
 
-       The function <STRONG>set_fieldtype</STRONG> associates  three  storage-man-
-       agement functions with a field type.  The <EM>mak</EM><STRONG>_</STRONG><EM>arg</EM> function
+       The function <B>set_fieldtype</B> associates  three  storage-man-
+       agement functions with a field type.  The <I>mak</I><B>_</B><I>arg</I> function
        is automatically applied to the list of arguments you give
-       <STRONG>set_field_type</STRONG>  when  attaching validation to a field; its
+       <B>set_field_type</B>  when  attaching validation 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  argu-
        ment-block  structures.   They  will be used by the forms-
-       driver code. You must supply  the  <EM>mak</EM><STRONG>_</STRONG><EM>arg</EM>  function,  the
+       driver code. You must supply  the  <I>mak</I><B>_</B><I>arg</I>  function,  the
        other  two  are optional, you may supply NULL for them. In
-       this case it is assumed,  that  <EM>mak</EM><STRONG>_</STRONG><EM>arg</EM>  doesn't  allocate
+       this case it is assumed,  that  <I>mak</I><B>_</B><I>arg</I>  doesn't  allocate
        memory  but simply loads the argument into a single scalar
        value.
 
+       The   form    driver    requests    <B>REQ_NEXT_CHOICE</B>    and
+       <B>REQ_PREV_CHOICE</B> assume that the possible values of a field
        form an ordered set, and provide the forms user with a way
-       to  move  through the set.  The <STRONG>set_fieldtype_choice</STRONG> func-
+       to  move  through the set.  The <B>set_fieldtype_choice</B> func-
        tion allows forms programmers to define successor and pre-
        decessor  functions  for  the field type.  These functions
        take the field pointer and an argument-block structure  as
        The  integer-valued  routines  return one of the following
        codes on error:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
+       <B>E_OK</B> The routine succeeded.
 
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
 
-       <STRONG>E_BAD_ARGUMENT</STRONG>
+       <B>E_BAD_ARGUMENT</B>
             Routine detected an incorrect or  out-of-range  argu-
             ment.
 
-       <STRONG>E_CONNECTED</STRONG>
+       <B>E_CONNECTED</B>
             The field is already connected to a form.
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><form.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
-       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
+       All of the <B>(char</B> <B>*)</B> arguments of  these  functions  should
+       actually  be <B>(void</B> <B>*)</B>.  The type has been left uncorrected
        for strict compatibility with System V.
 
 
 
 
 
+
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_hook.3x.html b/doc/html/man/form_hook.3x.html
new file mode 100644 (file)
index 0000000..87628aa
--- /dev/null
@@ -0,0 +1,136 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_hook</B> - set hooks for automatic invocation by applica-
+       tions
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
+       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 *));
+       void (*)(FORM *) field_term(const FORM *form);
+       int set_form_init(FORM *form, void (*func)(FORM *));
+       void (*)(FORM *) form_init(const FORM *form);
+       int set_form_term(FORM *form, void (*func)(FORM *));
+       void (*)(FORM *) form_term(const FORM *form);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These functions make it possible to set hook functions  to
+       be called at various points in the automatic processing of
+       input event codes by <B>form_driver</B>.
+
+       The function <B>set_field_init</B> sets a hook to  be  called  at
+       form-post  time  and  each time the selected field changes
+       (after the change).  <B>field_init</B> returns the current  field
+       init hook, if any (<B>NULL</B> if there is no such hook).
+
+       The  function  <B>set_field_term</B>  sets a hook to be called at
+       form-unpost time and each time the selected field  changes
+       (before the change).  <B>field_term</B> returns the current field
+       term hook, if any (<B>NULL</B> if there is no such hook).
+
+       The function <B>set_form_init</B> sets a hook  to  be  called  at
+       form-post  time  and  just  after a page change once it is
+       posted.  <B>form_init</B> returns the current form init hook,  if
+       any (<B>NULL</B> if there is no such hook).
+
+       The  function  <B>set_form_term</B>  sets  a hook to be called at
+       form-unpost time and just before a page change once it  is
+       posted.   <B>form_init</B> returns the current form term hook, if
+       any (<B>NULL</B> if there is no such hook).
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Routines that return pointers return <B>NULL</B> on error.  Other
+       routines return one of the following:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/form_new.3x.html b/doc/html/man/form_new.3x.html
new file mode 100644 (file)
index 0000000..7b0d91b
--- /dev/null
@@ -0,0 +1,82 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_new</B> - create and destroy forms
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
+       FORM *new_form(FIELD **fields);
+       int free_form(FORM *form);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  function  <B>new_form</B>  creates a new form connected to a
+       specified field pointer array (which must  be  <B>NULL</B>-termi-
+       nated).
+
+       The  function  <B>free_form</B>  disconnects  <I>form</I> from its field
+       array and frees the storage allocated for the form.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       The function <B>new_form</B> returns <B>NULL</B> on error.
+
+       The function <B>free_form</B> returns one of the following:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       <B>E_POSTED</B>
+            The form has already been posted.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/form_new_page.3x.html b/doc/html/man/form_new_page.3x.html
new file mode 100644 (file)
index 0000000..1a8d4ea
--- /dev/null
@@ -0,0 +1,82 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_new_page</B> - form pagination functions
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
+       int set_new_page(FIELD *field, bool new_page_flag);
+       bool new_page(const FIELD *field);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  function  <B>set_new_page</B>  sets or resets a flag marking
+       the given field as the beginning of  a  new  page  on  its
+       form.
+
+       The  function  <B>new_page</B>  is  a  predicate which tests if a
+       given field marks a page beginning on its form.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       The function <B>new_page</B> returns <B>TRUE</B> or <B>FALSE</B>.
+
+       The function <B>set_new_page</B> return one of the following:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_CONNECTED</B>
+            The given field is already connected to a form.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B> and 3x pages  whose  names  begin  "form_"  for
+       detailed descriptions of the entry points.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/form_opts.3x.html b/doc/html/man/form_opts.3x.html
new file mode 100644 (file)
index 0000000..5ae1cc4
--- /dev/null
@@ -0,0 +1,136 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_opts</B> - set and get form options
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
+       int set_form_opts(FORM *form, OPTIONS opts);
+       int form_opts_on(FORM *form, OPTIONS opts);
+       int form_opts_off(FORM *form, OPTIONS opts);
+       OPTIONS form_opts(const FORM *form);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  function  <B>set_form_opts</B>  sets  all  the  given form's
+       option bits  (form  option  bits  may  be  logically-OR'ed
+       together).
+
+       The  function <B>form_opts_on</B> turns on the given option bits,
+       and leaves others alone.
+
+       The function <B>form_opts_off</B>  turns  off  the  given  option
+       bits, and leaves others alone.
+
+       The  function  <B>form_opts</B> returns the form's current option
+       bits.
+
+       The following options are defined (all are on by default):
+
+       O_NL_OVERLOAD
+            Overload  the  <B>REQ_NEW_LINE</B>  forms  driver request so
+            that calling it at the end of a  field  goes  to  the
+            next field.
+
+       O_BS_OVERLOAD
+            Overload  the  <B>REQ_DEL_PREV</B>  forms  driver request so
+            that calling it at the beginning of a field  goes  to
+            the previous field.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Except for <B>form_opts</B>, each routine returns one of the fol-
+       lowing:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  routines  emulate the System V forms library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/form_page.3x.html b/doc/html/man/form_page.3x.html
new file mode 100644 (file)
index 0000000..874bda8
--- /dev/null
@@ -0,0 +1,136 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_page</B> - set and get form page number
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
+       int set_current_field(FORM *form, FIELD *field);
+       FIELD *current_field(const FORM *);
+       int set_form_page(FORM *form, int n);
+       int form_page(const FORM *form);
+       int field_index(const FIELD *field);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  function  <B>set_current</B> <B>field</B> sets the current field of
+       the given form; <B>current_field</B> returns the current field of
+       the given form.
+
+       The  function  <B>set_form_page</B>  sets  the form's page number
+       (goes to page <I>n</I> of the form).
+
+       The function <B>form_page</B> returns  the  form's  current  page
+       number.
+
+       The function <B>field_index</B> returns the index of the field in
+       the field array of the form it is connected to. It returns
+       <B>ERR</B>  if  the  argument is the null pointer or the field is
+       not connected.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Except for <B>form_page</B>, each routine returns one of the fol-
+       lowing:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       <B>E_BAD_STATE</B>
+            Routine was called from an initialization or termina-
+            tion function.
+
+       <B>E_INVALID_FIELD</B>
+            Contents of a field are not valid.
+
+       <B>E_REQUEST_DENIED</B>
+            The form driver could not process the request.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
+
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/form_post.3x.html b/doc/html/man/form_post.3x.html
new file mode 100644 (file)
index 0000000..e52967e
--- /dev/null
@@ -0,0 +1,136 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_post</B>  -  write or erase forms from associated subwin-
+       dows
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
+       int post_form(FORM *form);
+       int unpost_form(FORM *form);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The function <B>post_form</B> displays a form to  its  associated
+       subwindow.   To trigger physical display of the subwindow,
+       use  <B>refresh</B>  or  some  equivalent  <B>curses</B>  routine   (the
+       implicit  <B>doupdate</B>  triggered  by  an <B>curses</B> input request
+       will do).
+
+       The function <B>unpost_form</B> erases form from  its  associated
+       subwindow.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       These routines return one of the following:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       <B>E_POSTED</B>
+            The form has already been posted.
+
+       <B>E_BAD_STATE</B>
+            Routine was called from an initialization or termina-
+            tion function.
+
+       <B>E_NO_ROOM</B>
+            Form is too large for its window.
+
+       <B>E_NOT_POSTED</B>
+            The form has not been posted.
+
+       <B>E_NOT_CONNECTED</B>
+            No items are connected to the form.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
similarity index 50%
rename from Ada95/html/man/form_requestname.3x.html
rename to doc/html/man/form_requestname.3x.html
index f37efdc4142c6589fa9b9d1a680237415624e4b3..dcf5065ed0df08494a8508c83fac6bc02a43e2d4 100644 (file)
@@ -1,41 +1,45 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>form_requestname</STRONG> - handle printable form request names
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_requestname</B> - handle printable form request names
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
        const char *form_request_name(int request);
        int form_request_by_name(const char *name);
 
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       The  function <STRONG>form_request_name</STRONG> returns the printable name
+       The  function <B>form_request_name</B> returns the printable name
        of a form request code.
-       The function <STRONG>form_request_by_name</STRONG> searches  in  the  name-
+       The function <B>form_request_by_name</B> searches  in  the  name-
        table  for  a  request with the given name and returns its
        request code. Otherwise E_NO_MATCH is returned.
 
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       <STRONG>form_request_name</STRONG> returns <STRONG>NULL</STRONG> on error and sets errno  to
-       <STRONG>E_BAD_ARGUMENT</STRONG>.
-       <STRONG>form_request_by_name</STRONG> returns <STRONG>E_NO_MATCH</STRONG> on error.
+       <B>form_request_name</B> returns <B>NULL</B> on error and sets errno  to
+       <B>E_BAD_ARGUMENT</B>.
+       <B>form_request_by_name</B> returns <B>E_NO_MATCH</B> on error.
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><form.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 
 
 
+
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
similarity index 54%
rename from Ada95/html/man/form_userptr.3x.html
rename to doc/html/man/form_userptr.3x.html
index 49dbc78c6aed42088bc07be233eaca2ae8305504..4ac76f8bbe5171f1b890a19ce77b4799d75a5b91 100644 (file)
@@ -1,12 +1,16 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>form_userptr</STRONG> - associate application data with a form item
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_userptr</B> - associate application data with a form item
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
        int set_form_userptr(FORM *form, void *userptr);
        void* form_userptr(const FORM *form);
 
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       The  function  <STRONG>form_userptr</STRONG>  returns  <STRONG>NULL</STRONG>  on error.  The
-       function <STRONG>set_form_userptr</STRONG> returns one of the following:
+       The  function  <B>form_userptr</B>  returns  <B>NULL</B>  on error.  The
+       function <B>set_form_userptr</B> returns one of the following:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
+       <B>E_OK</B> The routine succeeded.
 
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><form.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 
 
 
+
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
similarity index 54%
rename from Ada95/html/man/form_win.3x.html
rename to doc/html/man/form_win.3x.html
index fdb60b7c85c566380dfa85c4ec8b6741428abbf8..4f73a6410cf59abdbdab1f28c3ab2a4757cf44a7 100644 (file)
@@ -1,13 +1,17 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>form_win</STRONG>  - make and break form window and subwindow asso-
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>form_win</B>  - make and break form window and subwindow asso-
        ciations
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+       <B>#include</B> <B>&lt;form.h&gt;</B>
        int set_form_win(FORM *form, WINDOW *win);
        WINDOW *form_win(const FORM *form);
        int set_form_sub(FORM *form, WINDOW *sub);
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       Every  form has an associated pair of <STRONG>curses</STRONG> windows.  The
+       Every  form has an associated pair of <B>curses</B> windows.  The
        form window displays any title and border associated  with
        the  window;  the form subwindow displays the items of the
        form that are currently available for selection.
 
        The first four functions get and set those windows.  It is
        not necessary to set either window; by default, the driver
-       code uses <STRONG>stdscr</STRONG> for both.
+       code uses <B>stdscr</B> for both.
 
-       In the <STRONG>set_</STRONG> functions, window argument of <STRONG>NULL</STRONG> is  treated
-       as  though  it  were  <STRONG>stsdcr</STRONG>.   A form argument of <STRONG>NULL</STRONG> is
+       In the <B>set_</B> functions, window argument of <B>NULL</B> is  treated
+       as  though  it  were  <B>stsdcr</B>.   A form argument of <B>NULL</B> is
        treated as a request to change  the  system  default  form
        window or subwindow.
 
-       The  function <STRONG>scale_form</STRONG> returns the minimum size required
-       for the subwindow of <EM>form</EM>.
+       The  function <B>scale_form</B> returns the minimum size required
+       for the subwindow of <I>form</I>.
 
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       Routines that return pointers return <STRONG>NULL</STRONG> on error.   Rou-
+       Routines that return pointers return <B>NULL</B> on error.   Rou-
        tines  that  return an integer return one of the following
        error codes:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
+       <B>E_OK</B> The routine succeeded.
 
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
 
-       <STRONG>E_BAD_ARGUMENT</STRONG>
+       <B>E_BAD_ARGUMENT</B>
             Routine detected an incorrect or  out-of-range  argu-
             ment.
 
-       <STRONG>E_POSTED</STRONG>
+       <B>E_POSTED</B>
             The form has already been posted.
 
-       <STRONG>E_NOT_CONNECTED</STRONG>
+       <B>E_NOT_CONNECTED</B>
             No items are connected to the form.
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
+
 
-       The header file <STRONG><form.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;form.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 
 
 
+
 
 
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
diff --git a/doc/html/man/infocmp.1m.html b/doc/html/man/infocmp.1m.html
new file mode 100644 (file)
index 0000000..78c02ed
--- /dev/null
@@ -0,0 +1,406 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>infocmp</B> - compare or print out <I>terminfo</I> descriptions
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>infocmp</B> [<B>-dceEGgnpqrILCuV1</B>] [<B>-v</B> <I>n</I>] [<B>-s</B> <B>d</B>| <B>i</B>| <B>l</B>| <B>c</B>]
+             [<B>-w</B> <I>width</I>] [<B>-A</B> <I>directory</I>] [<B>-B</B> <I>directory</I>]
+             [<I>termname</I>...]
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       <B>infocmp</B>  can  be  used  to compare a binary <B>terminfo</B> entry
+       with other terminfo entries, rewrite a  <B>terminfo</B>  descrip-
+       tion  to  take  advantage  of  the <B>use=</B> terminfo field, or
+       print out a <B>terminfo</B>  description  from  the  binary  file
+       (<B>term</B>) 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.
+
+   <B>Default</B> <B>Options</B>
+       If  no options are specified and zero or one <I>termnames</I> are
+       specified, the <B>-I</B> option will be assumed.   If  more  than
+       one  <I>termname</I> is specified, the <B>-d</B> option will be assumed.
+
+   <B>Comparison</B> <B>Options</B> <B>[-d]</B> <B>[-c]</B> <B>[-n]</B>
+       <B>infocmp</B> compares the <B>terminfo</B>  description  of  the  first
+       terminal  <I>termname</I>  with each of the descriptions given by
+       the entries for the  other  terminal's  <I>termnames</I>.   If  a
+       capability  is  defined for only one of the terminals, the
+       value returned will depend on the type of the  capability:
+       <B>F</B>  for  boolean  variables,  <B>-1</B> for integer variables, and
+       <B>NULL</B> for string variables.
+
+       The <B>-d</B> option produces a list of each capability  that  is
+       different  between  two entries.  This option is useful to
+       show the difference between two entries, created  by  dif-
+       ferent people, for the same or similar terminals.
+
+       The  <B>-c</B>  option produces a list of each capability that is
+       common between two entries.  Capabilities that are not set
+       are  ignored.  This option can be used as a quick check to
+       see if the <B>-u</B> option is worth using.
+
+       The <B>-n</B> option produces a list of each capability  that  is
+       in neither entry.  If no <I>termnames</I> are given, the environ-
+       ment variable <B>TERM</B> will be used for both of the <I>termnames</I>.
+       This  can  be used as a quick check to see if anything was
+       left out of a description.
+
+   <B>Source</B> <B>Listing</B> <B>Options</B> <B>[-I]</B> <B>[-L]</B> <B>[-C]</B> <B>[-r]</B>
+       The <B>-I</B>, <B>-L</B>, and <B>-C</B> options will produce a  source  listing
+       for each terminal named.
+
+      <B>-I</B>   use the <B>terminfo</B> names
+      <B>-L</B>   use the long C variable name listed in &lt;<B>term.h</B>&gt;
+
+      <B>-C</B>   use the <B>termcap</B> names
+      <B>-r</B>   when using <B>-C</B>, put out all capabilities in <B>termcap</B> form
+
+       If  no  <I>termnames</I> are given, the environment variable <B>TERM</B>
+       will be used for the terminal name.
+
+       The source produced by the <B>-C</B> option may be used  directly
+       as  a <B>termcap</B> entry, but not all parameterized strings can
+       be changed to the <B>termcap</B> format.  <B>infocmp</B> will attempt to
+       convert  most  of  the parameterized information, and any-
+       thing not converted will be plainly marked in  the  output
+       and commented out.  These should be edited by hand.
+
+       All  padding  information  for  strings  will be collected
+       together and placed at the beginning of the  string  where
+       <B>termcap</B>  expects  it.  Mandatory padding (padding informa-
+       tion with a trailing '/') will become optional.
+
+       All <B>termcap</B> variables no longer supported by <B>terminfo</B>, but
+       which are derivable from other <B>terminfo</B> variables, will be
+       output.  Not all <B>terminfo</B> capabilities will be translated;
+       only  those variables which were part of <B>termcap</B> will nor-
+       mally be output.  Specifying the <B>-r</B> option will  take  off
+       this  restriction,  allowing all capabilities to be output
+       in <I>termcap</I> form.
+
+       Note that because padding is collected to the beginning of
+       the  capability,  not all capabilities are output.  Manda-
+       tory padding is not supported.   Because  <B>termcap</B>  strings
+       are  not as flexible, it is not always possible to convert
+       a <B>terminfo</B> string capability into  an  equivalent  <B>termcap</B>
+       format.   A subsequent conversion of the <B>termcap</B> file back
+       into <B>terminfo</B> format will not  necessarily  reproduce  the
+       original <B>terminfo</B> source.
+
+       Some  common  <B>terminfo</B>  parameter sequences, their <B>termcap</B>
+       equivalents, and some terminal types which  commonly  have
+       such sequences, are:
+
+     <B>terminfo</B>                    <B>termcap</B>   Representative Terminals
+     ---------------------------------------------------------------
+     <B>%p1%c</B>                       <B>%.</B>        adm
+     <B>%p1%d</B>                       <B>%d</B>        hp, ANSI standard, vt100
+     <B>%p1%'x'%+%c</B>                 <B>%+x</B>       concept
+     <B>%i</B>                          <B>%i</B>q       ANSI standard, vt100
+     <B>%p1%?%'x'%&gt;%t%p1%'y'%+%;</B>    <B>%&gt;xy</B>      concept
+     <B>%p2</B> is printed before <B>%p1</B>   <B>%r</B>        hp
+
+   <B>Use=</B> <B>Option</B> <B>[-u]</B>
+       The  <B>-u</B>  option  produces a <B>terminfo</B> source description of
+       the first terminal <I>termname</I> which is relative to  the  sum
+       of  the  descriptions  given  by the entries for the other
+       terminals <I>termnames</I>.  It does this by analyzing  the  dif-
+       ferences   between   the  first  <I>termname</I>  and  the  other
+       <I>termnames</I> and producing a description with <B>use=</B> fields for
+       the  other  terminals.   In this manner, it is possible to
+       retrofit  generic  terminfo  entries  into  a   terminal's
+       description.  Or, if two similar terminals exist, but were
+       coded at different times or by different  people  so  that
+       each description is a full description, using <B>infocmp</B> will
+       show what can be done to change one description to be rel-
+       ative to the other.
+
+       A capability will get printed with an at-sign (@) if it no
+       longer exists in the first <I>termname</I>, but one of the  other
+       <I>termname</I>  entries contains a value for it.  A capability's
+       value gets printed if the value in the first  <I>termname</I>  is
+       not  found in any of the other <I>termname</I> entries, or if the
+       first of the other <I>termname</I> entries that has this capabil-
+       ity  gives  a different value for the capability than that
+       in the first <I>termname</I>.
+
+       The order of the other <I>termname</I>  entries  is  significant.
+       Since  the terminfo compiler <B>tic</B> does a left-to-right scan
+       of the capabilities, specifying two <B>use=</B> entries that con-
+       tain differing entries for the same capabilities will pro-
+       duce different results depending on  the  order  that  the
+       entries  are  given in.  <B>infocmp</B> will flag any such incon-
+       sistencies between the other <I>termname</I> entries as they  are
+       found.
+
+       Alternatively,  specifying a capability <I>after</I> a <B>use=</B> entry
+       that contains that capability will cause the second speci-
+       fication  to  be  ignored.   Using  <B>infocmp</B>  to recreate a
+       description can be a useful check to make sure that every-
+       thing  was  specified  correctly  in  the  original source
+       description.
+
+       Another error  that  does  not  cause  incorrect  compiled
+       files,  but will slow down the compilation time, is speci-
+       fying extra <B>use=</B> fields  that  are  superfluous.   <B>infocmp</B>
+       will  flag  any  other  <I>termname</I> <I>use=</I> fields that were not
+       needed.
+
+   <B>Changing</B> <B>Databases</B> <B>[-A</B> <I>directory</I>] [-B <I>directory</I>]
+       The location of the compiled <B>terminfo</B>  database  is  taken
+       from  the environment variable <B>TERMINFO</B> .  If the variable
+       is not defined, or the terminal is not found in that loca-
+       tion, the system <B>terminfo</B> database, in <B>@DATADIR@/terminfo</B>,
+       will be used.  The options <B>-A</B> and <B>-B</B> may be used to  over-
+       ride  this  location.  The <B>-A</B> option will set <B>TERMINFO</B> for
+       the first <I>termname</I> and the <B>-B</B> option will set <B>TERMINFO</B> for
+       the other <I>termnames</I>.  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.
+
+   <B>Other</B>  <B>Options</B>  <B>[-s</B> <B>d|i|l|c]</B> <B>[-1FTVefip]</B> <B>[-Rsubset]</B> <B>[-v</B> <I>n</I>] [-w
+       <I>width</I>]
+       The <B>-s</B> option sorts the fields within each type  according
+       to the argument below:
+
+       <B>d</B>    leave fields in the order that they are stored in the
+            <I>terminfo</I> database.
+
+       <B>i</B>    sort by <I>terminfo</I> name.
+
+       <B>l</B>    sort by the long C variable name.
+
+       <B>c</B>    sort by the <I>termcap</I> name.
+
+            If the <B>-s</B> option is not given, the fields printed out
+            will  be  sorted  alphabetically by the <B>terminfo</B> name
+            within each type, except in the case of the <B>-C</B> or the
+            <B>-L</B> options, which cause the sorting to be done by the
+            <B>termcap</B> name or the long  C  variable  name,  respec-
+            tively.
+
+       <B>-1</B>   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.
+
+       <B>-F</B>   compare  terminfo  files.  This assumes that two fol-
+            lowing  arguments  are  filenames.   The  files   are
+            searched  for  pairwise matches between 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.
+            Normally,  to  reduce  the  volume of the report, use
+            references are not resolved before looking  for  dif-
+            ferences, but resolution can be forced by also speci-
+            fying <B>-r</B>.
+
+       <B>-G</B>   Display constant literals in decimal form rather than
+            their character equivalents.
+
+       <B>-a</B>   tells  <B>infocmp</B>  to  retain commented-out capabilities
+            rather than discarding them.  Capabilities  are  com-
+            mented by prefixing them with a period.
+
+       <B>-q</B>   Make  the comparison listing shorter by omitting sub-
+            headings, and using "-" for absent capabilities,  "@"
+            for canceled rather than "NULL".
+
+       <B>-R</B><I>subset</I>
+            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 do not support the
+            full set of SVR4/XSI Curses  terminfo;  and  variants
+            such as AIX that have their own extensions incompati-
+            ble with SVr4/XSI.  Available  terminfo  subsets  are
+            "SVr1",  "Ultrix",  "HP",  and "AIX"; see <B><A HREF="terminfo.5.html">terminfo(5)</A></B>
+            for details.  You can also choose  the  subset  "BSD"
+            which  selects only capabilities with termcap equiva-
+            lents recognized by 4.4BSD.
+
+       <B>-T</B>   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).
+
+       <B>-V</B>   prints out the version of the program in use on stan-
+            dard error and exits.
+
+       <B>-e</B>   Dump the capabilities of the given terminal  as  a  C
+            initializer  for  a  TERMTYPE structure (the terminal
+            capability structure in the <B>&lt;term.h&gt;</B>).   This  option
+            is  useful  for  preparing  versions  of  the  curses
+            library hardwired for a given terminal type.
+
+       <B>-E</B>   Dump  the  capabilities  of  the  given  terminal  as
+            tables,  needed  in  the C initializer for a TERMTYPE
+            structure (the terminal capability structure  in  the
+            <B>&lt;term.h&gt;</B>).   This option is useful for preparing ver-
+            sions 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.
+
+            Before  ncurses  5.0, the split between the <B>-e</B> and <B>-E</B>
+            options was not  needed;  but  support  for  extended
+            names required making the arrays of terminal capabil-
+            ities separate from the TERMTYPE structure.
+
+       <B>-f</B>   Display  complex  terminfo  strings   which   contain
+            if/then/else/endif expressions indented for readabil-
+            ity.
+
+       <B>-g</B>   Display constant character literals  in  quoted  form
+            rather than their decimal equivalents.
+
+       <B>-i</B>   Analyze the initialization (<B>is1</B>, <B>is2</B>, <B>is3</B>), and reset
+            (<B>rs1</B>, <B>rs2</B>, <B>rs3</B>), strings  in  the  entry.   For  each
+            string,  the code tries to analyze it into actions in
+            terms of the other capabilities in the entry, certain
+            X3.64/ISO  6429/ECMA-48 capabilities, and certain DEC
+            VT-series private modes (the set of  recognized  spe-
+            cial  sequences  has  been  selected for completeness
+            over the existing terminfo  database).   Each  report
+            line  consists  of the capability name, followed by a
+            colon and space, followed by a printable expansion of
+            the  capability  string with sections matching recog-
+            nized   actions    translated    into    {}-bracketed
+            descriptions.  Here is a list of the DEC/ANSI special
+            sequences recognized:
+
+                  Action        Meaning
+                  -----------------------------------------
+                  RIS           full reset
+                  SC            save cursor
+                  RC            restore cursor
+                  LL            home-down
+                  RSR           reset scroll region
+
+                  ISO DEC G0    enable DEC graphics for G0
+                  ISO UK G0     enable UK chars for G0
+                  ISO US G0     enable US chars for G0
+                  ISO DEC G1    enable DEC graphics for G1
+                  ISO UK G1     enable UK chars for G1
+                  ISO US G1     enable US chars for G1
+
+                  DECPAM        application keypad mode
+                  DECPNM        normal keypad mode
+                  DECANSI       enter ANSI mode
+
+                  DEC[+-]CKM    application cursor keys
+                  DEC[+-]ANM    set VT52 mode
+                  DEC[+-]COLM   132-column mode
+                  DEC[+-]SCLM   smooth scroll
+                  DEC[+-]SCNM   reverse video mode
+                  DEC[+-]OM     origin mode
+                  DEC[+-]AWM    wraparound mode
+                  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}).
+
+       <B>-p</B>   Ignore padding specifications when comparing strings.
+
+       <B>-v</B> <I>n</I> prints out tracing information on standard  error  as
+            the  program runs.  Higher values of n induce greater
+            verbosity.
+
+       <B>-w</B> <I>width</I>
+            changes the output to <I>width</I> characters.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+       @DATADIR@/terminfo  Compiled     terminal      description
+                           database.
+
+
+
+</PRE>
+<H2>EXTENSIONS</H2><PRE>
+       The  <B>-E</B>,  <B>-F</B>,  <B>-G</B>,  <B>-R</B>, <B>-T</B>, <B>-a</B>, <B>-e</B>, <B>-f</B>, <B>-g</B>, <B>-i</B>, <B>-p</B>, and <B>-q</B>
+       options are not supported in SVr4 curses.
+
+       The <B>-r</B> 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 4.4BSD set,  use  -r
+       -RBSD.
+
+
+</PRE>
+<H2>BUGS</H2><PRE>
+       The -F option of <B><A HREF="infocmp.1m.html">infocmp(1m)</A></B> should be a <B><A HREF="toe.1m.html">toe(1m)</A></B> mode.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="infocmp.1m.html">infocmp(1m)</A></B>,    <B><A HREF="captoinfo.1m.html">captoinfo(1m)</A></B>,   <B><A HREF="infotocap.1m.html">infotocap(1m)</A></B>,   <B><A HREF="tic.1m.html">tic(1m)</A></B>,
+       <B><A HREF="toe.1m.html">toe(1m)</A></B>, <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>.
+
+
+</PRE>
+<H2>AUTHOR</H2><PRE>
+       Eric S.  Raymond  &lt;esr@snark.thyrsus.com&gt;  and  Thomas  E.
+       Dickey &lt;dickey@herndon4.his.com&gt;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/infotocap.1m.html b/doc/html/man/infotocap.1m.html
new file mode 100644 (file)
index 0000000..7194e0a
--- /dev/null
@@ -0,0 +1,78 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>infotocap</B>  - convert a <I>terminfo</I> description into a <I>termcap</I>
+       description
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>infotocap</B> [<B>-v</B><I>n</I> <I>width</I>]  [<B>-V</B>] [<B>-1</B>] [<B>-w</B> <I>width</I>] <I>file</I> . . .
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       <B>infotocap</B> looks in <I>file</I> for  <B>terminfo</B>  descriptions.   For
+       each one found, an equivalent <B>termcap</B> description is writ-
+       ten to standard output.   Terminfo  <B>use</B>  capabilities  are
+       translated directly to termcap <B>tc</B> capabilities.
+
+       <B>-v</B>   print  out  tracing  information on standard error as
+            the program runs.
+
+       <B>-V</B>   print out the version of the program in use on  stan-
+            dard error and exit.
+
+       <B>-1</B>   cause  the fields to print out one to a line.  Other-
+            wise, the fields will be printed several to a line to
+            a maximum width of 60 characters.
+
+       <B>-w</B>   change the output to <I>width</I> characters.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+       @DATADIR@/terminfo  Compiled      terminal     description
+                           database.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       This utility is actually a link to <B><A HREF="tic.1m.html">tic(1m)</A></B>, running in  <I>-C</I>
+       mode.  You can use other <I>tic</I> options such as <B>-f</B> and  <B>-x</B>.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="tic.1m.html">tic(1m)</A></B>, <B><A HREF="infocmp.1m.html">infocmp(1m)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/keybound.3x.html b/doc/html/man/keybound.3x.html
new file mode 100644 (file)
index 0000000..11af1ac
--- /dev/null
@@ -0,0 +1,80 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>keybound</B> - return definition of keycode
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+       <B>int</B> <B>keybound(int</B> <B>keycode,</B> <B>int</B> <B>count);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       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.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       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.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       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  con-
+       ditioned using NCURSES_VERSION.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="define_key.3x.html">define_key(3x)</A></B>, <B><A HREF="keyok.3x.html">keyok(3x)</A></B>.
+
+
+</PRE>
+<H2>AUTHOR</H2><PRE>
+       Thomas Dickey.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
similarity index 61%
rename from Ada95/html/man/keyok.3x.html
rename to doc/html/man/keyok.3x.html
index ba188ece3b6d4c7457c4d3358b59cc01a60e0b2d..1dbe4551dec8a6bc2c519462d48ed90bb1500454 100644 (file)
@@ -1,21 +1,25 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>keyok</STRONG> - enable or disable a keycode
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>keyok</B> - enable or disable a keycode
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
 
-       <STRONG>int</STRONG> <STRONG>keyok(int</STRONG> <STRONG>keycode,</STRONG> <STRONG>bool</STRONG> <STRONG>enable);</STRONG>
+       <B>int</B> <B>keyok(int</B> <B>keycode,</B> <B>bool</B> <B>enable);</B>
 
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
        This is an extension to the curses library.  It permits an
        application to disable specific keycodes, rather than  use
-       the  <EM>keypad</EM>  function  to disable all keycodes.  Keys that
+       the  <I>keypad</I>  function  to disable all keycodes.  Keys that
        have been disabled can be reenabled.
 
 
@@ -23,7 +27,7 @@
 <H2>RETURN VALUE</H2><PRE>
        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 <EM>enable</EM>  parameter  is  true,
+       then ERR is returned.  If the <I>enable</I>  parameter  is  true,
        then  the  key  must  have  been disabled, and vice versa.
        Otherwise, the function returns OK.
 
@@ -38,7 +42,7 @@
 
 </PRE>
 <H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="define_key.3x.html">define_key(3X)</A></STRONG>.
+       <B><A HREF="define_key.3x.html">define_key(3x)</A></B>.
 
 
 </PRE>
 
 
 
+
 
 
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu.3x.html b/doc/html/man/menu.3x.html
new file mode 100644 (file)
index 0000000..74fe0b7
--- /dev/null
@@ -0,0 +1,244 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>menu</B> - curses extension for programming menus
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  <B>menu</B> library provides terminal-independent facilities
+       for composing menu systems  on  character-cell  terminals.
+       The library includes: item routines, which create and mod-
+       ify menu items; and menu routines, which group items  into
+       menus, display menus on the screen, and handle interaction
+       with the user.
+
+       The <B>menu</B> library uses the <B>curses</B> libraries, and  a  curses
+       initialization  routine  such  as  <B>initscr</B>  must be called
+       before using any of these  functions.   To  use  the  <B>menu</B>
+       library, link with the options <B>-lmenu</B> <B>-lcurses</B>.
+
+
+   <B>Current</B> <B>Default</B> <B>Values</B> <B>for</B> <B>Item</B> <B>Attributes</B>
+       The  <B>menu</B>  library  maintains  a  default  value  for item
+       attributes.  You can get or set this  default  by  calling
+       the  appropriate  <B>get_</B>  or  <B>set_</B>  routine with a <B>NULL</B> item
+       pointer.  Changing  this  default  with  a  <B>set_</B>  function
+       affects  future  item  creations,  but does not change the
+       rendering of items already created.
+
+
+   <B>Routine</B> <B>Name</B> <B>Index</B>
+       The following table lists each <B>menu</B> routine and  the  name
+       of the manual page on which it is described.
+
+       <B>curses</B> Routine Name    Manual Page Name
+       --------------------------------------------
+       current_item           <B><A HREF="mitem_current.3x.html">mitem_current(3x)</A></B>
+       free_item              <B><A HREF="mitem_new.3x.html">mitem_new(3x)</A></B>
+       free_menu              <B><A HREF="menu_new.3x.html">menu_new(3x)</A></B>
+       item_count             <B><A HREF="menu_items.3x.html">menu_items(3x)</A></B>
+       item_description       <B><A HREF="mitem_name.3x.html">mitem_name(3x)</A></B>
+       item_index             <B><A HREF="mitem_current.3x.html">mitem_current(3x)</A></B>
+       item_init              <B><A HREF="menu_hook.3x.html">menu_hook(3x)</A></B>
+       item_name              <B><A HREF="mitem_name.3x.html">mitem_name(3x)</A></B>
+       item_opts              <B><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></B>
+       item_opts_off          <B><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></B>
+       item_opts_on           <B><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></B>
+       item_term              <B><A HREF="menu_hook.3x.html">menu_hook(3x)</A></B>
+       item_userptr           <B><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></B>
+       item_value             <B><A HREF="mitem_value.3x.html">mitem_value(3x)</A></B>
+       item_visible           <B><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></B>
+       menu_back              <B><A HREF="menu_attribs.3x.html">menu_attribs(3x)</A></B>
+       menu_driver            <B><A HREF="menu_driver.3x.html">menu_driver(3x)</A></B>
+       menu_fore              <B><A HREF="menu_attribs.3x.html">menu_attribs(3x)</A></B>
+
+       menu_format            <B><A HREF="menu_format.3x.html">menu_format(3x)</A></B>
+       menu_grey              <B><A HREF="menu_attribs.3x.html">menu_attribs(3x)</A></B>
+       menu_init              <B><A HREF="menu_hook.3x.html">menu_hook(3x)</A></B>
+       menu_items             <B><A HREF="menu_items.3x.html">menu_items(3x)</A></B>
+       menu_mark              <B><A HREF="menu_mark.3x.html">menu_mark(3x)</A></B>
+       menu_opts              <B><A HREF="menu_opts.3x.html">menu_opts(3x)</A></B>
+       menu_opts_off          <B><A HREF="menu_opts.3x.html">menu_opts(3x)</A></B>
+       menu_opts_on           <B><A HREF="menu_opts.3x.html">menu_opts(3x)</A></B>
+       menu_pad               <B><A HREF="menu_attribs.3x.html">menu_attribs(3x)</A></B>
+       menu_pattern           <B><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></B>
+       menu_request_by_name   <B><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></B>
+       menu_request_name      <B><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></B>
+       menu_spacing           <B><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></B>
+       menu_sub               <B><A HREF="menu_win.3x.html">menu_win(3x)</A></B>
+       menu_term              <B><A HREF="menu_hook.3x.html">menu_hook(3x)</A></B>
+       menu_userptr           <B><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></B>
+       menu_win               <B><A HREF="menu_win.3x.html">menu_win(3x)</A></B>
+       new_item               <B><A HREF="mitem_new.3x.html">mitem_new(3x)</A></B>
+       new_menu               <B><A HREF="menu_new.3x.html">menu_new(3x)</A></B>
+       pos_menu_cursor        <B><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></B>
+       post_menu              <B><A HREF="menu_post.3x.html">menu_post(3x)</A></B>
+       scale_menu             <B><A HREF="menu_win.3x.html">menu_win(3x)</A></B>
+       set_current_item       <B><A HREF="mitem_current.3x.html">mitem_current(3x)</A></B>
+       set_item_init          <B><A HREF="menu_hook.3x.html">menu_hook(3x)</A></B>
+       set_item_opts          <B><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></B>
+       set_item_term          <B><A HREF="menu_hook.3x.html">menu_hook(3x)</A></B>
+       set_item_userptr       <B><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></B>
+       set_item_value         <B><A HREF="mitem_value.3x.html">mitem_value(3x)</A></B>
+       set_menu_back          <B><A HREF="menu_attribs.3x.html">menu_attribs(3x)</A></B>
+       set_menu_fore          <B><A HREF="menu_attribs.3x.html">menu_attribs(3x)</A></B>
+       set_menu_format        <B><A HREF="menu_format.3x.html">menu_format(3x)</A></B>
+       set_menu_grey          <B><A HREF="menu_attribs.3x.html">menu_attribs(3x)</A></B>
+       set_menu_init          <B><A HREF="menu_hook.3x.html">menu_hook(3x)</A></B>
+       set_menu_items         <B><A HREF="menu_items.3x.html">menu_items(3x)</A></B>
+       set_menu_mark          <B><A HREF="menu_mark.3x.html">menu_mark(3x)</A></B>
+       set_menu_opts          <B><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></B>
+       set_menu_pad           <B><A HREF="menu_attribs.3x.html">menu_attribs(3x)</A></B>
+       set_menu_pattern       <B><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></B>
+       set_menu_spacing       <B><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></B>
+       set_menu_sub           <B><A HREF="menu_win.3x.html">menu_win(3x)</A></B>
+       set_menu_term          <B><A HREF="menu_hook.3x.html">menu_hook(3x)</A></B>
+       set_menu_userptr       <B><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></B>
+       set_menu_win           <B><A HREF="menu_win.3x.html">menu_win(3x)</A></B>
+       set_top_row            <B><A HREF="mitem_current.3x.html">mitem_current(3x)</A></B>
+       top_row                <B><A HREF="mitem_current.3x.html">mitem_current(3x)</A></B>
+       unpost_menu            <B><A HREF="menu_post.3x.html">menu_post(3x)</A></B>
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Routines  that return pointers return <B>NULL</B> on error.  Rou-
+       tines that return an integer return one of  the  following
+       error codes:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       <B>E_POSTED</B>
+            The menu is already posted.
+
+       <B>E_BAD_STATE</B>
+            Routine was called from an initialization or termina-
+            tion function.
+
+       <B>E_NO_ROOM</B>
+            Menu is too large for its window.
+
+       <B>E_NOT_POSTED</B>
+            The menu has not been posted.
+
+       <B>E_UNKNOWN_COMMAND</B>
+            The menu driver code saw an unknown request code.
+
+       <B>E_NO_MATCH</B>
+            Character failed to match.
+
+       <B>E_NOT_SELECTABLE</B>
+            The designated item cannot be selected.
+
+       <B>E_NOT_CONNECTED</B>
+            No items are connected to the menu.
+
+       <B>E_REQUEST_DENIED</B>
+            The menu driver could not process the request.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>  and  3x  pages  whose  names begin "menu_" for
+       detailed descriptions of the entry points.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       files <B>&lt;curses.h&gt;</B> and <B>&lt;eti.h&gt;</B>.
+
+       In  your  library  list,  libmenu.a should be before libn-
+       curses.a; that is, you want to say `-lmenu -lncurses', not
+       the  other  way  around (which would give you a link error
+       using GNU <B><A HREF="ld.1.html">ld(1)</A></B> and many other linkers).
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen  Pfeifer.  Manual pages and adaptation for ncurses
+       by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/menu_attribs.3x.html b/doc/html/man/menu_attribs.3x.html
new file mode 100644 (file)
index 0000000..d6e82b0
--- /dev/null
@@ -0,0 +1,136 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>menu_attributes</B> - color and attribute control for menus
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
+       int set_menu_fore(MENU *menu, chtype attr);
+       chtype menu_fore(const MENU *menu);
+       int set_menu_back(MENU *menu, chtype attr);
+       chtype menu_back(const MENU *menu);
+       int set_menu_grey(MENU *menu, chtype attr);
+       chtype menu_grey(const MENU *menu);
+       int set_menu_pad(MENU *menu, int pad);
+       int menu_pad(const MENU *menu);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  function  <B>set_menu_fore</B> sets the foreground attribute
+       of <I>menu</I>. This is the  highlight  used  for  selected  menu
+       items.   <B>menu_fore</B>  returns the foreground attribute.  The
+       default is <B>A_STANDOUT</B>.
+
+       The function <B>set_menu_back</B> sets the  background  attribute
+       of  <I>menu</I>.  This  is the highlight used for selectable (but
+       not  currently  selected)  menu   items.    The   function
+       <B>menu_back</B>  returns  the background attribute.  The default
+       is <B>A_NORMAL</B>.
+
+       The function <B>set_menu_grey</B>  sets  the  grey  attribute  of
+       <I>menu</I>.  This  is  the highlight used for un-selectable menu
+       items in menus that permit more than one  selection.   The
+       function   <B>menu_grey</B>  returns  the  grey  attribute.   The
+       default is <B>A_UNDERLINE</B>.
+
+       The function <B>set_menu_pad</B> sets the character used to  fill
+       the space between the name and description parts of a menu
+       item.  <B>menu_pad</B> returns the given  menu's  pad  character.
+       The default is a blank.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       These routines return one of the following:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B> and 3x pages  whose  names  begin  "menu_"  for
+       detailed descriptions of the entry points.
+
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
similarity index 50%
rename from Ada95/html/man/menu_cursor.3x.html
rename to doc/html/man/menu_cursor.3x.html
index 71bd279e82236b866e3afec49e7bdeee6c50a08e..aed8af818961d9772d7e33fda1f72d24be0cb4ce 100644 (file)
@@ -1,20 +1,24 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>menu_cursor</STRONG> - position a menu's cursor
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>menu_cursor</B> - position a menu's cursor
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
        int pos_menu_cursor(const MENU *menu);
 
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       The  function  <STRONG>pos_menu_cursor</STRONG>  restores the cursor to the
+       The  function  <B>pos_menu_cursor</B>  restores the cursor to the
        current position associated with the menu's selected item.
-       This  is  useful after <STRONG>curses</STRONG> routines have been called to
+       This  is  useful after <B>curses</B> routines have been called to
        do screen-painting in response to a menu select.
 
 
 <H2>RETURN VALUE</H2><PRE>
        This routine returns one of the following:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
+       <B>E_OK</B> The routine succeeded.
 
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
 
-       <STRONG>E_BAD_ARGUMENT</STRONG>
+       <B>E_BAD_ARGUMENT</B>
             Routine detected an incorrect or  out-of-range  argu-
             ment.
 
-       <STRONG>E_NOT_POSTED</STRONG>
+       <B>E_NOT_POSTED</B>
             The menu has not been posted.
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 
 
 
+
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
similarity index 74%
rename from Ada95/html/man/menu_driver.3x.html
rename to doc/html/man/menu_driver.3x.html
index 40c11f8ab57234010a3585efd072073ef9b93e2d..48ea272f8a173c90bbe5dda0822764298208e772 100644 (file)
@@ -1,19 +1,23 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>menu_driver</STRONG> - command-processing loop of the menu system
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>menu_driver</B> - command-processing loop of the menu system
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
        int menu_driver(MENU *menu, int c);
 
 
 </PRE>
 <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
+       input events to it through <B>menu_driver</B>.  This routine  has
        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.
@@ -57,6 +61,8 @@
 
        REQ_TOGGLE_ITEM
             Select/deselect an item.
+
+       REQ_CLEAR_PATTERN
             Clear the menu pattern buffer.
 
        REQ_BACK_PATTERN
@@ -72,7 +78,7 @@
        If the second argument is a printable ASCII character, the
        code appends it to the pattern buffer and attempts to move
        to the next item matching the new pattern.  If there is no
-       such match, <STRONG>menu_driver</STRONG> returns <STRONG>E_NO_MATCH</STRONG> and deletes the
+       such match, <B>menu_driver</B> returns <B>E_NO_MATCH</B> and deletes the
        appended character from the buffer.
 
        If the second argument is one  of  the  above  pre-defined
        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
+       <B>E_UNKNOWN_COMMAND</B>  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
+       a request was done, <B>menu_driver</B> 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.
+       <B>E_REQUEST_DENIED</B> 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
+       returns <B>E_UNKNOWN_COMMAND</B>.   Application-defined  commands
+       should  be  defined  relative  to <B>MAX_COMMAND</B>, the maximum
        value of these pre-defined requests.
 
-       <STRONG>menu_driver</STRONG> return one of the following error codes:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
 
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       <B>menu_driver</B> return one of the following error codes:
 
-       <STRONG>E_BAD_ARGUMENT</STRONG>
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
             Routine detected an incorrect or  out-of-range  argu-
             ment.
 
-       <STRONG>E_BAD_STATE</STRONG>
+       <B>E_BAD_STATE</B>
             Routine was called from an initialization or termina-
             tion function.
 
-       <STRONG>E_NOT_POSTED</STRONG>
+       <B>E_NOT_POSTED</B>
             The menu has not been posted.
 
-       <STRONG>E_UNKNOWN_COMMAND</STRONG>
+       <B>E_UNKNOWN_COMMAND</B>
             The menu driver code saw an unknown request code.
 
-       <STRONG>E_NO_MATCH</STRONG>
+       <B>E_NO_MATCH</B>
             Character failed to match.
 
-       <STRONG>E_REQUEST_DENIED</STRONG>
+       <B>E_REQUEST_DENIED</B>
             The menu driver could not process the request.
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       files <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       files <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 
 
 
+
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_format.3x.html b/doc/html/man/menu_format.3x.html
new file mode 100644 (file)
index 0000000..8702733
--- /dev/null
@@ -0,0 +1,136 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>menu_format</B> - set and get menu sizes
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
+       int set_menu_format(MENU *menu, int rows, int cols);
+       int menu_format(const MENU *menu, int *rows, int *cols);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The function <B>set_menu_format</B> sets the maximum display size
+       of the given menu.  If this size is too small  to  display
+       all  menu items, the menu will be made scrollable. If this
+       size is larger than the menus subwindow and the  subwindow
+       is  too  small to display all menu items, <B>post_menu()</B> will
+       fail.
+
+       The  default  format  is  16  rows,  1  column.    Calling
+       <B>set_menu_format</B>  with a null menu pointer will change this
+       default.  A zero row or column argument to <B>set_menu_format</B>
+       is  interpreted  as  a  request  not to change the current
+       value.
+
+       The function <B>menu_format</B>  returns  the  maximum-size  con-
+       straints  for the given menu into the storage addressed by
+       <B>rows</B> and <B>cols</B>.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       These routines returns one of the following:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       <B>E_POSTED</B>
+            The menu is already posted.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/menu_hook.3x.html b/doc/html/man/menu_hook.3x.html
new file mode 100644 (file)
index 0000000..59519cd
--- /dev/null
@@ -0,0 +1,136 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>menu_hook</B> - set hooks for automatic invocation by applica-
+       tions
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
+       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 *));
+       void (*)(MENU *) item_term(const MENU *menu);
+       int set_menu_init(MENU *menu, void (*func)(MENU *));
+       void (*)(MENU *) menu_init(const MENU *menu);
+       int set_menu_term(MENU *menu, void (*func)(MENU *));
+       void (*)(MENU *) menu_term(const MENU *menu);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These functions make it possible to set hook functions  to
+       be called at various points in the automatic processing of
+       input event codes by <B>menu_driver</B>.
+
+       The function <B>set_item_init</B> sets a hook  to  be  called  at
+       menu-post  time  and  each  time the selected item changes
+       (after the change).  <B>item_init</B> returns  the  current  item
+       init hook, if any (<B>NULL</B> if there is no such hook).
+
+       The  function  <B>set_item_term</B>  sets  a hook to be called at
+       menu-unpost time and each time the selected  item  changes
+       (before  the  change).  <B>item_term</B> returns the current item
+       term hook, if any (<B>NULL</B> if there is no such hook).
+
+       The function <B>set_menu_init</B> sets a hook  to  be  called  at
+       menu-post  time  and  just  after  the top row on the menu
+       changes once it is posted.  <B>menu_init</B> returns the  current
+       menu init hook, if any (<B>NULL</B> if there is no such hook).
+
+       The  function  <B>set_menu_term</B>  sets  a hook to be called at
+       menu-unpost time and just before the top row on  the  menu
+       changes  once it is posted.  <B>menu_term</B> returns the current
+       menu term hook, if any (<B>NULL</B> if there is no such hook).
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Routines that return pointers return <B>NULL</B> on error.  Other
+       routines return one of the following:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/menu_items.3x.html b/doc/html/man/menu_items.3x.html
new file mode 100644 (file)
index 0000000..d2bde33
--- /dev/null
@@ -0,0 +1,136 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>menu_items</B>  - make and break connections between items and
+       menus
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
+       int set_menu_items(MENU *menu, ITEM **items);
+       ITEM **menu_items(const MENU *menu);
+       int item_count(const MENU *menu);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The function <B>set_menu_items</B> changes the item pointer array
+       of  the  given  <I>menu</I>.   The  array must be terminated by a
+       <B>NULL</B>.
+
+       The function <B>menu_items</B> returns  the  item  array  of  the
+       given menu.
+
+       The  function  <B>item_count</B>  returns  the  count of items in
+       <I>menu</I>.
+
+
+</PRE>
+<H2>RETURN VALUES</H2><PRE>
+       The function <B>menu_items</B> returns <B>NULL</B> on error.
+
+       The function <B>item_count</B> returns <B>ERR</B>  (the  general  <B>curses</B>
+       error return value) on error.
+
+       The  function  <B>set_menu_items</B> returns one of the following
+       codes on error:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       <B>E_POSTED</B>
+            The menu is already posted.
+
+       <B>E_NOT_CONNECTED</B>
+            No items are connected to the menu.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+       The   SVr4   menu   library  documentation  specifies  the
+       <B>item_count</B> error value as -1 (which is the value of  <B>ERR</B>).
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/menu_mark.3x.html b/doc/html/man/menu_mark.3x.html
new file mode 100644 (file)
index 0000000..f2eeac9
--- /dev/null
@@ -0,0 +1,82 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>menu_mark</B> - get and set the menu mark string
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
+       int set_menu_mark(MENU *menu, const char *mark);
+       const char *menu_mark(const MENU *menu);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       In  order  to make menu selections visible on older termi-
+       nals without highlighting or color  capability,  the  menu
+       library  marks  selected  items  in  a  menu with a prefix
+       string.
+
+       The function <B>set_menu_mark</B> sets the mark  string  for  the
+       given  menu.   Calling <B>set_menu_mark</B> with a null menu item
+       will abolish the mark  string.   Note  that  changing  the
+       length  of  the  mark  string for a menu while the menu is
+       posted is likely to produce unhelpful behavior.
+
+       The default string is "-" (a dash). Calling  <B>set_menu_mark</B>
+       with a <B>NULL</B> menu argument will change this default.
+
+       The  function <B>menu_mark</B> returns the menu's mark string (or
+       <B>NULL</B> if there is none).
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       The function <B>menu_mark</B> returns <B>NULL</B> on error.   The  func-
+       tion <B>set_menu_mark</B> may return the following error codes:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  routines  emulate  the System V menu library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/menu_new.3x.html b/doc/html/man/menu_new.3x.html
new file mode 100644 (file)
index 0000000..33e39ad
--- /dev/null
@@ -0,0 +1,82 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>menu_new</B> - create and destroy menus
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
+       MENU *new_menu(ITEM **items);
+       int free_menu(MENU *menu);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  function  <B>new_menu</B>  creates a new menu connected to a
+       specified item pointer array (which  must  be  <B>NULL</B>-termi-
+       nated).
+
+       The  function  <B>free_menu</B>  disconnects  <I>menu</I>  from its item
+       array and frees the storage allocated for the menu.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       The function <B>new_menu</B> returns <B>NULL</B> on error.
+
+       The function <B>free_menu</B> returns one of the following:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       <B>E_POSTED</B>
+            The menu has already been posted.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
similarity index 60%
rename from Ada95/html/man/menu_opts.3x.html
rename to doc/html/man/menu_opts.3x.html
index 8de4b8a204d28b851e8d06794fd52a42598ea2e6..5730121fe60cb11cfdb8f5ee83c9935330dd931e 100644 (file)
@@ -1,12 +1,16 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>menu_opts</STRONG> - set and get menu options
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>menu_opts</B> - set and get menu options
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
        int set_menu_opts(MENU *menu, OPTIONS opts);
        int menu_opts_on(MENU *menu, OPTIONS opts);
        int menu_opts_off(MENU *menu, OPTIONS opts);
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       The  function  <STRONG>set_menu_opts</STRONG>  sets  all  the  given menu's
+       The  function  <B>set_menu_opts</B>  sets  all  the  given menu's
        option bits  (menu  option  bits  may  be  logically-OR'ed
        together).
 
-       The  function <STRONG>menu_opts_on</STRONG> turns on the given option bits,
+       The  function <B>menu_opts_on</B> turns on the given option bits,
        and leaves others alone.
 
-       The function <STRONG>menu_opts_off</STRONG>  turns  off  the  given  option
+       The function <B>menu_opts_off</B>  turns  off  the  given  option
        bits, and leaves others alone.
 
-       The  function  <STRONG>menu_opts</STRONG> returns the menu's current option
+       The  function  <B>menu_opts</B> returns the menu's current option
        bits.
 
        The following options are defined (all are on by default):
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       Except for <STRONG>menu_opts</STRONG>, each routine returns one of the fol-
+       Except for <B>menu_opts</B>, each routine returns one of the fol-
        lowing:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
+       <B>E_OK</B> The routine succeeded.
 
-            System error occurred (see <STRONG>errno</STRONG>).
 
-       <STRONG>E_POSTED</STRONG>
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_POSTED</B>
             The menu is already posted.
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 
 
 
+
 
 
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_pattern.3x.html b/doc/html/man/menu_pattern.3x.html
new file mode 100644 (file)
index 0000000..2db0a3a
--- /dev/null
@@ -0,0 +1,82 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>menu_pattern</B> - get and set a menu's pattern buffer
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
+       int set_menu_pattern(MENU *menu, const char *pattern);
+       char *menu_pattern(const MENU *menu);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       Every  menu  has  an  associated pattern match buffer.  As
+       input events that are printable ASCII characters come  in,
+       they  are  appended  to this match buffer and tested for a
+       match, as described in <B><A HREF="menu_driver.3x.html">menu_driver(3x)</A></B>.
+
+       The function <B>set_menu_pattern</B> sets the pattern buffer  for
+       the  given menu and tries to find the first matching item.
+       If it succeeds, that item becomes  current;  if  not,  the
+       current item does not change.
+
+       The  function  <B>menu_pattern</B>  returns the pattern buffer of
+       the given <I>menu</I>.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       The function <B>menu_pattern</B>  returns  <B>NULL</B>  on  error.   The
+       function  <B>set_menu_pattern</B>  may return the following error
+       codes:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       <B>E_NO_MATCH</B>
+            Character failed to match.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/menu_post.3x.html b/doc/html/man/menu_post.3x.html
new file mode 100644 (file)
index 0000000..ca73447
--- /dev/null
@@ -0,0 +1,136 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>menu_post</B>  -  write or erase menus from associated subwin-
+       dows
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
+       int post_menu(MENU *menu);
+       int unpost_menu(MENU *menu);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The function <B>post_menu</B> displays a menu to  its  associated
+       subwindow.   To trigger physical display of the subwindow,
+       use  <B>refresh</B>  or  some  equivalent  <B>curses</B>  routine   (the
+       implicit  <B>doupdate</B>  triggered  by  an <B>curses</B> input request
+       will do). <B>post_menu</B> resets the  selection  status  of  all
+       items.
+
+       The  function  <B>unpost_menu</B> erases menu from its associated
+       subwindow.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       These routines return one of the following:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       <B>E_POSTED</B>
+            The menu has already been posted.
+
+       <B>E_BAD_STATE</B>
+            Routine was called from an initialization or termina-
+            tion function.
+
+       <B>E_NO_ROOM</B>
+            Menu is too large for its window. You should consider
+            to use <B>set_menu_format()</B> to solve the problem.
+
+       <B>E_NOT_POSTED</B>
+            The menu has not been posted.
+
+       <B>E_NOT_CONNECTED</B>
+            No items are connected to the menu.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
similarity index 50%
rename from Ada95/html/man/menu_requestname.3x.html
rename to doc/html/man/menu_requestname.3x.html
index dd8f26e5546581d5e4e0a34c7339c52dc081f8b1..388d1fe2ba8c717143c65e65056969846fb61982 100644 (file)
@@ -1,41 +1,45 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>menu_requestname</STRONG> - handle printable menu request names
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>menu_requestname</B> - handle printable menu request names
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
        const char *menu_request_name(int request);
        int menu_request_by_name(const char *name);
 
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       The  function <STRONG>menu_request_name</STRONG> returns the printable name
+       The  function <B>menu_request_name</B> returns the printable name
        of a menu request code.
-       The function <STRONG>menu_request_by_name</STRONG> searches  in  the  name-
+       The function <B>menu_request_by_name</B> searches  in  the  name-
        table  for  a  request with the given name and returns its
        request code. Otherwise E_NO_MATCH is returned.
 
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       <STRONG>menu_request_name</STRONG> returns <STRONG>NULL</STRONG> on error and sets errno  to
-       <STRONG>E_BAD_ARGUMENT</STRONG>.
-       <STRONG>menu_request_by_name</STRONG> returns <STRONG>E_NO_MATCH</STRONG> on error.
+       <B>menu_request_name</B> returns <B>NULL</B> on error and sets errno  to
+       <B>E_BAD_ARGUMENT</B>.
+       <B>menu_request_by_name</B> returns <B>E_NO_MATCH</B> on error.
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 
 
 
+
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
similarity index 58%
rename from Ada95/html/man/menu_spacing.3x.html
rename to doc/html/man/menu_spacing.3x.html
index 8ed19c220a1ecc5700572c05dc136b9c00aa14d2..ba2cd1cdf9b992b71857513228c2943d994bd8dd 100644 (file)
@@ -1,12 +1,16 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>menu_spacing</STRONG> - Control spacing between menu items.
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>menu_spacing</B> - Control spacing between menu items.
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
        int set_menu_spacing(MENU *menu,
                             int spc_description
                             int spc_rows,
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       The  function  <STRONG>set_menu_spacing</STRONG>  sets the spacing informa-
-       tions for the menu.  <STRONG>spc_description</STRONG> controls  the  number
+       The  function  <B>set_menu_spacing</B>  sets the spacing informa-
+       tions for the menu.  <B>spc_description</B> controls  the  number
        of spaces between an item name and an item description. It
-       must not be larger than <STRONG>TABSIZE</STRONG>. The menu system  puts  in
+       must not be larger than <B>TABSIZE</B>. The menu system  puts  in
        the  middle  of  this  spacing area the pad character. The
-       remaining parts are filled with spaces.  <STRONG>spc_rows</STRONG> controls
+       remaining parts are filled with spaces.  <B>spc_rows</B> controls
        the  number of rows that are used for an item. It must not
        be larger than 3. The menu system inserts then blank lines
        between  item rows, these lines will contain the pad char-
-       acter in the appropriate positions.  <STRONG>spc_columns</STRONG>  controls
+       acter in the appropriate positions.  <B>spc_columns</B>  controls
        the number of blanks between columns of items. It must not
        be larger than TABSIZE.  A value of 0 for all the  spacing
        values  resets  them to the default, which is 1 for all of
        them.
-       The function <STRONG>menu_spacing</STRONG> passes back the spacing info for
+       The function <B>menu_spacing</B> passes back the spacing info for
        the menu. If a pointer is NULL, this specific info is sim-
        ply not returned.
 
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       Both routines return <STRONG>E_OK</STRONG> on success. <STRONG>set_menu_spacing</STRONG> may
-       return  <STRONG>E_POSTED</STRONG>  if the menu is posted, or <STRONG>E_BAD_ARGUMENT</STRONG>
+       Both routines return <B>E_OK</B> on success. <B>set_menu_spacing</B> may
+       return  <B>E_POSTED</B>  if the menu is posted, or <B>E_BAD_ARGUMENT</B>
        if one of the spacing values is out of range.
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 </PRE>
 <H2>AUTHORS</H2><PRE>
        Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
similarity index 57%
rename from Ada95/html/man/menu_userptr.3x.html
rename to doc/html/man/menu_userptr.3x.html
index 606907b2e0f55dadf1b1f8882e8f9c7393ede88a..5eebdb8f64afcd6b615eec64be8a4221637aa925 100644 (file)
@@ -1,12 +1,16 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>menu_userptr</STRONG> - associate application data with a menu item
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>menu_userptr</B> - associate application data with a menu item
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
        int set_menu_userptr(MENU *menu, void *userptr);
        void *menu_userptr(const MENU *menu);
 
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       Except  for  <STRONG>menu_userptr</STRONG>  (which  returns <STRONG>NULL</STRONG> on error),
+       Except  for  <B>menu_userptr</B>  (which  returns <B>NULL</B> on error),
        each function returns one of the following:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
+       <B>E_OK</B> The routine succeeded.
 
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 
 
 
+
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
similarity index 54%
rename from Ada95/html/man/menu_win.3x.html
rename to doc/html/man/menu_win.3x.html
index 50b879a653bbc613a3e07a7ecc3ba711df986dc1..c2fb72a640656e62d917607530cd934141cfbd9f 100644 (file)
@@ -1,13 +1,17 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>menu_win</STRONG>  - make and break menu window and subwindow asso-
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>menu_win</B>  - make and break menu window and subwindow asso-
        ciations
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
        int set_menu_win(MENU *menu, WINDOW *win);
        WINDOW *menu_win(const MENU *menu);
        int set_menu_sub(MENU *menu, WINDOW *sub);
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       Every  menu has an associated pair of <STRONG>curses</STRONG> windows.  The
+       Every  menu has an associated pair of <B>curses</B> windows.  The
        menu window displays any title and border associated  with
        the  window;  the menu subwindow displays the items of the
        menu that are currently available for selection.
 
        The first four functions get and set those windows.  It is
        not necessary to set either window; by default, the driver
-       code uses <STRONG>stdscr</STRONG> for both.
+       code uses <B>stdscr</B> for both.
 
-       In the <STRONG>set_</STRONG> functions, window argument of <STRONG>NULL</STRONG> is  treated
-       as  though  it  were  <STRONG>stsdcr</STRONG>.   A menu argument of <STRONG>NULL</STRONG> is
+       In the <B>set_</B> functions, window argument of <B>NULL</B> is  treated
+       as  though  it  were  <B>stsdcr</B>.   A menu argument of <B>NULL</B> is
        treated as a request to change  the  system  default  menu
        window or subwindow.
 
-       The  function <STRONG>scale_menu</STRONG> returns the minimum size required
-       for the subwindow of <EM>menu</EM>.
+       The  function <B>scale_menu</B> returns the minimum size required
+       for the subwindow of <I>menu</I>.
 
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       Routines that return pointers return <STRONG>NULL</STRONG> on error.   Rou-
+       Routines that return pointers return <B>NULL</B> on error.   Rou-
        tines  that  return an integer return one of the following
        error codes:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
+       <B>E_OK</B> The routine succeeded.
 
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
 
-       <STRONG>E_BAD_ARGUMENT</STRONG>
+       <B>E_BAD_ARGUMENT</B>
             Routine detected an incorrect or  out-of-range  argu-
             ment.
 
-       <STRONG>E_POSTED</STRONG>
+       <B>E_POSTED</B>
             The menu has already been posted.
 
-       <STRONG>E_NOT_CONNECTED</STRONG>
+       <B>E_NOT_CONNECTED</B>
             No items are connected to the menu.
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
 
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 
 
 
+
 
 
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
diff --git a/doc/html/man/mitem_current.3x.html b/doc/html/man/mitem_current.3x.html
new file mode 100644 (file)
index 0000000..ab74dff
--- /dev/null
@@ -0,0 +1,137 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>mitem_current</B> - set and get current_menu_item
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
+       int set_current_item(MENU *menu, const ITEM *item);
+       ITEM *current_item(const MENU *menu);
+       int set_top_row(MENU *menu, int row);
+       int top_row(const MENU *menu);
+       int item_index(const ITEM *item);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  function  <B>set_current_item</B> sets the current item (the
+       item on  which  the  menu  cursor  is  positioned).   <B>cur-</B>
+       <B>rent_item</B>  returns  a  pointer  to the current item in the
+       given menu.
+
+       The function <B>set_top_row</B> sets the top row of the  menu  to
+       show  the  given  row  (the top row is initially 0, and is
+       reset to this value whenever the <B>O_ROWMAJOR</B> option is tog-
+       gled).   The  item  leftmost on the given row becomes cur-
+       rent.  The function <B>top_row</B> returns the number of the  top
+       menu row being displayed.
+
+       The function <B>item_index</B> returns the (zero-origin) index of
+       <I>item</I> in the menu's item pointer list.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       <B>current_item</B> returns <B>NULL</B> on error.
+
+       <B>top_row</B> and <B>item_index</B>  return  <B>ERR</B>  (the  general  <B>curses</B>
+       error value) on error.
+
+       <B>set_current_item</B> and <B>set_top_row</B> return one of the follow-
+       ing:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_BAD_ARGUMENT</B>
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       <B>E_BAD_STATE</B>
+            Routine was called from an initialization or termina-
+            tion function.
+
+       <B>E_NOT_CONNECTED</B>
+            No items are connected to the menu.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  routines  emulate  the System V menu library.  They
+       were not supported on Version 7 or BSD versions.
+
+       The SVr4 menu library documentation specifies the  <B>top_row</B>
+       and  <B>index_item</B>  error  value as -1 (which is the value of
+       <B>ERR</B>).
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/mitem_name.3x.html b/doc/html/man/mitem_name.3x.html
new file mode 100644 (file)
index 0000000..803f966
--- /dev/null
@@ -0,0 +1,82 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>mitem_name</B> - get menu item name and description fields
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
+       const char *item_name(const ITEM *item);
+       const char *item_description(const ITEM *item);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  function <B>item_name</B> returns the name part of the given
+       item.
+       The function <B>item_description</B> returns the description part
+       of the given item.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       These routines returns <B>NULL</B> on error.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
similarity index 52%
rename from Ada95/html/man/mitem_new.3x.html
rename to doc/html/man/mitem_new.3x.html
index 0c8e2a14fcaf0b08f2f514b278ef78432f983b49..9918f6cf908626a219cf9e5f55acd69042f4c275 100644 (file)
@@ -1,26 +1,30 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>mitem_new</STRONG> - create and destroy menu items
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>mitem_new</B> - create and destroy menu items
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
        ITEM *new_item(const char *name, const char *description);
        int free_item(ITEM *item);
 
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       The function <STRONG>new_item</STRONG> allocates a new item and initializes
-       it  from  the <STRONG>name</STRONG> and <STRONG>description</STRONG> pointers. Please notice
+       The function <B>new_item</B> allocates a new item and initializes
+       it  from  the <B>name</B> and <B>description</B> pointers. Please notice
        that the item stores only the pointers  to  the  name  and
        description. Those pointers must be valid during the life-
        time of the item. So you  should  be  very  carefull  with
        names  or descriptions allocated on the stack of some rou-
        tines.
-       The function <STRONG>free_item</STRONG> de-allocates an item. Please notice
+       The function <B>free_item</B> de-allocates an item. Please notice
        that  it  is  the  responsibility  of  the  application to
        release the memory for the name or the description of  the
        item.
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       The function <STRONG>new_item</STRONG> returns <STRONG>NULL</STRONG> on error.
+       The function <B>new_item</B> returns <B>NULL</B> on error.
 
-       The function <STRONG>free_item</STRONG> returns one of the following:
+       The function <B>free_item</B> returns one of the following:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
+       <B>E_OK</B> The routine succeeded.
 
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
 
-       <STRONG>E_BAD_ARGUMENT</STRONG>
+       <B>E_BAD_ARGUMENT</B>
             Routine  detected  an incorrect or out-of-range argu-
             ment.
 
-       <STRONG>E_CONNECTED</STRONG>
+       <B>E_CONNECTED</B>
             Item is connected to a menu.
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
        Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
+
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
diff --git a/doc/html/man/mitem_opts.3x.html b/doc/html/man/mitem_opts.3x.html
new file mode 100644 (file)
index 0000000..17abe42
--- /dev/null
@@ -0,0 +1,82 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>mitem_opts</B> - set and get menu item options
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
+       int set_item_opts(ITEM *item, OPTIONS opts);
+       int item_opts_on(ITEM *item, OPTIONS opts);
+       int item_opts_off(ITEM *item, OPTIONS opts);
+       OPTIONS item_opts(const ITEM *item);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  function  <B>set_item_opts</B>  sets  all  the  given item's
+       option bits  (menu  option  bits  may  be  logically-OR'ed
+       together).
+
+       The  function <B>item_opts_on</B> turns on the given option bits,
+       and leaves others alone.
+
+       The function <B>item_opts_off</B>  turns  off  the  given  option
+       bits, and leaves others alone.
+
+       The  function  <B>item_opts</B> returns the item's current option
+       bits.
+
+       There is only one defined option bit  mask,  <B>O_SELECTABLE</B>.
+       When this is on, the item may be selected during menu pro-
+       cessing.  This option defaults to on.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Except for <B>item_opts</B>, each routine returns one of the fol-
+       lowing:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
similarity index 57%
rename from Ada95/html/man/mitem_userptr.3x.html
rename to doc/html/man/mitem_userptr.3x.html
index 4d1616b67346b53fae942409bd0e79b2c608343e..7d7c5618e01ece08e3e90ca34920fcc7f3b443f6 100644 (file)
@@ -1,13 +1,17 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>mitem_userptr</STRONG>  -  associate  application  data with a menu
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>mitem_userptr</B>  -  associate  application  data with a menu
        item
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
        int set_item_userptr(ITEM *item, void *userptr);
        void *item_userptr(const ITEM *item);
 
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       Except  for  <STRONG>item_userptr</STRONG>  (which  returns <STRONG>NULL</STRONG> on error),
+       Except  for  <B>item_userptr</B>  (which  returns <B>NULL</B> on error),
        each function returns one of the following:
 
-       <STRONG>E_OK</STRONG> The routine succeeded.
+       <B>E_OK</B> The routine succeeded.
 
-       <STRONG>E_SYSTEM_ERROR</STRONG>
-            System error occurred (see <STRONG>errno</STRONG>).
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 
 
 
+
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
diff --git a/doc/html/man/mitem_value.3x.html b/doc/html/man/mitem_value.3x.html
new file mode 100644 (file)
index 0000000..a83ece2
--- /dev/null
@@ -0,0 +1,82 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>mitem_value</B> - set and get menu item values
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
+       int set_item_value(ITEM *item, bool value);
+       bool item_value(const ITEM *item);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       If  you  turn  off  the menu option <B>O_ONEVALUE</B> (e.g., with
+       <B>set_menu_opts</B> or <B>menu_opts_off</B>;  see  <B><A HREF="menu_opts.3x.html">menu_opts(3x)</A></B>),  the
+       menu becomes multi-valued; that is, more than one item may
+       simultaneously be selected.
+
+       In a multi_valued menu, you  can  used  <B>set_item_value</B>  to
+       select the given menu item (second argument <B>TRUE</B>) or dese-
+       lect it (second argument <B>FALSE</B>).
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       The function <B>set_item_value</B> returns one of the following:
+
+       <B>E_OK</B> The routine succeeded.
+
+       <B>E_SYSTEM_ERROR</B>
+            System error occurred (see <B>errno</B>).
+
+       <B>E_REQUEST_DENIED</B>
+            The menu driver could not process the request.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These  routines  emulate  the System V menu library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
similarity index 59%
rename from Ada95/html/man/mitem_visible.3x.html
rename to doc/html/man/mitem_visible.3x.html
index 86c4090aecfe1409ff305d671dc8f69aeb96cad8..bc105a0a9a15fa328b4db24952f8883b0cb95c0c 100644 (file)
@@ -1,12 +1,16 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>mitem_visible</STRONG> - check visibility of a menu item
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>mitem_visible</B> - check visibility of a menu item
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+       <B>#include</B> <B>&lt;menu.h&gt;</B>
        bool item_visible(const ITEM *item);
 
 
 
 </PRE>
 <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>.
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG><menu.h></STRONG> automatically includes the header
-       file <STRONG><curses.h></STRONG>.
+       The header file <B>&lt;menu.h&gt;</B> automatically includes the header
+       file <B>&lt;curses.h&gt;</B>.
 
 
 </PRE>
 
 
 
+
 
 
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
diff --git a/doc/html/man/ncurses.3x.html b/doc/html/man/ncurses.3x.html
new file mode 100644 (file)
index 0000000..24ba4e7
--- /dev/null
@@ -0,0 +1,898 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>ncurses</B> - CRT screen handling and optimization package
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  <B>ncurses</B>  library  routines  give the user a terminal-
+       independent method of updating character screens with rea-
+       sonable   optimization.    This  implementation  is  ``new
+       curses'' (ncurses) and is  the  approved  replacement  for
+       4.4BSD classic curses, which has been discontinued.
+
+       The  <B>ncurses</B>  routines  emulate  the <B><A HREF="ncurses.3x.html">curses(3x)</A></B> library of
+       System V Release 4 UNIX, and the XPG4 curses standard (XSI
+       curses)  but the <B>ncurses</B> 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
+       <B>-lncurses</B> option, or (if it has been generated)  with  the
+       debugging  library  <B>-lncurses_g</B>.   (Your system integrator
+       may also have installed these libraries  under  the  names
+       <B>-lcurses</B> and <B>-lcurses_g</B>.)  The ncurses_g library generates
+       trace logs (in a file called 'trace' in the current direc-
+       tory) that describe curses actions.
+
+       The  <B>ncurses</B>  package supports: overall screen, window and
+       pad manipulation; output to windows and pads; reading ter-
+       minal  input;  control  over terminal and <B>curses</B> 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 <B>initscr</B> or <B>newterm</B>
+       must  be called before any of the other routines that deal
+       with windows and screens are  used.   The  routine  <B>endwin</B>
+       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:
+
+             <B>initscr();</B> <B>cbreak();</B> <B>noecho();</B>
+
+       Most programs would additionally use the sequence:
+
+             <B>nonl();</B>
+             <B>intrflush(stdscr,</B> <B>FALSE);</B>
+             <B>keypad(stdscr,</B> <B>TRUE);</B>
+
+       Before a <B>curses</B> program is run, the tab stops of the  ter-
+       minal  should  be  set  and its initialization strings, if
+       defined, must be output.  This can be  done  by  executing
+       the <B>tput</B> <B>init</B> command after the shell environment variable
+       <B>TERM</B> has been exported.  <B>tset(1)</B>  is  usually  responsible
+       for doing this.  [See <B><A HREF="terminfo.5.html">terminfo(5)</A></B> for further details.]
+
+       The  <B>ncurses</B>  library  permits manipulation of data struc-
+       tures, called <I>windows</I>, which can be  thought  of  as  two-
+       dimensional  arrays of characters representing all or part
+       of a CRT screen.  A default window called <B>stdscr</B>, which is
+       the  size of the terminal screen, is supplied.  Others may
+       be created with <B>newwin</B>.
+
+       Note that <B>curses</B>  does  not  handle  overlapping  windows,
+       that's  done by the <B><A HREF="panel.3x.html">panel(3x)</A></B> library. This means that you
+       can either use <B>stdscr</B> or divide the screen into tiled win-
+       dows  and  not  using  <B>stdscr</B>  at all. Mixing the two will
+       result in unpredictable, and undesired, effects.
+
+       Windows are referred to by variables declared as <B>WINDOW</B> <B>*</B>.
+       These   data  structures  are  manipulated  with  routines
+       described here and elsewhere in the <B>ncurses</B> manual  pages.
+       Among  which  the  most basic routines are <B>move</B> and <B>addch</B>.
+       More general versions of these routines are included  with
+       names  beginning  with  <B>w</B>,  allowing the user to specify a
+       window.  The routines not beginning with <B>w</B> affect <B>stdscr</B>.)
+
+       After  using  routines  to manipulate a window, <B>refresh</B> is
+       called, telling <B>curses</B> to make the user's CRT screen  look
+       like  <B>stdscr</B>.   The characters in a window are actually of
+       type <B>chtype</B>, (character and attribute data) so that  other
+       information  about  the  character may also be stored with
+       each character.
+
+       Special windows  called  <I>pads</I>  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 <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B> 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, <B>curses</B> 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
+       <B>&lt;curses.h&gt;</B>, such as <B>A_REVERSE</B>, <B>ACS_HLINE</B>, and <B>KEY_LEFT</B>.
+
+       If the environment variables <B>LINES</B> and <B>COLUMNS</B> are set, or
+       if  the program is executing in a window environment, line
+       and column information in the  environment  will  override
+       information read by <I>terminfo</I>.  This would effect a program
+       running in an AT&amp;T 630 layer, for example, where the  size
+       of a screen is changeable (see <B>ENVIRONMENT</B>).
+
+       If  the environment variable <B>TERMINFO</B> is defined, any pro-
+       gram using <B>curses</B> checks for a local  terminal  definition
+       before  checking  in  the standard place.  For example, if
+       <B>TERM</B> is set to <B>att4424</B>, then the compiled terminal defini-
+       tion is found in
+
+             <B>@DATADIR@/terminfo/a/att4424</B>.
+
+       (The <B>a</B> is copied from the first letter of <B>att4424</B> to avoid
+       creation of huge directories.)  However,  if  <B>TERMINFO</B>  is
+       set to <B>$HOME/myterms</B>, <B>curses</B> first checks
+
+             <B>$HOME/myterms/a/att4424</B>,
+
+       and if that fails, it then checks
+
+             <B>@DATADIR@/terminfo/a/att4424</B>.
+
+       This  is useful for developing experimental definitions or
+       when write permission in <B>@DATADIR@/terminfo</B> is not  avail-
+       able.
+
+       The  integer  variables  <B>LINES</B>  and  <B>COLS</B>  are  defined in
+       <B>&lt;curses.h&gt;</B> and will be filled in by <B>initscr</B> with the  size
+       of the screen.  The constants <B>TRUE</B> and <B>FALSE</B> have the val-
+       ues <B>1</B> and <B>0</B>, respectively.
+
+       The <B>curses</B> routines also  define  the  <B>WINDOW</B>  <B>*</B>  variable
+       <B>curscr</B> which is used for certain low-level operations like
+       clearing and redrawing a screen containing  garbage.   The
+       <B>curscr</B> can be used in only a few routines.
+
+
+   <B>Routine</B> <B>and</B> <B>Argument</B> <B>Names</B>
+       Many  <B>curses</B> routines have two or more versions.  The rou-
+       tines prefixed with <B>w</B> require a window argument.  The rou-
+       tines prefixed with <B>p</B> require a pad argument.  Those with-
+       out a prefix generally use <B>stdscr</B>.
+
+       The routines prefixed with <B>mv</B> require a <I>y</I> and <I>x</I> coordinate
+       to  move to before performing the appropriate action.  The
+       <B>mv</B> routines imply a call to <B>move</B> before the  call  to  the
+       other  routine.  The coordinate <I>y</I> always refers to the row
+       (of the window), and <I>x</I> always refers to the  column.   The
+       upper left-hand corner is always (0,0), not (1,1).
+
+       The routines prefixed with <B>mvw</B> take both a window argument
+       and <I>x</I> and <I>y</I> coordinates.  The window  argument  is  always
+       specified before the coordinates.
+
+       In  each  case, <I>win</I> is the window affected, and <I>pad</I> is the
+       pad affected; <I>win</I> and <I>pad</I>  are  always  pointers  to  type
+       <B>WINDOW</B>.
+
+       Option setting routines require a Boolean flag <I>bf</I> with the
+       value <B>TRUE</B> or <B>FALSE</B>; <I>bf</I> is always of type <B>bool</B>.  The vari-
+       ables  <I>ch</I>  and <I>attrs</I> below are always of type <B>chtype</B>.  The
+       types <B>WINDOW</B>, <B>SCREEN</B>, <B>bool</B>,  and  <B>chtype</B>  are  defined  in
+       <B>&lt;curses.h&gt;</B>.   The  type  <B>TERMINAL</B>  is defined in <B>&lt;term.h&gt;</B>.
+       All other arguments are integers.
+
+
+   <B>Routine</B> <B>Name</B> <B>Index</B>
+       The following table lists each <B>curses</B> 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.
+
+               <B>curses</B> Routine Name     Manual Page Name
+               -------------------------------------------
+               COLOR_PAIR              <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
+               PAIR_NUMBER             <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               _nc_tracebits           <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+               _traceattr              <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+               _traceattr2             <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+               _tracechar              <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+               _tracechtype            <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+               _tracechtype2           <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+               _tracedump              <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+               _tracef                 <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+               _tracemouse             <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+               addch                   <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
+               addchnstr               <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
+               addchstr                <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
+               addnstr                 <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
+               addstr                  <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
+               assume_default_colors   <B><A HREF="dft_fgbg.3x.html">dft_fgbg(3x)</A></B>*
+               attr_get                <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               attr_off                <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               attr_on                 <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               attr_set                <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               attroff                 <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               attron                  <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               attrset                 <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               baudrate                <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
+               beep                    <B><A HREF="curs_beep.3x.html">curs_beep(3x)</A></B>
+               bkgd                    <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>
+               bkgdset                 <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>
+               border                  <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+               box                     <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+               can_change_color        <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
+               cbreak                  <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               chgat                   <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               clear                   <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
+               clearok                 <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+
+               clrtobot                <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
+               clrtoeol                <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
+               color_content           <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
+               color_set               <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               copywin                 <B><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></B>
+               curs_set                <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+               curses_version          <B><A HREF="curs_extend.3x.html">curs_extend(3x)</A></B>*
+               def_prog_mode           <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+               def_shell_mode          <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+               define_key              <B><A HREF="define_key.3x.html">define_key(3x)</A></B>*
+               del_curterm             <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+               delay_output            <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+               delch                   <B><A HREF="curs_delch.3x.html">curs_delch(3x)</A></B>
+               deleteln                <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
+               delscreen               <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
+               delwin                  <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+               derwin                  <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+               doupdate                <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+               dupwin                  <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+               echo                    <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               echochar                <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
+               endwin                  <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
+               erase                   <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
+               erasechar               <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
+               filter                  <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+               flash                   <B><A HREF="curs_beep.3x.html">curs_beep(3x)</A></B>
+               flushinp                <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+               getbegyx                <B><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></B>
+               getbkgd                 <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>
+               getch                   <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>
+               getmaxyx                <B><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></B>
+               getmouse                <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
+               getnstr                 <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
+               getparyx                <B><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></B>
+               getstr                  <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
+               getsyx                  <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+               getwin                  <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+               getyx                   <B><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></B>
+               halfdelay               <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               has_colors              <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
+               has_ic                  <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
+               has_il                  <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
+               has_key                 <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>*
+               hline                   <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+               idcok                   <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+               idlok                   <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+               immedok                 <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+               inch                    <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>
+               inchnstr                <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
+               inchstr                 <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
+               init_color              <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
+               init_pair               <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
+               initscr                 <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
+
+               innstr                  <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
+               insch                   <B><A HREF="curs_insch.3x.html">curs_insch(3x)</A></B>
+               insdelln                <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
+               insertln                <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
+               insnstr                 <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
+               insstr                  <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
+               instr                   <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
+               intrflush               <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               is_linetouched          <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
+               is_wintouched           <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
+               isendwin                <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
+               keybound                <B><A HREF="keybound.3x.html">keybound(3x)</A></B>*
+               keyname                 <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+               keyok                   <B><A HREF="keyok.3x.html">keyok(3x)</A></B>*
+               keypad                  <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               killchar                <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
+               leaveok                 <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+               longname                <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
+               mcprint                 <B><A HREF="curs_print.3x.html">curs_print(3x)</A></B>*
+               meta                    <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               mouse_trafo             <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
+               mouseinterval           <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
+               mousemask               <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
+               move                    <B><A HREF="curs_move.3x.html">curs_move(3x)</A></B>
+               mvaddch                 <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
+               mvaddchnstr             <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
+               mvaddchstr              <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
+               mvaddnstr               <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
+               mvaddstr                <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
+               mvchgat                 <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               mvcur                   <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+               mvdelch                 <B><A HREF="curs_delch.3x.html">curs_delch(3x)</A></B>
+               mvderwin                <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+               mvgetch                 <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>
+               mvgetnstr               <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
+               mvgetstr                <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
+               mvhline                 <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+               mvinch                  <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>
+               mvinchnstr              <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
+               mvinchstr               <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
+               mvinnstr                <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
+               mvinsch                 <B><A HREF="curs_insch.3x.html">curs_insch(3x)</A></B>
+               mvinsnstr               <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
+               mvinsstr                <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
+               mvinstr                 <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
+               mvprintw                <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
+               mvscanw                 <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
+               mvvline                 <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+               mvwaddch                <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
+               mvwaddchnstr            <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
+               mvwaddchstr             <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
+               mvwaddnstr              <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
+               mvwaddstr               <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
+
+               mvwchgat                <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               mvwdelch                <B><A HREF="curs_delch.3x.html">curs_delch(3x)</A></B>
+               mvwgetch                <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>
+               mvwgetnstr              <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
+               mvwgetstr               <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
+               mvwhline                <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+               mvwin                   <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+               mvwinch                 <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>
+               mvwinchnstr             <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
+               mvwinchstr              <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
+               mvwinnstr               <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
+               mvwinsch                <B><A HREF="curs_insch.3x.html">curs_insch(3x)</A></B>
+               mvwinsnstr              <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
+               mvwinsstr               <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
+               mvwinstr                <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
+               mvwprintw               <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
+               mvwscanw                <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
+               mvwvline                <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+               napms                   <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+               newpad                  <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>
+               newterm                 <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
+               newwin                  <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+               nl                      <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+               nocbreak                <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               nodelay                 <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               noecho                  <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               nonl                    <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+               noqiflush               <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               noraw                   <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               notimeout               <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               overlay                 <B><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></B>
+               overwrite               <B><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></B>
+               pair_content            <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
+               pechochar               <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>
+               pnoutrefresh            <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>
+               prefresh                <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>
+               printw                  <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
+               putp                    <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+               putwin                  <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+               qiflush                 <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               raw                     <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               redrawwin               <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+               refresh                 <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+               reset_prog_mode         <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+               reset_shell_mode        <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+               resetty                 <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+               resizeterm              <B><A HREF="resizeterm.3x.html">resizeterm(3x)</A></B>*
+               restartterm             <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+               ripoffline              <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+               savetty                 <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+               scanw                   <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
+               scr_dump                <B><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></B>
+               scr_init                <B><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></B>
+
+               scr_restore             <B><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></B>
+               scr_set                 <B><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></B>
+               scrl                    <B><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></B>
+               scroll                  <B><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></B>
+               scrollok                <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+               set_curterm             <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+               set_term                <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
+               setscrreg               <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+               setsyx                  <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+               setterm                 <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+               setupterm               <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+               slk_attr                <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>*
+               slk_attr_off            <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+               slk_attr_on             <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+               slk_attr_set            <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+               slk_attroff             <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+               slk_attron              <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+               slk_attrset             <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+               slk_clear               <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+               slk_color               <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+               slk_init                <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+               slk_label               <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+               slk_noutrefresh         <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+               slk_refresh             <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+               slk_restore             <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+               slk_set                 <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+               slk_touch               <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+               standend                <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               standout                <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               start_color             <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
+               subpad                  <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>
+               subwin                  <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+               syncok                  <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+               termattrs               <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
+               termname                <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
+               tgetent                 <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
+               tgetflag                <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
+               tgetnum                 <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
+               tgetstr                 <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
+               tgoto                   <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
+               tigetflag               <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+               tigetnum                <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+               tigetstr                <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+               timeout                 <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               touchline               <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
+               touchwin                <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
+               tparm                   <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+               tputs                   <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
+               tputs                   <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+               trace                   <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+               typeahead               <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               unctrl                  <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+               ungetch                 <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>
+
+               ungetmouse              <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
+               untouchwin              <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
+               use_default_colors      <B><A HREF="dft_fgbg.3x.html">dft_fgbg(3x)</A></B>*
+               use_env                 <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+               use_extended_names      <B><A HREF="curs_extend.3x.html">curs_extend(3x)</A></B>*
+               vidattr                 <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+               vidputs                 <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+               vline                   <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+               vw_printw               <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
+               vw_scanw                <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
+               vwprintw                <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
+               vwscanw                 <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
+               waddch                  <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
+               waddchnstr              <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
+               waddchstr               <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
+               waddnstr                <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
+               waddstr                 <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
+               wattr_get               <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               wattr_off               <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               wattr_on                <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               wattr_set               <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               wattroff                <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               wattron                 <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               wattrset                <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               wbkgd                   <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>
+               wbkgdset                <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>
+               wborder                 <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+               wchgat                  <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               wclear                  <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
+               wclrtobot               <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
+               wclrtoeol               <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
+               wcolor_set              <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               wcursyncup              <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+               wdelch                  <B><A HREF="curs_delch.3x.html">curs_delch(3x)</A></B>
+               wdeleteln               <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
+               wechochar               <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
+               wenclose                <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
+               werase                  <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
+               wgetch                  <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>
+               wgetnstr                <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
+               wgetstr                 <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
+               whline                  <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+               winch                   <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>
+               winchnstr               <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
+               winchstr                <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
+               winnstr                 <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
+               winsch                  <B><A HREF="curs_insch.3x.html">curs_insch(3x)</A></B>
+               winsdelln               <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
+               winsertln               <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
+               winsnstr                <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
+               winsstr                 <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
+               winstr                  <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
+               wmouse_trafo            <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
+
+               wmove                   <B><A HREF="curs_move.3x.html">curs_move(3x)</A></B>
+               wnoutrefresh            <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+               wprintw                 <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
+               wredrawln               <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+               wrefresh                <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+               wresize                 <B><A HREF="wresize.3x.html">wresize(3x)</A></B>*
+               wscanw                  <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
+               wscrl                   <B><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></B>
+               wsetscrreg              <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+               wstandend               <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               wstandout               <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+               wsyncdown               <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+               wsyncup                 <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+               wtimeout                <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+               wtouchln                <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
+               wvline                  <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Routines  that  return  an integer return <B>ERR</B> upon failure
+       and an integer value other than <B>ERR</B> upon  successful  com-
+       pletion,  unless  otherwise  noted in the routine descrip-
+       tions.
+
+       All macros return the  value  of  the  <B>w</B>  version,  except
+       <B>setscrreg</B>,  <B>wsetscrreg</B>,  <B>getyx</B>,  <B>getbegyx</B>,  <B>getmaxyx</B>.  The
+       return values of <B>setscrreg</B>, <B>wsetscrreg</B>,  <B>getyx</B>,  <B>getbegyx</B>,
+       and <B>getmaxyx</B> are undefined (<I>i</I>.<I>e</I>., these should not be used
+       as the right-hand side of assignment statements).
+
+       Routines that return pointers return <B>NULL</B> on error.
+
+
+</PRE>
+<H2>ENVIRONMENT</H2><PRE>
+       The following environment symbols are useful for customiz-
+       ing the runtime behavior of the <B>ncurses</B> 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 <B>ncurses</B> 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 <B>cmdch</B> capability) of the  loaded  terminfo
+            entries  to  the value of this symbol.  Very few ter-
+            minfo entries provide this feature.
+
+       COLUMNS
+            Specify  the  width  of  the  screen  in  characters.
+            Applications  running in a windowing environment usu-
+            ally 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,
+            <B>ncurses</B>  uses  the size which may be specified in the
+            terminfo database (i.e., the <B>cols</B> 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, <B>lines</B> and <B>cols</B> should not be specified
+            in a terminal description for terminals which are run
+            as emulations.
+
+            Use the <B>use_env</B> 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 vari-
+            able 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  char-
+            acter  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  <B>ncurses</B> 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.
+
+            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, <B>ncurses</B> 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 applica-
+            tions.  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., tim-
+            ing.  Unless a hardware terminal is interfaced into a
+            terminal concentrator (which does flow  control),  it
+            (or  your application) must manage dataflow, prevent-
+            ing 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 <I>flash</I>.
+
+       NCURSES_NO_SETBUF
+            Normally <B>ncurses</B> enables buffered output during  ter-
+            minal  initialization.   This  is  done  (as  in SVr4
+            curses) for performance reasons.   For  testing  pur-
+            poses, both of <B>ncurses</B> 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 <B>ncurses</B> debugging library
+            checks the NCURSES_TRACE symbol.  If it  is  defined,
+            to a numeric value, <B>ncurses</B> calls the <B>trace</B> function,
+            using that value as the argument.
+
+            The argument values, which are defined  in  <B>curses.h</B>,
+            provide  several  types of information.  When running
+            with traces enabled, your application will write  the
+            file <B>trace</B> to the current directory.
+
+       TERM Denotes  your  terminal  type.  Each terminal type is
+            distinct, though many are similar.
+
+       TERMCAP
+            If the <B>ncurses</B> library has been configured with <I>term-</I>
+            <I>cap</I>  support,  <B>ncurses</B>  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  <B>ncurses</B>  to  ignore the usual place for this
+            information, e.g., /etc/termcap.
+
+       TERMINFO
+            Overrides the directory in which <B>ncurses</B> 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 <B>ncurses</B> 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  termi-
+            nal  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  <B>ncurses</B>
+            checks  the TERMPATH symbol.  This is a list of file-
+            names  separated  by  colons  (i.e.,  ":").   If  the
+            TERMPATH  symbol  is  not  set,  <B>ncurses</B> 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  ter-
+            minal capability database
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="terminfo.5.html">terminfo(5)</A></B>  and  3x  pages  whose names begin "curs_" for
+       detailed routine descriptions.
+
+
+</PRE>
+<H2>EXTENSIONS</H2><PRE>
+       The  <B>ncurses</B>  library  can  be  compiled  with  an  option
+       (<B>-DUSE_GETCAP</B>) that falls back to the old-style /etc/term-
+       cap file if the terminal setup code cannot find a terminfo
+       entry  corresponding  to <B>TERM</B>.  Use of this feature is not
+       recommended, as it essentially includes an entire  termcap
+       compiler  in the <B>ncurses</B> startup code, at significant cost
+       in core and startup cycles.
+
+       The <B>ncurses</B>  library  includes  facilities  for  capturing
+       mouse  events  on certain terminals (including xterm). See
+       the <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B> manual page for details.
+
+       The <B>ncurses</B> library includes facilities for responding  to
+       window  resizing  events,  e.g., when running in an xterm.
+       See the <B><A HREF="resizeterm.3x.html">resizeterm(3x)</A></B> and <B><A HREF="wresize.3x.html">wresize(3x)</A></B>  manual  pages  for
+       details.   In addition, the library may be configured with
+       a SIGWINCH handler.
+
+       The <B>ncurses</B> 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  <B><A HREF="define_key.3x.html">define_key(3x)</A></B>  and  <B><A HREF="keyok.3x.html">keyok(3x)</A></B>  manual pages for
+       details.
+
+       The <B>ncurses</B> library can exploit the capabilities of termi-
+       nals  which  implement the ISO-6429 SGR 39 and SGR 49 con-
+       trols, 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  col-
+       ored  text  on  a  background  whose color is set indepen-
+       dently, providing better  control  over  color  contrasts.
+       See the <B><A HREF="use_default_colors.3x.html">use_default_colors(3x)</A></B> manual page for details.
+
+       The  <B>ncurses</B>  library  includes  a  function for directing
+       application output to a printer attached to  the  terminal
+       device.  See the <B><A HREF="curs_print.3x.html">curs_print(3x)</A></B> manual page for details.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The   <B>ncurses</B>   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: <B>add_wch</B>, <B>add_wchnstr</B>, <B>add_wchstr</B>,  <B>addnw-</B>
+       <B>str</B>,  <B>addwstr</B>,  <B>bkgrnd</B>,  <B>bkgrndset</B>,  <B>border_set</B>,  <B>box_set</B>,
+       <B>echo_wchar</B>,  <B>erasewchar</B>,  <B>get_wch</B>,  <B>get_wstr</B>,   <B>getbkgrnd</B>,
+       <B>getcchar</B>,   <B>getn_wstr</B>,   <B>getwchtype</B>,   <B>hline_set</B>,  <B>in_wch</B>,
+       <B>in_wchnstr</B>,  <B>in_wchstr</B>,   <B>innwstr</B>,   <B>ins_nwstr</B>,   <B>ins_wch</B>,
+       <B>ins_wstr</B>,  <B>inwchnstr</B>,  <B>inwchstr</B>,  <B>inwstr</B>,  <B>key_name</B>, <B>kill-</B>
+       <B>wchar</B>, <B>mvadd_wch</B>, <B>mvadd_wchnstr</B>, <B>mvadd_wchstr</B>, <B>mvaddnwstr</B>,
+       <B>mvaddwstr</B>,   <B>mvget_wch</B>,   <B>mvget_wstr</B>,   <B>mvgetn_wstr</B>,  <B>mvh-</B>
+       <B>line_set</B>,  <B>mvin_wch</B>,  <B>mvinnwstr</B>,  <B>mvins_nwstr</B>,  <B>mvins_wch</B>,
+       <B>mvins_wstr</B>, <B>mvinwchnstr</B>, <B>mvinwchstr</B>, <B>mvinwchstr</B>, <B>mvinwstr</B>,
+       <B>mvvline_set</B>,  <B>mvwadd_wch</B>,  <B>mvwadd_wchnstr</B>,  <B>mvwadd_wchstr</B>,
+       <B>mvwaddnwstr</B>,     <B>mvwaddwstr</B>,     <B>mvwget_ch</B>,    <B>mvwget_wch</B>,
+       <B>mvwget_wstr</B>,   <B>mvwgetn_wstr</B>,   <B>mvwhline_set</B>,    <B>mvwin_wch</B>,
+       <B>mvwin_wchnstr</B>,   <B>mvwin_wchstr</B>,  <B>mvwinnwstr</B>,  <B>mvwins_nwstr</B>,
+       <B>mvwins_wch</B>, <B>mvwins_wstr</B>, <B>mvwinwchnstr</B>.   <B>mvwinwstr</B>,  <B>mvwv-</B>
+       <B>line_set</B>,  <B>pecho_wchar</B>,  <B>setcchar</B>,  <B>slk_wset</B>,  <B>term_attrs</B>,
+       <B>unget_wch</B>,  <B>vhline_set</B>,  <B>vid_attr</B>,  <B>vid_puts</B>,   <B>vline_set</B>,
+       <B>wadd_wch</B>,  <B>wadd_wchnstr</B>, <B>wadd_wchstr</B>, <B>waddnwstr</B>, <B>waddwstr</B>,
+       <B>waddwstr</B>, <B>wbkgrnd</B>,  <B>wbkgrndset</B>,  <B>wbkgrndset</B>,  <B>wborder_set</B>,
+       <B>wecho_wchar</B>, <B>wecho_wchar</B>, <B>wget_wch</B>, <B>wget_wstr</B>, <B>wgetbkgrnd</B>,
+       <B>wgetn_wstr</B>, <B>whline_set</B>, <B>win_wch</B>, <B>win_wchnstr</B>,  <B>win_wchstr</B>,
+       <B>winnwstr</B>,  <B>wins_nwstr</B>,  <B>wins_wch</B>,  <B>wins_wstr</B>,  <B>winwchnstr</B>,
+       <B>winwchstr</B>, <B>winwstr</B>, <B>wunctrl</B>, <B>wvline_set</B>,
+
+       A small number of local differences (that  is,  individual
+       differences  between the XSI Curses and <B>ncurses</B> calls) are
+       described in  <B>PORTABILITY</B>  sections  of  the  library  man
+       pages.
+
+       The routine <B>has_key</B> is not part of XPG4, nor is it present
+       in SVr4.  See the <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B> manual page for  details.
+
+       The  routine  <B>slk_attr</B> is not part of XPG4, nor is it pre-
+       sent in  SVr4.   See  the  <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>  manual  page  for
+       details.
+
+       The  routines <B>getmouse</B>, <B>mousemask</B>, <B>ungetmouse</B>, <B>mouseinter-</B>
+       <B>val</B>, and <B>wenclose</B> relating to mouse  interfacing  are  not
+       part  of  XPG4,  nor  are  they  present in SVr4.  See the
+       <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B> manual page for details.
+
+       The routine <B>mcprint</B> was not present in any previous curses
+       implementation.   See  the  <B><A HREF="curs_print.3x.html">curs_print(3x)</A></B> manual page for
+       details.
+
+       The routine <B>wresize</B> is not part of XPG4, nor is it present
+       in SVr4.  See the <B><A HREF="wresize.3x.html">wresize(3x)</A></B> manual page for details.
+
+       In  historic curses versions, delays embedded in the capa-
+       bilities <B>cr</B>, <B>ind</B>, <B>cub1</B>, <B>ff</B> and <B>tab</B> 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 <B>char</B> <B>*const</B> (or
+       <B>cchar_t</B>  <B>*const</B>,  or  <B>wchar_t</B>  <B>*const</B>,  or  <B>void</B>  <B>*const</B>).
+       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 declara-
+       tion <B>const</B> <B>char</B> <B>*x</B> is a modifiable pointer to unmodifiable
+       data, but <B>char</B> <B>*const</B> <B>x</B>' is  an  unmodifiable  pointer  to
+       modifiable  data.  Given that C passes arguments by value,
+       <B>&lt;type&gt;</B> <B>*const</B> as a formal type is at best  dubious.   Some
+       compilers  choke  on  the  prototypes.  Therefore, in this
+       implementation, they have been changed to <B>const</B>  <B>&lt;type&gt;</B>  <B>*</B>
+       globally.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The  header  file  <B>&lt;curses.h&gt;</B>  automatically  includes the
+       header files <B>&lt;stdio.h&gt;</B> and <B>&lt;unctrl.h&gt;</B>.
+
+       If standard output from a <B>ncurses</B> 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, Thomas E. Dickey.
+       Based on pcurses by Pavel Curtis.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/panel.3x.html b/doc/html/man/panel.3x.html
new file mode 100644 (file)
index 0000000..a07930d
--- /dev/null
@@ -0,0 +1,194 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       panel - panel stack extension for curses
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>#include</B> <B>&lt;panel.h&gt;</B>
+
+       <B>cc</B> <B>[flags]</B> <B>sourcefiles</B> <B>-lpanel</B> <B>-lncurses</B>
+
+       <B>PANEL</B> <B>*new_panel(WINDOW</B> <B>*win)</B>
+       <B>int</B> <B>bottom_panel(PANEL</B> <B>*pan)</B>
+       <B>int</B> <B>top_panel(PANEL</B> <B>*pan)</B>
+       <B>int</B> <B>show_panel(PANEL</B> <B>*pan)</B>
+       <B>void</B> <B>update_panels();</B>
+       <B>int</B> <B>hide_panel(PANEL</B> <B>*pan)</B>
+       <B>WINDOW</B> <B>*panel_window(const</B> <B>PANEL</B> <B>*pan)</B>
+       <B>int</B> <B>replace_panel(PANEL</B> <B>*pan,</B> <B>WINDOW</B> <B>*window)</B>
+       <B>int</B> <B>move_panel(PANEL</B> <B>*pan,</B> <B>int</B> <B>starty,</B> <B>int</B> <B>startx)</B>
+       <B>int</B> <B>panel_hidden(const</B> <B>PANEL</B> <B>*pan)</B>
+       <B>PANEL</B> <B>*panel_above(const</B> <B>PANEL</B> <B>*pan)</B>
+       <B>PANEL</B> <B>*panel_below(const</B> <B>PANEL</B> <B>*pan)</B>
+       <B>int</B> <B>set_panel_userptr(PANEL</B> <B>*pan,</B> <B>const</B> <B>void</B> <B>*ptr)</B>
+       <B>const</B> <B>void</B> <B>*panel_userptr(const</B> <B>PANEL</B> <B>*pan)</B>
+       <B>int</B> <B>del_panel(PANEL</B> <B>*pan)</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       Panels  are  <B><A HREF="ncurses.3x.html">curses(3x)</A></B>  windows with the added feature of
+       depth.  Panel functions allow the use of  stacked  windows
+       and  ensure  the  proper  portions  of each window and the
+       curses <B>stdscr</B> window are hidden or displayed  when  panels
+       are  added,  moved,  modified or removed.  The set of cur-
+       rently visible panels is the stack of panels.  The  <B>stdscr</B>
+       window  is  beneath all panels, and is not considered part
+       of the stack.
+
+       A window is associated with every panel.  The  panel  rou-
+       tines  enable you to create, move, hides, and show panels,
+       as well as position a panel at any desired location in the
+       stack.
+
+       Panel routines are a functional layer added to <B><A HREF="ncurses.3x.html">curses(3x)</A></B>,
+       make only high-level curses calls, and work anywhere  ter-
+       minfo curses does.
+
+
+</PRE>
+<H2>FUNCTIONS</H2><PRE>
+       <B>new_panel(win)</B>
+              allocates   a   <B>PANEL</B> structure, associates it with
+              <B>win</B>, places the panel  on  the  top  of  the  stack
+              (causes   it  to   be   displayed  above  any other
+              panel) and returns a pointer to the new panel.
+
+       <B>void</B> <B>update_panels()</B>
+              refreshes the virtual screen to reflect  the  rela-
+              tions between the panels in the stack, but does not
+              call doupdate() to  refresh  the  physical  screen.
+              Use this function and not wrefresh or wnoutrefresh.
+              update_panels() may be called more than once before
+              a  call  to doupdate(), but doupdate() is the func-
+              tion responsible for updating the physical  screen.
+
+       <B>del_panel(pan)</B>
+              removes the given panel from the  stack and deallo-
+              cates the <B>PANEL</B> structure (but not  its  associated
+              window).
+
+       <B>hide_panel(pan)</B>
+              removes  the  given  panel from the panel stack and
+              thus hides it from view. The <B>PANEL</B> structure is not
+              lost, merely removed from the stack.
+
+       <B>show_panel(pan)</B>
+              makes  a  hidden panel visible by placing it on top
+              of the panels in the panel stack. See COMPATIBILITY
+              below.
+
+       <B>top_panel(pan)</B>
+              puts  the  given visible panel on top of all panels
+              in the stack.  See COMPATIBILITY below.
+
+       <B>bottom_panel(pan)</B>
+              puts panel at the bottom of all panels.
+
+       <B>move_panel(pan,starty,startx)</B>
+              moves the given panel window so that its upper-left
+              corner  is  at  <B>starty</B>, <B>startx</B>.  It does not change
+              the position of the panel in the stack.  Be sure to
+              use  this  function,  not  <B>mvwin()</B>, to move a panel
+              window.
+
+       <B>replace_panel(pan,window)</B>
+              replaces the current window of  panel  with  <B>window</B>
+              (useful, for example if you want to resize a panel;
+              if you're using <B>ncurses</B>, you can call <B>replace_panel</B>
+              on  the output of <B><A HREF="wresize.3x.html">wresize(3x)</A></B>).  It does not change
+              the position of the panel in the stack.
+
+       <B>panel_above(pan)</B>
+              returns a pointer to the panel above pan.   If  the
+              panel  argument is <B>(PANEL</B> <B>*)0</B>, it returns a pointer
+              to the bottom panel in the stack.
+
+       <B>panel_below(pan)</B>
+              returns a pointer to the panel just below pan.   If
+              the  panel  argument  is  <B>(PANEL</B>  <B>*)0</B>, it returns a
+              pointer to the top panel in the stack.
+
+       <B>set_panel_userptr(pan,ptr)</B>
+              sets the panel's user pointer.
+
+       <B>panel_userptr(pan)</B>
+              returns the user pointer for a given panel.
+
+       <B>panel_window(pan)</B>
+              returns a pointer to the window of the given panel.
+
+
+</PRE>
+<H2>DIAGNOSTICS</H2><PRE>
+       Each  routine  that  returns  a pointer returns <B>NULL</B> if an
+       error occurs. Each  routine  that  returns  an  int  value
+       returns <B>OK</B> if it executes successfully and <B>ERR</B> if not.
+
+
+</PRE>
+<H2>COMPATIBILITY</H2><PRE>
+       Reasonable  care  has been taken to  ensure  compatibility
+       with  the  native  panel  facility  introduced  in  SVr3.2
+       (inspection of the SVr4 manual pages suggests the program-
+       ming interface is unchanged).  The <B>PANEL</B>  data  structures
+       are  merely   similar. The  programmer is cautioned not to
+       directly use <B>PANEL</B> fields.
+
+       The functions <B>show_panel()</B> and <B>top_panel()</B>  are  identical
+       in  this  implementation,  and work equally well with dis-
+       played or hidden panels.  In the native System V implemen-
+       tation, <B>show_panel()</B> is intended for making a hidden panel
+       visible (at the top  of  the  stack)  and  <B>top_panel()</B>  is
+       intended  for  making an already-visible panel move to the
+       top of the stack. You are cautioned  to  use  the  correct
+       function   to   ensure  compatibility  with  native  panel
+       libraries.
+
+
+</PRE>
+<H2>NOTE</H2><PRE>
+       In your library list, libpanel.a should  be  before  libn-
+       curses.a;  that  is,  you want to say `-lpanel -lncurses',
+       not the other way around (which  would  give  you  a  link
+       error using GNU <B><A HREF="ld.1.html">ld(1)</A></B> and some other linkers).
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+       panel.h interface for the panels library
+
+       libpanel.a the panels library itself
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>
+
+
+</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
+       systems  without  a native panels library.  Repackaged for
+       ncurses by Zeyd ben-Halim.
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
similarity index 62%
rename from Ada95/html/man/resizeterm.3x.html
rename to doc/html/man/resizeterm.3x.html
index 7b6e7df0c63b4bb00fddf7ae9ff1eaa38b5a4925..712dee101e660535121587e5d9374643759159d9 100644 (file)
@@ -1,25 +1,29 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>resizeterm</STRONG> - change the curses terminal size
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>resizeterm</B> - change the curses terminal size
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
 
-       <STRONG>int</STRONG> <STRONG>resizeterm(int</STRONG> <STRONG>lines,</STRONG> <STRONG>int</STRONG> <STRONG>columns);</STRONG>
+       <B>int</B> <B>resizeterm(int</B> <B>lines,</B> <B>int</B> <B>columns);</B>
 
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
        This  is  an extension to the curses library.  It provides
-       callers with a hook into the <STRONG>ncurses</STRONG> data to  resize  win-
+       callers with a hook into the <B>ncurses</B> data to  resize  win-
        dows, primarily for use by programs running in an X Window
-       terminal (e.g., xterm).  The function  <STRONG>resizeterm</STRONG>  resizes
+       terminal (e.g., xterm).  The function  <B>resizeterm</B>  resizes
        the  standard  and current windows to the specified dimen-
        sions, and adjusts other  bookkeeping  data  used  by  the
-       <STRONG>ncurses</STRONG> library that record the window dimensions.
+       <B>ncurses</B> library that record the window dimensions.
 
        When  resizing  the  windows, the function blank-fills the
        areas that are extended. The  calling  application  should
@@ -33,7 +37,7 @@
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       The function returns the integer <STRONG>ERR</STRONG> upon failure  and  <STRONG>OK</STRONG>
+       The function returns the integer <B>ERR</B> upon failure  and  <B>OK</B>
        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.
 <H2>NOTES</H2><PRE>
        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 <STRONG>malloc</STRONG> or <STRONG>realloc</STRONG>
+       to  avoid invoking it in a context where <B>malloc</B> or <B>realloc</B>
        may have been interrupted, since it uses those  functions.
 
        If  ncurses  is configured to supply its own SIGWINCH han-
-       dler, the <STRONG>resizeterm</STRONG> function ungetch's a <STRONG>KEY_RESIZE</STRONG> which
-       will  be  read on the next call to <STRONG>getch</STRONG>.  This is used to
+       dler, the <B>resizeterm</B> function ungetch's a <B>KEY_RESIZE</B> which
+       will  be  read on the next call to <B>getch</B>.  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.
@@ -56,7 +60,7 @@
 
 </PRE>
 <H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="wresize.3x.html">wresize(3X)</A></STRONG>.
+       <B><A HREF="wresize.3x.html">wresize(3x)</A></B>.
 
 
 </PRE>
        for BSD curses).
 
 
+
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
diff --git a/doc/html/man/term.5.html b/doc/html/man/term.5.html
new file mode 100644 (file)
index 0000000..8995219
--- /dev/null
@@ -0,0 +1,184 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       term - format of compiled term file.
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>term</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       Compiled terminfo descriptions are placed under the direc-
+       tory <B>@DATADIR@/terminfo</B>.   In  order  to  avoid  a  linear
+       search of a huge UNIX system directory, a two-level scheme
+       is used: <B>/c/name</B> where <I>name</I> is the name of  the  terminal,
+       and  <I>c</I>  is the first character of <I>name</I>.  Thus, <I>act4</I> can be
+       found in the file <B>@DATADIR@/terminfo/a/act4</B>.  Synonyms for
+       the same terminal are implemented by multiple links to the
+       same compiled file.
+
+       The format has been chosen so that it will be the same  on
+       all  hardware.   An  8 or more bit byte is assumed, but no
+       assumptions about byte  ordering  or  sign  extension  are
+       made.
+
+       The  compiled  file  is  created with the <I>tic</I> program, and
+       read by the routine <I>setupterm</I>.  The file is  divided  into
+       six parts: the header, terminal names, boolean flags, num-
+       bers, strings, and string table.
+
+       The header section begins the file.  This section contains
+       six  short  integers in the format described below.  These
+       integers are (1) the magic number (octal  0432);  (2)  the
+       size,  in  bytes,  of the names section; (3) the number of
+       bytes in the boolean section;  (4)  the  number  of  short
+       integers in the numbers section; (5) the number of offsets
+       (short integers) in the strings section; (6) the size,  in
+       bytes, of the string table.
+
+       Short  integers  are stored in two 8-bit bytes.  The first
+       byte contains the least significant 8 bits of  the  value,
+       and  the second byte contains the most significant 8 bits.
+       (Thus, the value represented  is  256*second+first.)   The
+       value -1 is represented by the two bytes 0377, 0377; other
+       negative values are illegal. This  value  generally  means
+       that  the  corresponding  capability  is missing from this
+       terminal.  Note that this format corresponds to the  hard-
+       ware  of  the  VAX  and  PDP-11  (that  is,  little-endian
+       machines).  Machines where this does not correspond to the
+       hardware  must  read the integers as two bytes and compute
+       the little-endian value.
+
+       The terminal names section comes next.   It  contains  the
+       first  line of the terminfo description, listing the vari-
+       ous names for the terminal, separated by the  `|'  charac-
+       ter.   The section is terminated with an ASCII NUL charac-
+       ter.
+
+       The boolean flags have one byte for each flag.  This  byte
+       is  either  0  or 1 as the flag is present or absent.  The
+       capabilities are in the same order as the file &lt;term.h&gt;.
+
+       Between the boolean section and the number section, a null
+       byte  will  be  inserted, if necessary, to ensure that the
+       number section begins on an even byte (this is a relic  of
+       the   PDP-11's   word-addressed  architecture,  originally
+       designed in to avoid IOT traps  induced  by  addressing  a
+       word  on  an  odd  byte boundary).  All short integers are
+       aligned on a short word boundary.
+
+       The numbers section is similar to the flags section.  Each
+       capability  takes up two bytes, and is stored as a little-
+       endian short integer.  If the value represented is -1, the
+       capability is taken to be missing.
+
+       The  strings  section is also similar.  Each capability is
+       stored as a short integer, in the format above.   A  value
+       of  -1  means  the  capability is missing.  Otherwise, the
+       value is taken as an offset  from  the  beginning  of  the
+       string table.  Special characters in ^X or \c notation are
+       stored in their interpreted form, not the printing  repre-
+       sentation.  Padding information $&lt;nn&gt; and parameter infor-
+       mation %x are stored intact in uninterpreted form.
+
+       The final section is the string table.   It  contains  all
+       the values of string capabilities referenced in the string
+       section.  Each string is null terminated.
+
+       Note that it is possible for <I>setupterm</I> to expect a differ-
+       ent  set  of capabilities than are actually present in the
+       file.  Either the database may  have  been  updated  since
+       <I>setupterm</I> has been recompiled (resulting in extra unrecog-
+       nized entries in the file) or the program  may  have  been
+       recompiled  more  recently  than  the database was updated
+       (resulting in missing  entries).   The  routine  <I>setupterm</I>
+       must  be prepared for both possibilities - this is why the
+       numbers and sizes are included.   Also,  new  capabilities
+       must  always  be added at the end of the lists of boolean,
+       number, and string capabilities.
+
+       Despite the consistent use of  little-endian  for  numbers
+       and  the  otherwise self-describing format, it is not wise
+       to count on portability of binary terminfo entries between
+       commercial  UNIX  versions.  The problem is that there are
+       at least three versions of terminfo (under HP-UX, AIX, and
+       OSF/1)  which  diverged from System V terminfo after SVr1,
+       and have added extension capabilities to the string  table
+       that  (in the binary format) collide with System V and XSI
+       Curses extensions.  See <B><A HREF="terminfo.5.html">terminfo(5)</A></B> for  detailed  discus-
+       sion of terminfo source compatibility issues.
+
+       As  an  example, here is a hex dump of the description for
+       the Lear-Siegler ADM-3, a  popular  though  rather  stupid
+       early terminal:
+
+       adm3a|lsi adm3a,
+               am,
+               cols#80, lines#24,
+               bel=^G, clear= 32$&lt;1&gt;, cr=^M, cub1=^H, cud1=^J,
+               cuf1=^L, cup==%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+               home=^^, ind=^J,
+
+       0000  1a 01 10 00 02 00 03 00  82 00 31 00 61 64 6d 33  ........ ..1.adm3
+       0010  61 7c 6c 73 69 20 61 64  6d 33 61 00 00 01 50 00  a|lsi ad m3a...P.
+       0020  ff ff 18 00 ff ff 00 00  02 00 ff ff ff ff 04 00  ........ ........
+       0030  ff ff ff ff ff ff ff ff  0a 00 25 00 27 00 ff ff  ........ ..%.'...
+       0040  29 00 ff ff ff ff 2b 00  ff ff 2d 00 ff ff ff ff  ).....+. ..-.....
+       0050  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0060  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0070  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0080  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0090  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00b0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00d0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00e0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00f0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0100  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0110  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0120  ff ff ff ff ff ff 2f 00  07 00 0d 00 1a 24 3c 31  ....../. .....$&lt;1
+       0130  3e 00 1b 3d 25 70 31 25  7b 33 32 7d 25 2b 25 63  &gt;..=%p1% {32}%+%c
+       0140  25 70 32 25 7b 33 32 7d  25 2b 25 63 00 0a 00 1e  %p2%{32} %+%c....
+       0150  00 08 00 0c 00 0b 00 0a  00                       ........ .
+
+
+       Some  limitations:  total  compiled  entries cannot exceed
+       4096 bytes.  The name field cannot exceed 128 bytes.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+       @DATADIR@/terminfo/*/*   compiled terminal capability data
+       base
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/term.7.html b/doc/html/man/term.7.html
new file mode 100644 (file)
index 0000000..24ac436
--- /dev/null
@@ -0,0 +1,239 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       term - conventions for naming terminal types
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  environment variable <B>TERM</B> should normally contain the
+       type name of the terminal, console or display-device  type
+       you  are  using.   This  information  is  critical for all
+       screen-oriented  programs,  including  your   editor   and
+       mailer.
+
+       A  default  <B>TERM</B>  value will be set on a per-line basis by
+       either <B>/etc/inittab</B> (Linux and  System-V-like  UNIXes)  or
+       <B>/etc/ttys</B>  (BSD  UNIXes).  This will nearly always suffice
+       for workstation and microcomputer consoles.
+
+       If you use a dialup line, the type of device  attached  to
+       it  may vary.  Older UNIX systems pre-set a very dumb ter-
+       minal type like `dumb' or `dialup' on dialup lines.  Newer
+       ones may pre-set `vt100', reflecting the prevalence of DEC
+       VT100-compatible terminals  and  personal-computer  emula-
+       tors.
+
+       Modern  telnets  pass  your <B>TERM</B> environment variable from
+       the local side to the remote one.  There can  be  problems
+       if  the  remote terminfo or termcap entry for your type is
+       not compatible with yours, but this situation is rare  and
+       can  almost  always  be  avoided  by  explicitly exporting
+       `vt100' (assuming you are in fact using  a  VT100-superset
+       console, terminal, or terminal emulator.)
+
+       In any case, you are free to override the system <B>TERM</B> set-
+       ting to your taste in your  shell  profile.   The  <B><A HREF="tset.1.html">tset(1)</A></B>
+       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.
+
+       Setting your own <B>TERM</B> value may also be useful if you have
+       created a custom  entry  incorporating  options  (such  as
+       visual  bell  or reverse-video) which you wish to override
+       the system default type for your line.
+
+       Terminal type descriptions are stored as files of capabil-
+       ity  data underneath @DATADIR@/terminfo.  To browse a list
+       of all terminal names recognized by the system, do
+
+            toe | more
+
+       from your shell.  These capability files are in  a  binary
+       format optimized for retrieval speed (unlike the old text-
+       based <B>termcap</B> format they replace); to examine  an  entry,
+       you  must  use  the <B><A HREF="infocmp.1.html">infocmp(1)</A></B> command.  Invoke it as fol-
+       lows:
+
+            infocmp <I>entry-name</I>
+
+       where <I>entry-name</I> is the name of the type you wish to exam-
+       ine  (and the name of its capability file the subdirectory
+       of @DATADIR@/terminfo named for its first  letter).   This
+       command  dumps  a  capability  file  in  the  text  format
+       described by <B><A HREF="terminfo.5.html">terminfo(5)</A></B>.
+
+       The first line of  a  <B><A HREF="terminfo.5.html">terminfo(5)</A></B>  description  gives  the
+       names by which terminfo knows a terminal, separated by `|'
+       (pipe-bar) characters with the last name field  terminated
+       by  a  comma.   The first name field is the type's <I>primary</I>
+       <I>name</I>, and is the one to use when setting <B>TERM</B>.   The  last
+       name  field  (if  distinct  from  the first) is actually a
+       description of the terminal type (it may  contain  blanks;
+       the others must be single words).  Name fields between the
+       first and last (if present) are aliases for the  terminal,
+       usually historical names retained for compatibility.
+
+       There are some conventions for how to choose terminal pri-
+       mary names that help keep  them  informative  and  unique.
+       Here is a step-by-step guide to naming terminals that also
+       explains how to parse them:
+
+       First, choose a root name.  The root  will  consist  of  a
+       lower-case  letter followed by up to seven lower-case let-
+       ters or digits.  You need to avoid using punctuation char-
+       acters  in  root  names,  because they are used and inter-
+       preted as filenames and shell meta-characters (such as  !,
+       $, *, ? etc.) embedded in them may cause odd and unhelpful
+       behavior.  The slash (/), or any other character that  may
+       be  interpreted  by  anyone's file system (\, $, [, ]), is
+       especially dangerous  (terminfo  is  platform-independent,
+       and  choosing  names with special characters could someday
+       make life difficult for users of a future port).  The  dot
+       (.)  character  is  relatively safe as long as there is at
+       most one per root name; some historical terminfo names use
+       it.
+
+       The  root  name for a terminal or workstation console type
+       should almost always begin with a vendor prefix  (such  as
+       <B>hp</B>  for Hewlett-Packard, <B>wy</B> for Wyse, or <B>att</B> for AT&amp;T ter-
+       minals), or a common name of the terminal line (<B>vt</B> for the
+       VT  series of terminals from DEC, or <B>sun</B> for Sun Microsys-
+       tems workstation consoles, or <B>regent</B> for the  ADDS  Regent
+       series.   You  can list the terminfo tree to see what pre-
+       fixes are already in common use.   The  root  name  prefix
+       should  be  followed  when  appropriate by a model number;
+       thus <B>vt100</B>, <B>hp2621</B>, <B>wy50</B>.
+
+       The root name for a PC-Unix console type should be the  OS
+       name,  i.e.  <B>linux</B>, <B>bsdos</B>, <B>freebsd</B>, <B>netbsd</B>.  It should <I>not</I>
+       be <B>console</B> or any other generic that might cause confusion
+       in  a  multi-platform environment!  If a model number fol-
+       lows, it should indicate either the OS  release  level  or
+       the console driver release level.
+       The root name for a terminal emulator (assuming it doesn't
+       fit one of the standard ANSI or vt100 types) should be the
+       program  name or a readily recognizable abbreviation of it
+       (i.e. <B>versaterm</B>, <B>ctrm</B>).
+
+       Following the root name, you may add any reasonable number
+       of hyphen-separated feature suffixes.
+
+       2p   Has two pages of memory.  Likewise 4p, 8p, etc.
+
+       mc   Magic-cookie.   Some  terminals (notably older Wyses)
+            can only support one attribute  without  magic-cookie
+            lossage.   Their  base  entry  is usually paired with
+            another that has this suffix and uses  magic  cookies
+            to support multiple attributes.
+
+       -am  Enable auto-margin (right-margin wraparound)
+
+       -m   Mono mode - suppress color support
+
+       -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
+
+       -nsl No status line - suppress status line
+
+       -pp  Has a printer port which is used.
+
+       -rv  Terminal in reverse video mode (black on white)
+
+       -s   Enable status line.
+
+       -vb  Use visible bell (flash) rather than beep.
+
+       -w   Wide; terminal is in 132 column mode.
+
+       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
+       <B>fubar-30-rv</B> (rather than, say, `fubar-rv-30').
+
+       Terminal types that are written not as standalone entries,
+       but rather as components to be plugged into other  entries
+       via  <B>use</B> capabilities, are distinguished by using embedded
+       plus signs rather than dashes.
+
+       Commands which use a  terminal  type  to  control  display
+       often  accept  a  -T  option  that accepts a terminal name
+       argument.  Such programs should  fall  back  on  the  <B>TERM</B>
+       environment variable when no -T option is specified.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       For  maximum  compatibility  with  older  System V UNIXes,
+       names and aliases should be unique  within  the  first  14
+       characters.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+       @DATADIR@/terminfo/?/*
+            compiled terminal capability data base
+
+       /etc/inittab
+            tty line initialization (AT&amp;T-like UNIXes).
+
+       /etc/ttys
+            tty line initialization (BSD-like UNIXes).
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>, <B><A HREF="term.5.html">term(5)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/terminfo.5.html b/doc/html/man/terminfo.5.html
new file mode 100644 (file)
index 0000000..59a79d5
--- /dev/null
@@ -0,0 +1,2188 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       terminfo - terminal capability data base
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       @DATADIR@/terminfo/*/*
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       <I>Terminfo</I>  is  a  data  base  describing terminals, used by
+       screen-oriented programs  such  as  <B><A HREF="nvi.1.html">nvi(1)</A></B>,  <B><A HREF="rogue.1.html">rogue(1)</A></B>  and
+       libraries  such  as <B><A HREF="ncurses.3x.html">curses(3x)</A></B>.  <I>Terminfo</I> describes termi-
+       nals by giving a set of capabilities which they  have,  by
+       specifying how to perform screen operations, and by speci-
+       fying padding requirements and initialization sequences.
+
+       Entries in <I>terminfo</I> consist of a sequence of `,' separated
+       fields  (embedded  commas may be escaped with a  backslash
+       or notated as \072).  White space after the `,'  separator
+       is  ignored.   The first entry for each terminal gives the
+       names which are known for the terminal, separated  by  `|'
+       characters.   The  first  name  given  is  the most common
+       abbreviation for the terminal, the last name given  should
+       be  a  long  name  fully identifying the terminal, and all
+       others are understood as synonyms for the  terminal  name.
+       All names but the last should be in lower case and contain
+       no blanks; the last name may well contain upper  case  and
+       blanks for readability.
+
+       Terminal names (except for the last, verbose entry) should
+       be chosen using the following conventions.  The particular
+       piece  of  hardware  making  up the terminal should have a
+       root name, thus ``hp2621''.  This name should not  contain
+       hyphens.  Modes that the hardware can be in, or user pref-
+       erences, should be indicated by appending a hyphen  and  a
+       mode  suffix.   Thus,  a vt100 in 132 column mode would be
+       vt100-w.  The following suffixes should be used where pos-
+       sible:
+
+      <B>Suffix</B>                  <B>Meaning</B>                   <B>Example</B>
+      -<I>nn</I>      Number of lines on the screen            aaa-60
+      -<I>n</I>p      Number of pages of memory                c100-4p
+      -am      With automargins (usually the default)   vt100-am
+      -m       Mono mode; suppress color                ansi-m
+      -mc      Magic cookie; spaces when highlighting   wy30-mc
+      -na      No arrow keys (leave them in local)      c100-na
+      -nam     Without automatic margins                vt100-nam
+      -nl      No status line                           att4415-nl
+      -ns      No status line                           hp2626-ns
+      -rv      Reverse video                            c100-rv
+      -s       Enable status line                       vt100-s
+      -vb      Use visible bell instead of beep         wy370-vb
+      -w       Wide mode (&gt; 80 columns, usually 132)    vt100-w
+
+       For  more  on terminal naming conventions, see the <B>term(7)</B>
+       manual page.
+
+   <B>Capabilities</B>
+       The following is a  complete  table  of  the  capabilities
+       included  in a terminfo description block and available to
+       terminfo-using code.  In each line of the table,
+
+       The <B>variable</B> is the name by which the programmer  (at  the
+       terminfo level) accesses the capability.
+
+       The  <B>capname</B>  is  the  short  name used in the text of the
+       database, and is used by a person updating  the  database.
+       Whenever  possible,  capnames are chosen to be the same as
+       or similar to the ANSI X3.64-1979 standard (now superseded
+       by  ECMA-48,  which uses identical or very similar names).
+       Semantics are also intended to match those of the specifi-
+       cation.
+
+       The  termcap code is the old <B>termcap</B> capability name (some
+       capabilities are new, and have names which termcap did not
+       originate).
+
+       Capability  names have no hard length limit, but an infor-
+       mal limit of 5 characters has been adopted  to  keep  them
+       short  and  to  allow  the tabs in the source file <B>Caps</B> to
+       line up nicely.
+
+       Finally, the description  field  attempts  to  convey  the
+       semantics  of  the capability.  You may find some codes in
+       the description field:
+
+       (P)    indicates that padding may be specified
+
+       #[1-9] in the description field indicates that the  string
+              is passed through tparm with parms as given (#<I>i</I>).
+
+       (P*)   indicates  that  padding  may vary in proportion to
+              the number of lines affected
+
+       (#<I>i</I>)   indicates the <I>i</I>th parameter.
+
+
+       These are the boolean capabilities:
+
+               <B>Variable</B>          <B>Cap-</B>  <B>TCap</B>      <B>Description</B>
+               <B>Booleans</B>          <B>name</B>  <B>Code</B>
+       auto_left_margin          bw    bw    cub1 wraps from col-
+                                             umn 0 to last column
+       auto_right_margin         am    am    terminal has auto-
+                                             matic margins
+       back_color_erase          bce   ut    screen erased with
+                                             background color
+       can_change                ccc   cc    terminal can re-
+                                             define existing col-
+                                             ors
+
+       ceol_standout_glitch      xhp   xs    standout not erased
+                                             by overwriting (hp)
+       col_addr_glitch           xhpa  YA    only positive motion
+                                             for hpa/mhpa caps
+       cpi_changes_res           cpix  YF    changing character
+                                             pitch changes reso-
+                                             lution
+       cr_cancels_micro_mode     crxm  YB    using cr turns off
+                                             micro mode
+       dest_tabs_magic_smso      xt    xt    tabs destructive,
+                                             magic so char
+                                             (t1061)
+       eat_newline_glitch        xenl  xn    newline ignored
+                                             after 80 cols (con-
+                                             cept)
+       erase_overstrike          eo    eo    can erase over-
+                                             strikes with a blank
+       generic_type              gn    gn    generic line type
+       hard_copy                 hc    hc    hardcopy terminal
+       hard_cursor               chts  HC    cursor is hard to
+                                             see
+       has_meta_key              km    km    Has a meta key
+                                             (i.e., sets 8th-bit)
+       has_print_wheel           daisy YC    printer needs opera-
+                                             tor to change char-
+                                             acter set
+       has_status_line           hs    hs    has extra status
+                                             line
+       hue_lightness_saturation  hls   hl    terminal uses only
+                                             HLS color notation
+                                             (Tektronix)
+       insert_null_glitch        in    in    insert mode distin-
+                                             guishes nulls
+       lpi_changes_res           lpix  YG    changing line pitch
+                                             changes resolution
+       memory_above              da    da    display may be
+                                             retained above the
+                                             screen
+       memory_below              db    db    display may be
+                                             retained below the
+                                             screen
+       move_insert_mode          mir   mi    safe to move while
+                                             in insert mode
+       move_standout_mode        msgr  ms    safe to move while
+                                             in standout mode
+       needs_xon_xoff            nxon  nx    padding won't work,
+                                             xon/xoff required
+       no_esc_ctlc               xsb   xb    beehive (f1=escape,
+                                             f2=ctrl C)
+       no_pad_char               npc   NP    pad character does
+                                             not exist
+       non_dest_scroll_region    ndscr ND    scrolling region is
+                                             non-destructive
+
+       non_rev_rmcup             nrrmc NR    smcup does not
+                                             reverse rmcup
+       over_strike               os    os    terminal can over-
+                                             strike
+       prtr_silent               mc5i  5i    printer won't echo
+                                             on screen
+       row_addr_glitch           xvpa  YD    only positive motion
+                                             for vpa/mvpa caps
+       semi_auto_right_margin    sam   YE    printing in last
+                                             column causes cr
+       status_line_esc_ok        eslok es    escape can be used
+                                             on the status line
+       tilde_glitch              hz    hz    can't print ~'s
+                                             (hazeltine)
+       transparent_underline     ul    ul    underline character
+                                             overstrikes
+       xon_xoff                  xon   xo    terminal uses
+                                             xon/xoff handshaking
+
+       These are the numeric capabilities:
+
+            <B>Variable</B>         <B>Cap-</B>     <B>TCap</B>       <B>Description</B>
+             <B>Numeric</B>         <B>name</B>     <B>Code</B>
+       columns               cols     co     number of columns in
+                                             a line
+       init_tabs             it       it     tabs initially every
+                                             # spaces
+       label_height          lh       lh     rows in each label
+       label_width           lw       lw     columns in each
+                                             label
+       lines                 lines    li     number of lines on
+                                             screen or page
+       lines_of_memory       lm       lm     lines of memory if &gt;
+                                             line. 0 means varies
+       magic_cookie_glitch   xmc      sg     number of blank
+                                             characters left by
+                                             smso or rmso
+       max_attributes        ma       ma     maximum combined
+                                             attributes terminal
+                                             can handle
+       max_colors            colors   Co     maximum number of
+                                             colors on screen
+       max_pairs             pairs    pa     maximum number of
+                                             color-pairs on the
+                                             screen
+       maximum_windows       wnum     MW     maximum number of
+                                             defineable windows
+       no_color_video        ncv      NC     video attributes
+                                             that can't be used
+                                             with colors
+       num_labels            nlab     Nl     number of labels on
+                                             screen
+
+
+       padding_baud_rate     pb       pb     lowest baud rate
+                                             where padding needed
+       virtual_terminal      vt       vt     virtual terminal
+                                             number (CB/unix)
+       width_status_line     wsl      ws     number of columns in
+                                             status line
+
+       The following numeric  capabilities  are  present  in  the
+       SVr4.0  term  structure, but are not yet documented in the
+       man page.  They came in with SVr4's printer support.
+
+             <B>Variable</B>         <B>Cap-</B>    <B>TCap</B>       <B>Description</B>
+             <B>Numeric</B>          <B>name</B>    <B>Code</B>
+       bit_image_entwining    bitwin  Yo     number of passes for
+                                             each bit-image row
+       bit_image_type         bitype  Yp     type of bit-image
+                                             device
+       buffer_capacity        bufsz   Ya     numbers of bytes
+                                             buffered before
+                                             printing
+       buttons                btns    BT     number of buttons on
+                                             mouse
+       dot_horz_spacing       spinh   Yc     spacing of dots hor-
+                                             izontally in dots
+                                             per inch
+       dot_vert_spacing       spinv   Yb     spacing of pins ver-
+                                             tically in pins per
+                                             inch
+       max_micro_address      maddr   Yd     maximum value in
+                                             micro_..._address
+       max_micro_jump         mjump   Ye     maximum value in
+                                             parm_..._micro
+       micro_col_size         mcs     Yf     character step size
+                                             when in micro mode
+       micro_line_size        mls     Yg     line step size when
+                                             in micro mode
+       number_of_pins         npins   Yh     numbers of pins in
+                                             print-head
+       output_res_char        orc     Yi     horizontal resolu-
+                                             tion in units per
+                                             line
+       output_res_horz_inch   orhi    Yk     horizontal resolu-
+                                             tion in units per
+                                             inch
+       output_res_line        orl     Yj     vertical resolution
+                                             in units per line
+       output_res_vert_inch   orvi    Yl     vertical resolution
+                                             in units per inch
+       print_rate             cps     Ym     print rate in char-
+                                             acters per second
+       wide_char_size         widcs   Yn     character step size
+                                             when in double wide
+                                             mode
+
+       These are the string capabilities:
+
+               <B>Variable</B>          <B>Cap-</B>   <B>TCap</B>     <B>Description</B>
+                <B>String</B>           <B>name</B>   <B>Code</B>
+       acs_chars                 acsc   ac   graphics charset
+                                             pairs, based on
+                                             vt100
+       back_tab                  cbt    bt   back tab (P)
+       bell                      bel    bl   audible signal
+                                             (bell) (P)
+       carriage_return           cr     cr   carriage return (P*)
+                                             (P*)
+       change_char_pitch         cpi    ZA   Change number of
+                                             characters per inch
+       change_line_pitch         lpi    ZB   Change number of
+                                             lines per inch
+       change_res_horz           chr    ZC   Change horizontal
+                                             resolution
+       change_res_vert           cvr    ZD   Change vertical res-
+                                             olution
+       change_scroll_region      csr    cs   change region to
+                                             line #1 to line #2
+                                             (P)
+       char_padding              rmp    rP   like ip but when in
+                                             insert mode
+       clear_all_tabs            tbc    ct   clear all tab stops
+                                             (P)
+       clear_margins             mgc    MC   clear right and left
+                                             soft margins
+       clear_screen              clear  cl   clear screen and
+                                             home cursor (P*)
+       clr_bol                   el1    cb   Clear to beginning
+                                             of line
+       clr_eol                   el     ce   clear to end of line
+                                             (P)
+       clr_eos                   ed     cd   clear to end of
+                                             screen (P*)
+       column_address            hpa    ch   horizontal position
+                                             #1, absolute (P)
+       command_character         cmdch  CC   terminal settable
+                                             cmd character in
+                                             prototype !?
+       create_window             cwin   CW   define a window #1
+                                             from #2,#3 to #4,#5
+       cursor_address            cup    cm   move to row #1
+                                             columns #2
+       cursor_down               cud1   do   down one line
+       cursor_home               home   ho   home cursor (if no
+                                             cup)
+       cursor_invisible          civis  vi   make cursor invisi-
+                                             ble
+       cursor_left               cub1   le   move left one space
+
+
+       cursor_mem_address        mrcup  CM   memory relative cur-
+                                             sor addressing
+       cursor_normal             cnorm  ve   make cursor appear
+                                             normal (undo
+                                             civis/cvvis)
+       cursor_right              cuf1   nd   non-destructive
+                                             space (move right
+                                             one space)
+       cursor_to_ll              ll     ll   last line, first
+                                             column (if no cup)
+       cursor_up                 cuu1   up   up one line
+       cursor_visible            cvvis  vs   make cursor very
+                                             visible
+       define_char               defc   ZE   Define a character
+       delete_character          dch1   dc   delete character
+                                             (P*)
+       delete_line               dl1    dl   delete line (P*)
+       dial_phone                dial   DI   dial number #1
+       dis_status_line           dsl    ds   disable status line
+       display_clock             dclk   DK   display clock at
+                                             (#1,#2)
+       down_half_line            hd     hd   half a line down
+       ena_acs                   enacs  eA   enable alternate
+                                             char set
+       enter_alt_charset_mode    smacs  as   start alternate
+                                             character set (P)
+       enter_am_mode             smam   SA   turn on automatic
+                                             margins
+       enter_blink_mode          blink  mb   turn on blinking
+       enter_bold_mode           bold   md   turn on bold (extra
+                                             bright) mode
+       enter_ca_mode             smcup  ti   string to start pro-
+                                             grams using cup
+       enter_delete_mode         smdc   dm   enter delete mode
+       enter_dim_mode            dim    mh   turn on half-bright
+                                             mode
+       enter_doublewide_mode     swidm  ZF   Enter double-wide
+                                             mode
+       enter_draft_quality       sdrfq  ZG   Enter draft-quality
+                                             mode
+       enter_insert_mode         smir   im   enter insert mode
+       enter_italics_mode        sitm   ZH   Enter italic mode
+       enter_leftward_mode       slm    ZI   Start leftward car-
+                                             riage motion
+       enter_micro_mode          smicm  ZJ   Start micro-motion
+                                             mode
+       enter_near_letter_quality snlq   ZK   Enter NLQ mode
+       enter_normal_quality      snrmq  ZL   Enter normal-quality
+                                             mode
+       enter_protected_mode      prot   mp   turn on protected
+                                             mode
+       enter_reverse_mode        rev    mr   turn on reverse
+                                             video mode
+
+       enter_secure_mode         invis  mk   turn on blank mode
+                                             (characters invisi-
+                                             ble)
+       enter_shadow_mode         sshm   ZM   Enter shadow-print
+                                             mode
+       enter_standout_mode       smso   so   begin standout mode
+       enter_subscript_mode      ssubm  ZN   Enter subscript mode
+       enter_superscript_mode    ssupm  ZO   Enter superscript
+                                             mode
+       enter_underline_mode      smul   us   begin underline mode
+       enter_upward_mode         sum    ZP   Start upward car-
+                                             riage motion
+       enter_xon_mode            smxon  SX   turn on xon/xoff
+                                             handshaking
+       erase_chars               ech    ec   erase #1 characters
+                                             (P)
+       exit_alt_charset_mode     rmacs  ae   end alternate char-
+                                             acter set (P)
+       exit_am_mode              rmam   RA   turn off automatic
+                                             margins
+       exit_attribute_mode       sgr0   me   turn off all
+                                             attributes
+       exit_ca_mode              rmcup  te   strings to end pro-
+                                             grams using cup
+       exit_delete_mode          rmdc   ed   end delete mode
+       exit_doublewide_mode      rwidm  ZQ   End double-wide mode
+       exit_insert_mode          rmir   ei   exit insert mode
+       exit_italics_mode         ritm   ZR   End italic mode
+       exit_leftward_mode        rlm    ZS   End left-motion mode
+       exit_micro_mode           rmicm  ZT   End micro-motion
+                                             mode
+       exit_shadow_mode          rshm   ZU   End shadow-print
+                                             mode
+       exit_standout_mode        rmso   se   exit standout mode
+       exit_subscript_mode       rsubm  ZV   End subscript mode
+       exit_superscript_mode     rsupm  ZW   End superscript mode
+       exit_underline_mode       rmul   ue   exit underline mode
+       exit_upward_mode          rum    ZX   End reverse charac-
+                                             ter motion
+       exit_xon_mode             rmxon  RX   turn off xon/xoff
+                                             handshaking
+       fixed_pause               pause  PA   pause for 2-3 sec-
+                                             onds
+       flash_hook                hook   fh   flash switch hook
+       flash_screen              flash  vb   visible bell (may
+                                             not move cursor)
+       form_feed                 ff     ff   hardcopy terminal
+                                             page eject (P*)
+       from_status_line          fsl    fs   return from status
+                                             line
+       goto_window               wingo  WG   go to window #1
+       hangup                    hup    HU   hang-up phone
+
+
+       init_1string              is1    i1   initialization
+                                             string
+       init_2string              is2    is   initialization
+                                             string
+       init_3string              is3    i3   initialization
+                                             string
+       init_file                 if     if   name of initializa-
+                                             tion file
+       init_prog                 iprog  iP   path name of program
+                                             for initialization
+       initialize_color          initc  Ic   initialize color #1
+                                             to (#2,#3,#4)
+       initialize_pair           initp  Ip   Initialize color
+                                             pair #1 to
+                                             fg=(#2,#3,#4),
+                                             bg=(#5,#6,#7)
+       insert_character          ich1   ic   insert character (P)
+       insert_line               il1    al   insert line (P*)
+       insert_padding            ip     ip   insert padding after
+                                             inserted character
+       key_a1                    ka1    K1   upper left of keypad
+       key_a3                    ka3    K3   upper right of key-
+                                             pad
+       key_b2                    kb2    K2   center of keypad
+       key_backspace             kbs    kb   backspace key
+       key_beg                   kbeg   @1   begin key
+       key_btab                  kcbt   kB   back-tab key
+       key_c1                    kc1    K4   lower left of keypad
+       key_c3                    kc3    K5   lower right of key-
+                                             pad
+       key_cancel                kcan   @2   cancel key
+       key_catab                 ktbc   ka   clear-all-tabs key
+       key_clear                 kclr   kC   clear-screen or
+                                             erase key
+       key_close                 kclo   @3   close key
+       key_command               kcmd   @4   command key
+       key_copy                  kcpy   @5   copy key
+       key_create                kcrt   @6   create key
+       key_ctab                  kctab  kt   clear-tab key
+       key_dc                    kdch1  kD   delete-character key
+       key_dl                    kdl1   kL   delete-line key
+       key_down                  kcud1  kd   down-arrow key
+       key_eic                   krmir  kM   sent by rmir or smir
+                                             in insert mode
+       key_end                   kend   @7   end key
+       key_enter                 kent   @8   enter/send key
+       key_eol                   kel    kE   clear-to-end-of-line
+                                             key
+       key_eos                   ked    kS   clear-to-end-of-
+                                             screen key
+       key_exit                  kext   @9   exit key
+       key_f0                    kf0    k0   F0 function key
+       key_f1                    kf1    k1   F1 function key
+
+       key_f10                   kf10   k;   F10 function key
+       key_f11                   kf11   F1   F11 function key
+       key_f12                   kf12   F2   F12 function key
+       key_f13                   kf13   F3   F13 function key
+       key_f14                   kf14   F4   F14 function key
+       key_f15                   kf15   F5   F15 function key
+       key_f16                   kf16   F6   F16 function key
+       key_f17                   kf17   F7   F17 function key
+       key_f18                   kf18   F8   F18 function key
+       key_f19                   kf19   F9   F19 function key
+       key_f2                    kf2    k2   F2 function key
+       key_f20                   kf20   FA   F20 function key
+       key_f21                   kf21   FB   F21 function key
+       key_f22                   kf22   FC   F22 function key
+       key_f23                   kf23   FD   F23 function key
+       key_f24                   kf24   FE   F24 function key
+       key_f25                   kf25   FF   F25 function key
+       key_f26                   kf26   FG   F26 function key
+       key_f27                   kf27   FH   F27 function key
+       key_f28                   kf28   FI   F28 function key
+       key_f29                   kf29   FJ   F29 function key
+       key_f3                    kf3    k3   F3 function key
+       key_f30                   kf30   FK   F30 function key
+       key_f31                   kf31   FL   F31 function key
+       key_f32                   kf32   FM   F32 function key
+       key_f33                   kf33   FN   F33 function key
+       key_f34                   kf34   FO   F34 function key
+       key_f35                   kf35   FP   F35 function key
+       key_f36                   kf36   FQ   F36 function key
+       key_f37                   kf37   FR   F37 function key
+       key_f38                   kf38   FS   F38 function key
+       key_f39                   kf39   FT   F39 function key
+       key_f4                    kf4    k4   F4 function key
+       key_f40                   kf40   FU   F40 function key
+       key_f41                   kf41   FV   F41 function key
+       key_f42                   kf42   FW   F42 function key
+       key_f43                   kf43   FX   F43 function key
+       key_f44                   kf44   FY   F44 function key
+       key_f45                   kf45   FZ   F45 function key
+       key_f46                   kf46   Fa   F46 function key
+       key_f47                   kf47   Fb   F47 function key
+       key_f48                   kf48   Fc   F48 function key
+       key_f49                   kf49   Fd   F49 function key
+       key_f5                    kf5    k5   F5 function key
+       key_f50                   kf50   Fe   F50 function key
+       key_f51                   kf51   Ff   F51 function key
+       key_f52                   kf52   Fg   F52 function key
+       key_f53                   kf53   Fh   F53 function key
+       key_f54                   kf54   Fi   F54 function key
+       key_f55                   kf55   Fj   F55 function key
+       key_f56                   kf56   Fk   F56 function key
+       key_f57                   kf57   Fl   F57 function key
+       key_f58                   kf58   Fm   F58 function key
+
+       key_f59                   kf59   Fn   F59 function key
+       key_f6                    kf6    k6   F6 function key
+       key_f60                   kf60   Fo   F60 function key
+       key_f61                   kf61   Fp   F61 function key
+       key_f62                   kf62   Fq   F62 function key
+       key_f63                   kf63   Fr   F63 function key
+       key_f7                    kf7    k7   F7 function key
+       key_f8                    kf8    k8   F8 function key
+       key_f9                    kf9    k9   F9 function key
+       key_find                  kfnd   @0   find key
+       key_help                  khlp   %1   help key
+       key_home                  khome  kh   home key
+       key_ic                    kich1  kI   insert-character key
+       key_il                    kil1   kA   insert-line key
+       key_left                  kcub1  kl   left-arrow key
+       key_ll                    kll    kH   lower-left key (home
+                                             down)
+       key_mark                  kmrk   %2   mark key
+       key_message               kmsg   %3   message key
+       key_move                  kmov   %4   move key
+       key_next                  knxt   %5   next key
+       key_npage                 knp    kN   next-page key
+       key_open                  kopn   %6   open key
+       key_options               kopt   %7   options key
+       key_ppage                 kpp    kP   previous-page key
+       key_previous              kprv   %8   previous key
+       key_print                 kprt   %9   print key
+       key_redo                  krdo   %0   redo key
+       key_reference             kref   &amp;1   reference key
+       key_refresh               krfr   &amp;2   refresh key
+       key_replace               krpl   &amp;3   replace key
+       key_restart               krst   &amp;4   restart key
+       key_resume                kres   &amp;5   resume key
+       key_right                 kcuf1  kr   right-arrow key
+       key_save                  ksav   &amp;6   save key
+       key_sbeg                  kBEG   &amp;9   shifted begin key
+       key_scancel               kCAN   &amp;0   shifted cancel key
+       key_scommand              kCMD   *1   shifted command key
+       key_scopy                 kCPY   *2   shifted copy key
+       key_screate               kCRT   *3   shifted create key
+       key_sdc                   kDC    *4   shifted delete-char-
+                                             acter key
+       key_sdl                   kDL    *5   shifted delete-line
+                                             key
+       key_select                kslt   *6   select key
+       key_send                  kEND   *7   shifted end key
+       key_seol                  kEOL   *8   shifted clear-to-
+                                             end-of-line key
+       key_sexit                 kEXT   *9   shifted exit key
+       key_sf                    kind   kF   scroll-forward key
+       key_sfind                 kFND   *0   shifted find key
+       key_shelp                 kHLP   #1   shifted help key
+       key_shome                 kHOM   #2   shifted home key
+
+       key_sic                   kIC    #3   shifted insert-char-
+                                             acter key
+       key_sleft                 kLFT   #4   shifted left-arrow
+                                             key
+       key_smessage              kMSG   %a   shifted message key
+       key_smove                 kMOV   %b   shifted move key
+       key_snext                 kNXT   %c   shifted next key
+       key_soptions              kOPT   %d   shifted options key
+       key_sprevious             kPRV   %e   shifted previous key
+       key_sprint                kPRT   %f   shifted print key
+       key_sr                    kri    kR   scroll-backward key
+       key_sredo                 kRDO   %g   shifted redo key
+       key_sreplace              kRPL   %h   shifted replace key
+       key_sright                kRIT   %i   shifted right-arrow
+                                             key
+       key_srsume                kRES   %j   shifted resume key
+       key_ssave                 kSAV   !1   shifted save key
+       key_ssuspend              kSPD   !2   shifted suspend key
+       key_stab                  khts   kT   set-tab key
+       key_sundo                 kUND   !3   shifted undo key
+       key_suspend               kspd   &amp;7   suspend key
+       key_undo                  kund   &amp;8   undo key
+       key_up                    kcuu1  ku   up-arrow key
+       keypad_local              rmkx   ke   leave 'key-
+                                             board_transmit' mode
+       keypad_xmit               smkx   ks   enter 'key-
+                                             board_transmit' mode
+       lab_f0                    lf0    l0   label on function
+                                             key f0 if not f0
+       lab_f1                    lf1    l1   label on function
+                                             key f1 if not f1
+       lab_f10                   lf10   la   label on function
+                                             key f10 if not f10
+       lab_f2                    lf2    l2   label on function
+                                             key f2 if not f2
+       lab_f3                    lf3    l3   label on function
+                                             key f3 if not f3
+       lab_f4                    lf4    l4   label on function
+                                             key f4 if not f4
+       lab_f5                    lf5    l5   label on function
+                                             key f5 if not f5
+       lab_f6                    lf6    l6   label on function
+                                             key f6 if not f6
+       lab_f7                    lf7    l7   label on function
+                                             key f7 if not f7
+       lab_f8                    lf8    l8   label on function
+                                             key f8 if not f8
+       lab_f9                    lf9    l9   label on function
+                                             key f9 if not f9
+       label_format              fln    Lf   label format
+       label_off                 rmln   LF   turn off soft labels
+       label_on                  smln   LO   turn on soft labels
+       meta_off                  rmm    mo   turn off meta mode
+
+       meta_on                   smm    mm   turn on meta mode
+                                             (8th-bit on)
+       micro_column_address      mhpa   ZY   Like column_address
+                                             in micro mode
+       micro_down                mcud1  ZZ   Like cursor_down in
+                                             micro mode
+       micro_left                mcub1  Za   Like cursor_left in
+                                             micro mode
+       micro_right               mcuf1  Zb   Like cursor_right in
+                                             micro mode
+       micro_row_address         mvpa   Zc   Like row_address in
+                                             micro mode
+       micro_up                  mcuu1  Zd   Like cursor_up in
+                                             micro mode
+       newline                   nel    nw   newline (behave like
+                                             cr followed by lf)
+       order_of_pins             porder Ze   Match software bits
+                                             to print-head pins
+       orig_colors               oc     oc   Set all color pairs
+                                             to the original ones
+       orig_pair                 op     op   Set default pair to
+                                             its original value
+       pad_char                  pad    pc   padding char
+                                             (instead of null)
+       parm_dch                  dch    DC   delete #1 characters
+                                             (P*)
+       parm_delete_line          dl     DL   delete #1 lines (P*)
+       parm_down_cursor          cud    DO   down #1 lines (P*)
+       parm_down_micro           mcud   Zf   Like parm_down_cur-
+                                             sor in micro mode
+       parm_ich                  ich    IC   insert #1 characters
+                                             (P*)
+       parm_index                indn   SF   scroll forward #1
+                                             lines (P)
+       parm_insert_line          il     AL   insert #1 lines (P*)
+       parm_left_cursor          cub    LE   move #1 characters
+                                             to the left (P)
+       parm_left_micro           mcub   Zg   Like parm_left_cur-
+                                             sor in micro mode
+       parm_right_cursor         cuf    RI   move #1 characters
+                                             to the right (P*)
+       parm_right_micro          mcuf   Zh   Like parm_right_cur-
+                                             sor in micro mode
+       parm_rindex               rin    SR   scroll back #1 lines
+                                             (P)
+       parm_up_cursor            cuu    UP   up #1 lines (P*)
+       parm_up_micro             mcuu   Zi   Like parm_up_cursor
+                                             in micro mode
+       pkey_key                  pfkey  pk   program function key
+                                             #1 to type string #2
+       pkey_local                pfloc  pl   program function key
+                                             #1 to execute string
+                                             #2
+
+       pkey_xmit                 pfx    px   program function key
+                                             #1 to transmit
+                                             string #2
+       plab_norm                 pln    pn   program label #1 to
+                                             show string #2
+       print_screen              mc0    ps   print contents of
+                                             screen
+       prtr_non                  mc5p   pO   turn on printer for
+                                             #1 bytes
+       prtr_off                  mc4    pf   turn off printer
+       prtr_on                   mc5    po   turn on printer
+       pulse                     pulse  PU   select pulse dialing
+       quick_dial                qdial  QD   dial number #1 with-
+                                             out checking
+       remove_clock              rmclk  RC   remove clock
+       repeat_char               rep    rp   repeat char #1 #2
+                                             times (P*)
+       req_for_input             rfi    RF   send next input char
+                                             (for ptys)
+       reset_1string             rs1    r1   reset string
+       reset_2string             rs2    r2   reset string
+       reset_3string             rs3    r3   reset string
+       reset_file                rf     rf   name of reset file
+       restore_cursor            rc     rc   restore cursor to
+                                             position of last
+                                             save_cursor
+       row_address               vpa    cv   vertical position #1
+                                             absolute (P)
+       save_cursor               sc     sc   save current cursor
+                                             position (P)
+       scroll_forward            ind    sf   scroll text up (P)
+       scroll_reverse            ri     sr   scroll text down (P)
+       select_char_set           scs    Zj   Select character set
+       set_attributes            sgr    sa   define video
+                                             attributes #1-#9
+                                             (PG9)
+       set_background            setb   Sb   Set background color
+                                             #1
+       set_bottom_margin         smgb   Zk   Set bottom margin at
+                                             current line
+       set_bottom_margin_parm    smgbp  Zl   Set bottom margin at
+                                             line #1 or #2 lines
+                                             from bottom
+       set_clock                 sclk   SC   set clock, #1 hrs #2
+                                             mins #3 secs
+       set_color_pair            scp    sp   Set current color
+                                             pair to #1
+       set_foreground            setf   Sf   Set foreground color
+                                             #1
+       set_left_margin           smgl   ML   set left soft margin
+                                             at current column
+
+
+
+       set_left_margin_parm      smglp  Zm   Set left (right)
+                                             margin at column #1
+                                             (#2)
+       set_right_margin          smgr   MR   set right soft mar-
+                                             gin at current col-
+                                             umn
+       set_right_margin_parm     smgrp  Zn   Set right margin at
+                                             column #1
+       set_tab                   hts    st   set a tab in every
+                                             row, current columns
+       set_top_margin            smgt   Zo   Set top margin at
+                                             current line
+       set_top_margin_parm       smgtp  Zp   Set top (bottom)
+                                             margin at row #1
+                                             (#2)
+       set_window                wind   wi   current window is
+                                             lines #1-#2 cols
+                                             #3-#4
+       start_bit_image           sbim   Zq   Start printing bit
+                                             image graphics
+       start_char_set_def        scsd   Zr   Start character set
+                                             definition
+       stop_bit_image            rbim   Zs   Stop printing bit
+                                             image graphics
+       stop_char_set_def         rcsd   Zt   End definition of
+                                             character set
+       subscript_characters      subcs  Zu   List of subscript-
+                                             able characters
+       superscript_characters    supcs  Zv   List of superscript-
+                                             able characters
+       tab                       ht     ta   tab to next 8-space
+                                             hardware tab stop
+       these_cause_cr            docr   Zw   Printing any of
+                                             these characters
+                                             causes CR
+       to_status_line            tsl    ts   move to status line
+       tone                      tone   TO   select touch tone
+                                             dialing
+       underline_char            uc     uc   underline char and
+                                             move past it
+       up_half_line              hu     hu   half a line up
+       user0                     u0     u0   User string #0
+       user1                     u1     u1   User string #1
+       user2                     u2     u2   User string #2
+       user3                     u3     u3   User string #3
+       user4                     u4     u4   User string #4
+       user5                     u5     u5   User string #5
+       user6                     u6     u6   User string #6
+       user7                     u7     u7   User string #7
+       user8                     u8     u8   User string #8
+       user9                     u9     u9   User string #9
+       wait_tone                 wait   WA   wait for dial-tone
+       xoff_character            xoffc  XF   XOFF character
+
+       xon_character             xonc   XN   XON character
+       zero_motion               zerom  Zx   No motion for subse-
+                                             quent character
+
+       The following  string  capabilities  are  present  in  the
+       SVr4.0  term structure, but were originally not documented
+       in the man page.
+
+               <B>Variable</B>          <B>Cap-</B>     <B>TCap</B>    <B>Description</B>
+                <B>String</B>           <B>name</B>     <B>Code</B>
+       alt_scancode_esc          scesa    S8   Alternate escape
+                                               for scancode emu-
+                                               lation
+       bit_image_carriage_return bicr     Yv   Move to beginning
+                                               of same row
+       bit_image_newline         binel    Zz   Move to next row
+                                               of the bit image
+       bit_image_repeat          birep    Xy   Repeat bit image
+                                               cell #1 #2 times
+       char_set_names            csnm     Zy   List of character
+                                               set names
+       code_set_init             csin     ci   Init sequence for
+                                               multiple codesets
+       color_names               colornm  Yw   Give name for
+                                               color #1
+       define_bit_image_region   defbi    Yx   Define rectan-
+                                               gualar bit image
+                                               region
+       device_type               devt     dv   Indicate lan-
+                                               guage/codeset sup-
+                                               port
+       display_pc_char           dispc    S1   Display PC charac-
+                                               ter
+       end_bit_image_region      endbi    Yy   End a bit-image
+                                               region
+       enter_pc_charset_mode     smpch    S2   Enter PC character
+                                               display mode
+       enter_scancode_mode       smsc     S4   Enter PC scancode
+                                               mode
+       exit_pc_charset_mode      rmpch    S3   Exit PC character
+                                               display mode
+       exit_scancode_mode        rmsc     S5   Exit PC scancode
+                                               mode
+       get_mouse                 getm     Gm   Curses should get
+                                               button events
+       key_mouse                 kmous    Km   Mouse event has
+                                               occurred
+       mouse_info                minfo    Mi   Mouse status
+                                               information
+       pc_term_options           pctrm    S6   PC terminal
+                                               options
+
+
+
+       pkey_plab                 pfxl     xl   Program function
+                                               key #1 to type
+                                               string #2 and show
+                                               string #3
+       req_mouse_pos             reqmp    RQ   Request mouse
+                                               position
+       scancode_escape           scesc    S7   Escape for scan-
+                                               code emulation
+       set0_des_seq              s0ds     s0   Shift to code set
+                                               0 (EUC set 0,
+                                               ASCII)
+       set1_des_seq              s1ds     s1   Shift to code set
+                                               1
+       set2_des_seq              s2ds     s2   Shift to code set
+                                               2
+       set3_des_seq              s3ds     s3   Shift to code set
+                                               3
+       set_a_background          setab    AB   Set background
+                                               color using ANSI
+                                               escape
+       set_a_foreground          setaf    AF   Set foreground
+                                               color using ANSI
+                                               escape
+       set_color_band            setcolor Yz   Change to ribbon
+                                               color #1
+       set_lr_margin             smglr    ML   Set both left and
+                                               right margins to
+                                               #1, #2
+       set_page_length           slines   YZ   Set page length to
+                                               #1 lines
+       set_tb_margin             smgtb    MT   Sets both top and
+                                               bottom margins to
+                                               #1, #2
+
+        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 <B>ncurses</B> 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 entries after SVr4.1; beware!
+
+                <B>Variable</B>         <B>Cap-</B>   <B>TCap</B>     <B>Description</B>
+                 <B>String</B>          <B>name</B>   <B>Code</B>
+        enter_horizontal_hl_mode ehhlm  Xh   Enter horizontal
+                                             highlight mode
+        enter_left_hl_mode       elhlm  Xl   Enter left highlight
+                                             mode
+        enter_low_hl_mode        elohlm Xo   Enter low highlight
+                                             mode
+        enter_right_hl_mode      erhlm  Xr   Enter right high-
+                                             light mode
+
+
+        enter_top_hl_mode        ethlm  Xt   Enter top highlight
+                                             mode
+        enter_vertical_hl_mode   evhlm  Xv   Enter vertical high-
+                                             light mode
+        set_a_attributes         sgr1   sA   Define second set of
+                                             video attributes
+                                             #1-#6
+        set_pglen_inch           slengthsL   YI Set page length
+                                             to #1 hundredth of
+                                             an inch
+
+
+   <B>A</B> <B>Sample</B> <B>Entry</B>
+       The following entry, describing an ANSI-standard terminal,
+       is  representative  of  what a <B>terminfo</B> entry for a modern
+       terminal typically looks like.
+
+     ansi|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,
+
+       Entries may continue onto multiple lines by placing  white
+       space  at  the  beginning  of  each line except the first.
+       Comments may be included on lines  beginning  with  ``#''.
+       Capabilities in <I>terminfo</I> are of three types: Boolean capa-
+       bilities which indicate that the terminal has some partic-
+       ular  feature, numeric capabilities giving the size of the
+       terminal or the size  of  particular  delays,  and  string
+       capabilities,  which  give a sequence which can be used to
+       perform particular terminal operations.
+
+
+   <B>Types</B> <B>of</B> <B>Capabilities</B>
+       All capabilities have names.  For instance, the fact  that
+       ANSI-standard  terminals  have <I>automatic</I> <I>margins</I> (i.e., an
+       automatic return and line-feed when the end of a  line  is
+       reached)  is  indicated  by  the capability <B>am</B>.  Hence the
+       description of ansi includes <B>am</B>.  Numeric capabilities are
+       followed  by  the character `#' and then a positive value.
+       Thus <B>cols</B>, which indicates the number of columns the  ter-
+       minal  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).
+
+       Finally, string valued capabilities, such as <B>el</B> (clear  to
+       end of line sequence) are given by the two-character code,
+       an `=', and then a string ending  at  the  next  following
+       `,'.
+
+       A  number  of  escape sequences are provided in the string
+       valued capabilities for easy encoding of characters there.
+       Both  <B>\E</B>  and  <B>\e</B> map to an ESCAPE character, <B>^x</B> maps to a
+       control-x for any appropriate x, and the sequences  <B>\n</B>  <B>\l</B>
+       <B>\r</B>  <B>\t</B>  <B>\b</B>  <B>\f</B>  <B>\s</B> give a newline, line-feed, return, tab,
+       backspace, form-feed, and space.  Other escapes include <B>\^</B>
+       for  <B>^</B>, <B>\\</B> for <B>\</B>, <B>\</B>, for comma, <B>\:</B> for <B>:</B>, and <B>\0</B> for null.
+       (<B>\0</B> will produce \200, which does not terminate  a  string
+       but behaves as a null character on most terminals, provid-
+       ing CS7 is specified.  See <B><A HREF="stty.1.html">stty(1)</A></B>.)  Finally,  characters
+       may be given as three octal digits after a <B>\</B>.
+
+       A  delay  in  milliseconds may appear anywhere in a string
+       capability, enclosed in $&lt;..&gt; brackets, as in  <B>el</B>=\EK$&lt;5&gt;,
+       and  padding  characters  are supplied by <I>tputs</I> to provide
+       this delay.  The delay must be a number with at  most  one
+       decimal place of precision; it may be followed by suffixes
+       `*' or '/' or both.  A  `*'  indicates  that  the  padding
+       required  is  proportional to the number of lines affected
+       by the  operation,  and  the  amount  given  is  the  per-
+       affected-unit  padding  required.   (In the case of insert
+       character,  the  factor  is  still  the  number  of  <I>lines</I>
+       affected.)   Normally,  padding  is advisory if the device
+       has the <B>xon</B> capability; it is used  for  cost  computation
+       but  does not trigger delays.  A `/' suffix indicates that
+       the padding is mandatory and forces a delay of  the  given
+       number  of  milliseconds  even on devices for which <B>xon</B> is
+       present to indicate flow control.
+
+       Sometimes individual capabilities must be  commented  out.
+       To  do this, put a period before the capability name.  For
+       example, see the second <B>ind</B> in the example above.
+
+
+   <B>Fetching</B> <B>Compiled</B> <B>Descriptions</B>
+       If the environment variable TERMINFO is set, it is  inter-
+       preted  as the pathname of a directory containing the com-
+       piled description you are working on.  Only that directory
+       is searched.
+
+       If  TERMINFO  is  not  set,  the  <B>ncurses</B>  version  of the
+       terminfo reader code will instead look  in  the  directory
+       <B>$HOME/.terminfo</B>  for  a compiled description.  If it fails
+       to find one  there,  and  the  environment  variable  TER-
+       MINFO_DIRS  is set, it will interpret the contents of that
+       variable as a list of colon- separated directories  to  be
+       searched  (an  empty  entry is interpreted as a command to
+       search <I>@DATADIR@/terminfo</I>).  If no description is found in
+       any of the TERMINFO_DIRS directories, the fetch fails.
+
+       If  neither  TERMINFO  nor  TERMINFO_DIRS is set, the last
+       place  tried  will  be  the  system  terminfo   directory,
+       <I>@DATADIR@/terminfo</I>.
+
+       (Neither  the  <B>$HOME/.terminfo</B>  lookups  nor TERMINFO_DIRS
+       extensions  are  supported  under  stock  System  V   ter-
+       minfo/curses.)
+
+
+   <B>Preparing</B> <B>Descriptions</B>
+       We  now  outline how to prepare descriptions of terminals.
+       The most effective way to prepare a  terminal  description
+       is  by  imitating the description of a similar terminal in
+       <I>terminfo</I> and to build up a  description  gradually,  using
+       partial descriptions with <I>vi</I> or some other screen-oriented
+       program to check that they are correct.  Be aware  that  a
+       very unusual terminal may expose deficiencies in the abil-
+       ity of the <I>terminfo</I> file to describe it  or  bugs  in  the
+       screen-handling code of the test program.
+
+       To  get the padding for insert line right (if the terminal
+       manufacturer 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 usu-
+       ally needed.  A similar test can be used for insert  char-
+       acter.
+
+
+   <B>Basic</B> <B>Capabilities</B>
+       The  number  of  columns  on each line for the terminal is
+       given by the <B>cols</B> numeric capability.  If the terminal  is
+       a  CRT, then the number of lines on the screen is given by
+       the <B>lines</B> capability.  If the terminal wraps around to the
+       beginning  of the next line when it reaches the right mar-
+       gin, then it should have the <B>am</B> capability.  If the termi-
+       nal  can  clear its screen, leaving the cursor in the home
+       position, then this is given by the <B>clear</B> string  capabil-
+       ity.   If the terminal overstrikes (rather than clearing a
+       position when a character is struck over) then  it  should
+       have  the  <B>os</B>  capability.   If the terminal is a printing
+       terminal, with no soft copy unit, give it both <B>hc</B> and  <B>os</B>.
+       (<B>os</B>  applies to storage scope terminals, such as TEKTRONIX
+       4010 series, as well as hard copy and APL terminals.)   If
+       there is a code to move the cursor to the left edge of the
+       current row, give this as <B>cr</B>.  (Normally this will be car-
+       riage  return,  control M.)  If there is a code to produce
+       an audible signal (bell, beep, etc) give this as <B>bel</B>.
+
+       If there is a code to move the cursor one position to  the
+       left  (such  as backspace) that capability should be given
+       as <B>cub1</B>.  Similarly, codes to move to the right,  up,  and
+       down should be given as <B>cuf1</B>, <B>cuu1</B>, and <B>cud1</B>.  These local
+       cursor motions should not alter the text they  pass  over,
+       for  example,  you would not normally use `<B>cuf1</B>= ' because
+       the space would erase the character moved over.
+
+       A very important point  here  is  that  the  local  cursor
+       motions  encoded in <I>terminfo</I> are undefined at the left and
+       top edges  of  a  CRT  terminal.   Programs  should  never
+       attempt  to  backspace  around the left edge, unless <B>bw</B> is
+       given, and never attempt to go up locally off the top.  In
+       order  to  scroll text up, a program will go to the bottom
+       left corner of the screen and send the <B>ind</B> (index) string.
+
+       To scroll text down, a program goes to the top left corner
+       of the screen and sends the  <B>ri</B>  (reverse  index)  string.
+       The  strings  <B>ind</B>  and  <B>ri</B> are undefined when not on their
+       respective corners of the screen.
+
+       Parameterized versions of the scrolling sequences are <B>indn</B>
+       and <B>rin</B> which have the same semantics as <B>ind</B> and <B>ri</B> except
+       that they take one parameter, and scroll that many  lines.
+       They  are also undefined except at the appropriate edge of
+       the screen.
+
+       The <B>am</B> capability tells whether the cursor sticks  at  the
+       right  edge  of  the  screen when text is output, but this
+       does not necessarily apply to a <B>cuf1</B> from the last column.
+       The  only local motion which is defined from the left edge
+       is if <B>bw</B> is given, then a <B>cub1</B> from  the  left  edge  will
+       move  to the right edge of the previous row.  If <B>bw</B> is not
+       given, the effect is undefined.  This is useful for  draw-
+       ing  a box around the edge of the screen, for example.  If
+       the terminal has switch selectable automatic margins,  the
+       <I>terminfo</I>  file  usually assumes that this is on; i.e., <B>am</B>.
+       If the terminal has a command which  moves  to  the  first
+       column  of the next line, that command can be given as <B>nel</B>
+       (newline).  It does not matter if the command  clears  the
+       remainder  of  the current line, so if the terminal has no
+       <B>cr</B> and <B>lf</B> it may still be possible to craft a working  <B>nel</B>
+       out of one or both of them.
+
+       These  capabilities  suffice  to  describe  hard-copy  and
+       "glass-tty" terminals.  Thus  the  model  33  teletype  is
+       described as
+
+     33|tty33|tty|model 33 teletype,
+     bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,
+       while the Lear Siegler ADM-3 is described as
+
+     adm3|3|lsi adm3,
+     am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
+     ind=^J, lines#24,
+
+
+   <B>Parameterized</B> <B>Strings</B>
+       Cursor  addressing  and other strings requiring parameters
+       in the terminal are described by  a  parameterized  string
+       capability,  with  <B><A HREF="printf.3S.html">printf(3S)</A></B>  like escapes <B>%x</B> in it.  For
+       example, to address the  cursor,  the  <B>cup</B>  capability  is
+       given, using two parameters: the row and column to address
+       to.  (Rows and columns are numbered from zero and refer to
+       the physical screen visible to the user, not to any unseen
+       memory.)  If  the  terminal  has  memory  relative  cursor
+       addressing, that can be indicated by <B>mrcup</B>.
+
+       The  parameter  mechanism uses a stack and special <B>%</B> 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 <B>%</B> encodings have the following meanings:
+
+            %%        outputs `%'
+            %<I>[[</I>:<I>]flags][width[.precision]][</I>doxXs<I>]</I>
+                      as in <B>printf</B>, flags are [-+#] and space
+            %c        print pop() like %c in printf()
+            %s        print pop() like %s in printf()
+
+            %p[1-9]   push <I>i</I>'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
+            %'<I>c</I>'      char constant <I>c</I>
+            %{<I>nn</I>}     integer constant <I>nn</I>
+            %l        push strlen(pop)
+
+            %+ %- %* %/ %m
+                      arithmetic (%m is mod): push(pop() op pop())
+            %&amp; %| %^  bit operations: push(pop() op pop())
+            %= %&gt; %&lt;  logical operations: push(pop() op pop())
+            %A, %O    logical and &amp; or operations (for conditionals)
+            %! %~     unary operations push(op pop())
+            %i        add 1 to first two parameters (for ANSI terminals)
+
+            %? expr %t thenpart %e elsepart %;
+                      if-then-else, %e elsepart is optional.
+                      else-if's are possible a la Algol 68:
+                      %? c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e c4 %t b4 %e %;
+                      ci are conditions, bi are bodies.
+
+       Binary operations are in postfix form with the operands in
+       the  usual  order.   That  is,  to  get  x-5 one would use
+       "%gx%{5}%-".  %P and %g variables  are  persistent  across
+       escape-string evaluations.
+
+       Consider the HP2645, which, to get to row 3 and column 12,
+       needs to be sent \E&amp;a12c03Y  padded  for  6  milliseconds.
+       Note  that  the  order of the rows and columns is inverted
+       here, and that the row and column are printed as two  dig-
+       its.  Thus its <B>cup</B> capability is "cup=6\E&amp;%p2%2dc%p1%2dY".
+
+       The Microterm ACT-IV needs the current row and column sent
+       preceded  by  a <B>^T</B>, with the row and column simply encoded
+       in binary, "cup=^T%p1%c%p2%c".  Terminals which  use  "%c"
+       need  to  be  able  to backspace the cursor (<B>cub1</B>), and to
+       move the cursor up one line on the screen (<B>cuu1</B>).  This is
+       necessary  because it is not always safe to transmit <B>\n</B> <B>^D</B>
+       and <B>\r</B>, as the system may change or  discard  them.   (The
+       library  routines  dealing  with terminfo set tty modes so
+       that tabs are never expanded, so \t is safe to send.  This
+       turns out to be essential for the Ann Arbor 4080.)
+
+       A final example is the LSI ADM-3a, which uses row and col-
+       umn  offset  by  a  blank  character,  thus  "cup=\E=%p1%'
+       '%+%c%p2%'  '%+%c".   After sending `\E=', this pushes the
+       first parameter, pushes the ASCII value for a space  (32),
+       adds  them  (pushing  the sum on the stack in place of the
+       two previous values) and outputs that value as  a  charac-
+       ter.   Then  the  same  is  done for the second parameter.
+       More complex arithmetic is possible using the stack.
+
+
+   <B>Cursor</B> <B>Motions</B>
+       If the terminal has a fast way to home the cursor (to very
+       upper  left  corner  of  screen) then this can be given as
+       <B>home</B>; similarly a fast way of getting to the  lower  left-
+       hand  corner can be given as <B>ll</B>; this may involve going up
+       with <B>cuu1</B> from the home position,  but  a  program  should
+       never  do this itself (unless <B>ll</B> 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 \EH sequence on HP terminals
+       cannot be used for <B>home</B>.)
+
+       If the terminal has row or column absolute cursor address-
+       ing,  these  can be given as single parameter capabilities
+       <B>hpa</B> (horizontal position absolute) and <B>vpa</B> (vertical posi-
+       tion 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</B>.  If there are parameter-
+       ized local motions (e.g., move  <I>n</I>  spaces  to  the  right)
+       these can be given as <B>cud</B>, <B>cub</B>, <B>cuf</B>, and <B>cuu</B> with a single
+       parameter indicating how many spaces to move.   These  are
+       primarily  useful  if the terminal does not have <B>cup</B>, such
+       as the TEKTRONIX 4025.
+
+       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 <B>smcup</B> and <B>rmcup</B>.   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 TEKTRONIX 4025, where <B>smcup</B> sets
+       the  command character to be the one used by terminfo.  If
+       the <B>smcup</B> sequence will not restore the  screen  after  an
+       <B>rmcup</B> sequence is output (to the state prior to outputting
+       <B>rmcup</B>), specify <B>nrrmc</B>.
+
+
+   <B>Area</B> <B>Clears</B>
+       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 <B>el</B>.  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
+       <B>el1</B>.   If the terminal can clear from the current position
+       to the end of the display, then this should  be  given  as
+       <B>ed</B>.   <B>Ed</B>  is only defined from the first column of a line.
+       (Thus, it can be simulated by a request to delete a  large
+       number of lines, if a true <B>ed</B> is not available.)
+
+
+   <B>Insert/delete</B> <B>line</B> <B>and</B> <B>vertical</B> <B>motions</B>
+       If  the terminal can open a new blank line before the line
+       where the cursor is, this should be given as <B>il1</B>; this  is
+       done  only  from the first position of a line.  The cursor
+       must then appear on the newly blank line.  If the terminal
+       can  delete  the  line  which  the cursor is on, then this
+       should be given as <B>dl1</B>; this is done only from  the  first
+       position  on  the line to be deleted.  Versions of <B>il1</B> and
+       <B>dl1</B> which take a single parameter  and  insert  or  delete
+       that many lines can be given as <B>il</B> and <B>dl</B>.
+
+       If  the terminal has a settable scrolling region (like the
+       vt100) the command to set this can be described  with  the
+       <B>csr</B>  capability,  which  takes two parameters: the top and
+       bottom lines of the scrolling region.  The cursor position
+       is, alas, undefined after using this command.
+
+       It  is possible to get the effect of insert or delete line
+       using <B>csr</B> on a properly chosen region; the <B>sc</B> and <B>rc</B> (save
+       and  restore  cursor)  commands may be useful for ensuring
+       that your synthesized insert/delete string does  not  move
+       the  cursor.  (Note that the <B><A HREF="ncurses.3x.html">ncurses(3x)</A></B> library does this
+       synthesis  automatically,  so   you   need   not   compose
+       insert/delete strings for an entry with <B>csr</B>).
+
+       Yet another way to construct insert and delete might be to
+       use a combination of index with  the  memory-lock  feature
+       found  on some terminals (like the HP-700/90 series, which
+       however also has insert/delete).
+
+       Inserting lines at the top or bottom  of  the  screen  can
+       also  be  done using <B>ri</B> or <B>ind</B> on many terminals without a
+       true insert/delete line, and is often faster even on  ter-
+       minals with those features.
+
+       The  boolean  <B>non_dest_scroll_region</B> 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, write  some-
+       thing  to  the  bottom line, move the cursor to the top of
+       the region, and do <B>ri</B> followed by <B>dl1</B> or <B>ind</B>.  If the data
+       scrolled  off  the  bottom  of  the  region  by the <B>ri</B> re-
+       appears, then scrolling is non-destructive.  System V  and
+       XSI  Curses  expect that <B>ind</B>, <B>ri</B>, <B>indn</B>, and <B>rin</B> will simu-
+       late destructive scrolling; their  documentation  cautions
+       you  not  to  define <B>csr</B> unless this is true.  This <B>curses</B>
+       implementation is more liberal and will do explicit erases
+       after scrolling if <B>ndstr</B> is defined.
+
+       If the terminal has the ability to define a window as part
+       of memory, which all commands affect, it should  be  given
+       as the parameterized string <B>wind</B>.  The four parameters are
+       the starting and ending lines in memory and  the  starting
+       and ending columns in memory, in that order.
+
+       If  the terminal can retain display memory above, then the
+       <B>da</B> capability should be given; if display  memory  can  be
+       retained  below,  then <B>db</B> should be given.  These indicate
+       that deleting a line  or  scrolling  may  bring  non-blank
+       lines  up  from  below  or that scrolling back with <B>ri</B> may
+       bring down non-blank lines.
+
+
+   <B>Insert/Delete</B> <B>Character</B>
+       There are two basic kinds of  intelligent  terminals  with
+       respect  to insert/delete character which can be described
+       using <I>terminfo.</I>  The most common  insert/delete  character
+       operations  affect only the characters on the current line
+       and shift characters off the  end  of  the  line  rigidly.
+       Other  terminals,  such  as the Concept 100 and the Perkin
+       Elmer Owl, make a distinction between  typed  and  untyped
+       blanks  on  the  screen, shifting upon an insert or delete
+       only to an untyped blank on the  screen  which  is  either
+       eliminated,  or  expanded  to two untyped blanks.  You can
+       determine the kind of terminal you have  by  clearing  the
+       screen  and  then typing text separated by cursor motions.
+       Type "abc    def" using local cursor motions (not  spaces)
+       between the "abc" and the "def".  Then position the cursor
+       before the "abc" and put the terminal in insert mode.   If
+       typing  characters  causes  the  rest of the line to shift
+       rigidly and characters to fall off the end, then your ter-
+       minal  does  not  distinguish  between  blanks and untyped
+       positions.  If the "abc" shifts over to  the  "def"  which
+       then  move together around the end of the current line and
+       onto the next as you insert, you have the second  type  of
+       terminal,  and should give the capability <B>in</B>, which stands
+       for "insert null".  While these are two logically separate
+       attributes  (one line vs. multi-line insert mode, and spe-
+       cial treatment of untyped spaces) we have seen  no  termi-
+       nals whose insert mode cannot be described with the single
+       attribute.
+
+       Terminfo can describe both terminals which have an  insert
+       mode, and terminals which send a simple sequence to open a
+       blank position on the current  line.   Give  as  <B>smir</B>  the
+       sequence  to  get  into  insert  mode.   Give  as <B>rmir</B> the
+       sequence to leave insert  mode.   Now  give  as  <B>ich1</B>  any
+       sequence needed to be sent just before sending the charac-
+       ter to be inserted.  Most terminals  with  a  true  insert
+       mode  will  not give <B>ich1</B>; terminals which send a sequence
+       to open a screen position should give it here.
+
+       If your terminal has both, insert mode is usually  prefer-
+       able  to  <B>ich1</B>.   Technically,  you  should  not give both
+       unless the terminal actually requires both to be  used  in
+       combination.   Accordingly,  some  non-curses applications
+       get confused if both are present; the symptom  is  doubled
+       characters in an update using insert.  This requirement is
+       now rare; most <B>ich</B> sequences do not require previous smir,
+       and most smir insert modes do not require <B>ich1</B> before each
+       character.  Therefore, the  new  <B>curses</B>  actually  assumes
+       this  is the case and uses either <B>rmir</B>/<B>smir</B> or <B>ich</B>/<B>ich1</B> as
+       appropriate (but not both).  If you have to write an entry
+       to  be  used under new curses for a terminal old enough to
+       need both, include the <B>rmir</B>/<B>smir</B> sequences in <B>ich1</B>.
+
+       If post insert padding is needed, give this as a number of
+       milliseconds  in <B>ip</B> (a string option).  Any other sequence
+       which may need to be sent after  an  insert  of  a  single
+       character may also be given in <B>ip</B>.  If your terminal needs
+       both to be placed into an `insert mode' and a special code
+       to  precede  each  inserted character, then both <B>smir</B>/<B>rmir</B>
+       and <B>ich1</B> can be given, and both will  be  used.   The  <B>ich</B>
+       capability, with one parameter, <I>n</I>, will repeat the effects
+       of <B>ich1</B> <I>n</I> times.
+
+       If padding is necessary between characters typed while not
+       in  insert  mode,  give  this  as a number of milliseconds
+       padding in <B>rmp</B>.
+
+       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 insert mode you can give
+       the capability <B>mir</B> to speed up  inserting  in  this  case.
+       Omitting  <B>mir</B>  will  affect  only  speed.   Some terminals
+       (notably Datamedia's) must not have <B>mir</B> because of the way
+       their insert mode works.
+
+       Finally,  you  can specify <B>dch1</B> to delete a single charac-
+       ter, <B>dch</B> with one parameter, <I>n</I>, to  delete  <I>n</I>  <I>characters,</I>
+       and  delete mode by giving <B>smdc</B> and <B>rmdc</B> to enter and exit
+       delete mode (any mode the terminal needs to be  placed  in
+       for <B>dch1</B> to work).
+
+       A  command to erase <I>n</I> characters (equivalent to outputting
+       <I>n</I> blanks without moving the cursor) can be  given  as  <B>ech</B>
+       with one parameter.
+
+
+   <B>Highlighting,</B> <B>Underlining,</B> <B>and</B> <B>Visible</B> <B>Bells</B>
+       If  your  terminal  has  one  or  more  kinds  of  display
+       attributes, these can be represented in a number  of  dif-
+       ferent ways.  You should choose one display form as <I>stand-</I>
+       <I>out</I> <I>mode</I>, representing a good, high contrast, easy-on-the-
+       eyes,  format  for  highlighting  error messages and other
+       attention getters.  (If you have a choice,  reverse  video
+       plus  half-bright  is  good, or reverse video alone.)  The
+       sequences to enter and exit standout  mode  are  given  as
+       <B>smso</B>  and  <B>rmso</B>, respectively.  If the code to change into
+       or out of standout mode  leaves  one  or  even  two  blank
+       spaces  on the screen, as the TVI 912 and Teleray 1061 do,
+       then <B>xmc</B> should be given to tell how many spaces are left.
+
+       Codes  to  begin  underlining  and  end underlining can be
+       given as <B>smul</B> and <B>rmul</B> respectively.  If the terminal  has
+       a  code  to  underline  the current character and move the
+       cursor one space to the right, such as the Microterm Mime,
+       this can be given as <B>uc</B>.
+
+       Other  capabilities  to  enter  various highlighting modes
+       include <B>blink</B> (blinking) <B>bold</B> (bold or extra  bright)  <B>dim</B>
+       (dim  or  half-bright)  <B>invis</B> (blanking or invisible text)
+       <B>prot</B> (protected) <B>rev</B> (reverse video) <B>sgr0</B>  (turn  off  <I>all</I>
+       attribute  modes)  <B>smacs</B>  (enter  alternate  character set
+       mode) and  <B>rmacs</B>  (exit  alternate  character  set  mode).
+       Turning  on  any of these modes singly may or may not turn
+       off other modes.
+
+       If there is a sequence to set  arbitrary  combinations  of
+       modes,  this should be given as <B>sgr</B> (set attributes), tak-
+       ing 9 parameters.  Each parameter is either 0 or  nonzero,
+       as the corresponding attribute is on or off.  The 9 param-
+       eters are, in order: standout, underline, reverse,  blink,
+       dim,  bold,  blank, protect, alternate character set.  Not
+       all modes need be supported by <B>sgr</B>, only those  for  which
+       corresponding separate attribute commands exist.
+
+       For example, the DEC vt220 supports most of the modes:
+
+           <B>tparm</B> <B>parameter</B>   <B>attribute</B>    <B>escape</B> <B>sequence</B>
+
+           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)
+
+       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  era-
+       sures.   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.
+
+       Some sequences are common to different modes.   For  exam-
+       ple,  ;7  is output when either p1 or p3 is true, that is,
+       if either standout or reverse modes are turned on.
+
+       Writing out the above sequences, along with  their  depen-
+       dencies yields
+
+         <B>sequence</B>    <B>when</B> <B>to</B> <B>output</B>     <B>terminfo</B> <B>translation</B>
+
+         \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%;
+
+       Putting this all together into the sgr sequence gives:
+
+           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%;,
+
+       Remember  that  if  you specify sgr, you must also specify
+       sgr0.
+       Terminals with the ``magic cookie'' glitch  (<B>xmc</B>)  deposit
+       special   ``cookies''   when   they  receive  mode-setting
+       sequences, which affect the display algorithm rather  than
+       having  extra  bits  for  each character.  Some terminals,
+       such as the HP 2621,  automatically  leave  standout  mode
+       when  they  move to a new line or the cursor is addressed.
+       Programs using standout mode  should  exit  standout  mode
+       before  moving the cursor or sending a newline, unless the
+       <B>msgr</B> capability, asserting that it  is  safe  to  move  in
+       standout mode, is present.
+
+       If  the terminal has a way of flashing the screen to indi-
+       cate an error quietly (a bell replacement) then  this  can
+       be given as <B>flash</B>; it must not move the cursor.
+
+       If  the  cursor  needs to be made more visible than normal
+       when it is not on the bottom line (to make, for example, a
+       non-blinking  underline  into  an  easier to find block or
+       blinking underline) give this sequence as <B>cvvis</B>.  If there
+       is  a  way  to  make the cursor completely invisible, give
+       that as <B>civis</B>.  The capability <B>cnorm</B> should be given which
+       undoes the effects of both of these modes.
+
+       If your terminal correctly generates underlined characters
+       (with no special codes needed) even  though  it  does  not
+       overstrike,  then you should give the capability <B>ul</B>.  If a
+       character overstriking another leaves both  characters  on
+       the screen, specify the capability <B>os</B>.  If overstrikes are
+       erasable with a blank, then this should  be  indicated  by
+       giving <B>eo</B>.
+
+
+   <B>Keypad</B> <B>and</B> <B>Function</B> <B>Keys</B>
+       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 terminals where the keypad
+       only works in local (this applies,  for  example,  to  the
+       unshifted  HP  2621  keys).   If  the keypad can be set to
+       transmit or not transmit, give these  codes  as  <B>smkx</B>  and
+       <B>rmkx</B>.  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 <B>kcub1,</B> <B>kcuf1,</B>
+       <B>kcuu1,</B> <B>kcud1,</B> and <B>khome</B> respectively.  If there are  func-
+       tion  keys  such  as f0, f1, ..., f10, the codes they send
+       can be given as <B>kf0,</B> <B>kf1,</B> <B>...,</B> <B>kf10</B>.  If these  keys  have
+       labels  other  than the default f0 through f10, the labels
+       can be given as <B>lf0,</B> <B>lf1,</B> <B>...,</B> <B>lf10</B>.  The codes  transmit-
+       ted  by certain other special keys can be given: <B>kll</B> (home
+       down), <B>kbs</B>  (backspace),  <B>ktbc</B>  (clear  all  tabs),  <B>kctab</B>
+       (clear the tab stop in this column), <B>kclr</B> (clear screen or
+       erase key), <B>kdch1</B> (delete character), <B>kdl1</B> (delete  line),
+       <B>krmir</B>  (exit insert mode), <B>kel</B> (clear to end of line), <B>ked</B>
+       (clear to end of screen), <B>kich1</B> (insert character or enter
+       insert  mode),  <B>kil1</B>  (insert  line), <B>knp</B> (next page), <B>kpp</B>
+       (previous page), <B>kind</B> (scroll forward/down),  <B>kri</B>  (scroll
+       backward/up),  <B>khts</B>  (set  a tab stop in this column).  In
+       addition, if the keypad has a 3 by 3 array of keys includ-
+       ing  the four arrow keys, the other five keys can be given
+       as <B>ka1</B>, <B>ka3</B>, <B>kb2</B>, <B>kc1</B>, and <B>kc3</B>.   These  keys  are  useful
+       when the effects of a 3 by 3 directional pad are needed.
+
+       Strings  to  program  function keys can be given as <B>pfkey</B>,
+       <B>pfloc</B>, and <B>pfx</B>.  A string to program screen labels  should
+       be  specified  as  <B>pln</B>.   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 num-
+       bers out of this range may program  undefined  keys  in  a
+       terminal  dependent  manner.   The  difference between the
+       capabilities is that <B>pfkey</B> causes pressing the  given  key
+       to  be the same as the user typing the given string; <B>pfloc</B>
+       causes the string to be executed by the terminal in local;
+       and  <B>pfx</B>  causes  the string to be transmitted to the com-
+       puter.
+
+       The capabilities <B>nlab</B>, <B>lw</B> and <B>lh</B> define the number of pro-
+       grammable  screen  labels  and their width and height.  If
+       there are commands to turn the labels  on  and  off,  give
+       them  in <B>smln</B> and <B>rmln</B>.  <B>smln</B> is normally output after one
+       or more pln sequences to make sure that the change becomes
+       visible.
+
+
+   <B>Tabs</B> <B>and</B> <B>Initialization</B>
+       If  the terminal has hardware tabs, the command to advance
+       to the next tab stop can be given as <B>ht</B>  (usually  control
+       I).   A  ``back-tab''  command which moves leftward to the
+       preceding tab stop can be given as <B>cbt</B>.  By convention, if
+       the  teletype  modes indicate that tabs are being expanded
+       by the computer rather than being sent  to  the  terminal,
+       programs  should  not  use <B>ht</B> or <B>cbt</B> even if they are pre-
+       sent, since the user may not have the tab  stops  properly
+       set.   If  the  terminal  has hardware tabs which are ini-
+       tially set every <I>n</I> spaces when the terminal is powered up,
+       the  numeric  parameter <B>it</B> is given, showing the number of
+       spaces the tabs are set to.  This is normally used by  the
+       <I>tset</I>  command  to  determine  whether  to set the mode for
+       hardware tab expansion, and whether to set the tab  stops.
+       If  the  terminal  has tab stops that can be saved in non-
+       volatile memory, the terminfo description can assume  that
+       they are properly set.
+
+       Other  capabilities include <B>is1</B>, <B>is2</B>, and <B>is3</B>, initializa-
+       tion strings for the terminal, <B>iprog</B>, the path name  of  a
+       program  to be run to initialize the terminal, and <B>if</B>, 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 <I>init</I> option
+       of the <I>tput</I> program, each time the  user  logs  in.   They
+       will  be  printed  in the following order: run the program
+       <B>iprog</B>; output <B>is1</B>; <B>is2</B>; set the margins using <B>mgc</B>, <B>smgl</B>and
+       <B>smgr</B>;  set  tabs using <B>tbc</B> and <B>hts</B>; print the file <B>if</B>; and
+       finally output <B>is3</B>.
+
+       Most initialization is done with  <B>is2</B>.   Special  terminal
+       modes can be set up without duplicating strings by putting
+       the common sequences in <B>is2</B> and special cases in  <B>is1</B>  and
+       <B>is3</B>.   A pair of sequences that does a harder reset from a
+       totally unknown state can be  analogously  given  as  <B>rs1</B>,
+       <B>rs2</B>,  <B>rf</B>, and <B>rs3</B>, analogous to <B>is2</B> and <B>if</B>.  These strings
+       are output by the <I>reset</I> program, which is  used  when  the
+       terminal  gets into a wedged state.  Commands are normally
+       placed in <B>rs1</B>, <B>rs2</B> <B>rs3</B> and <B>rf</B> only if they produce  annoy-
+       ing  effects on the screen and are not necessary when log-
+       ging in.  For example, the command to set the  vt100  into
+       80-column  mode  would  normally  be  part  of <B>is2</B>, but it
+       causes an annoying glitch of the screen and  is  not  nor-
+       mally  needed  since the terminal is usually already in 80
+       column mode.
+
+       If there are commands to set and clear tab stops, they can
+       be  given  as <B>tbc</B> (clear all tab stops) and <B>hts</B> (set a tab
+       stop in the current column of every row).  If a more  com-
+       plex  sequence  is  needed  to  set  the  tabs than can be
+       described by this, the sequence can be placed  in  <B>is2</B>  or
+       <B>if</B>.
+
+   <B>Delays</B> <B>and</B> <B>Padding</B>
+       Many  older  and  slower  terminals  don't  support either
+       XON/XOFF or DTR handshaking, including hard copy terminals
+       and  some  very  archaic CRTs (including, for example, DEC
+       VT100s).  These may require padding characters after  cer-
+       tain cursor motions and screen changes.
+
+       If the terminal uses xon/xoff handshaking for flow control
+       (that is, it automatically emits ^S back to the host  when
+       its input buffers are close to full), set <B>xon</B>.  This capa-
+       bility suppresses the emission of padding.  You  can  also
+       set  it for memory-mapped console devices effectively that
+       don't have a  speed  limit.   Padding  information  should
+       still  be  included so that routines can make better deci-
+       sions about relative costs, but actual pad characters will
+       not be transmitted.
+
+       If  <B>pb</B> (padding baud rate) is given, padding is suppressed
+       at baud rates below the value of <B>pb</B>.  If the entry has  no
+       padding  baud rate, then whether padding is emitted or not
+       is completely controlled by <B>xon</B>.
+
+       If the terminal requires other than a null (zero)  charac-
+       ter  as  a  pad,  then this can be given as <B>pad</B>.  Only the
+       first character of the <B>pad</B> string is used.
+
+   <B>Status</B> <B>Lines</B>
+       Some terminals have an extra `status line'  which  is  not
+       normally  used  by  software  (and thus not counted in the
+       terminal's <B>lines</B> capability).
+
+       The simplest case  is  a  status  line  which  is  cursor-
+       addressable  but  not part of the main scrolling region on
+       the screen; the Heathkit H19 has a  status  line  of  this
+       kind,  as  would  a 24-line VT100 with a 23-line scrolling
+       region set up on initialization.  This situation is  indi-
+       cated by the <B>hs</B> capability.
+
+       Some terminals with status lines need special sequences to
+       access the status line.   These  may  be  expressed  as  a
+       string with single parameter <B>tsl</B> which takes the cursor to
+       a given zero-origin column on the status line.  The  capa-
+       bility <B>fsl</B> must return to the main-screen cursor positions
+       before the last <B>tsl</B>.  You may need  to  embed  the  string
+       values  of <B>sc</B> (save cursor) and <B>rc</B> (restore cursor) in <B>tsl</B>
+       and <B>fsl</B> to accomplish this.
+
+       The status line is normally assumed to be the  same  width
+       as  the width of the terminal.  If this is untrue, you can
+       specify it with the numeric capability <B>wsl</B>.
+
+       A command to erase or blank the status line may be  speci-
+       fied as <B>dsl</B>.
+
+       The   boolean   capability  <B>eslok</B>  specifies  that  escape
+       sequences, tabs, etc. work ordinarily in the status  line.
+
+       The  <B>ncurses</B>  implementation does not yet use any of these
+       capabilities.  They are documented here in case they  ever
+       become important.
+
+
+   <B>Line</B> <B>Graphics</B>
+       Many  terminals  have  alternate character sets useful for
+       forms-drawing.  Terminfo and <B>curses</B> build in  support  for
+       the  drawing  characters supported by the VT100, with some
+       characters from the AT&amp;T  4410v1  added.   This  alternate
+       character set may be specified by the <B>acsc</B> capability.
+
+                <B>Glyph</B>             <B>ACS</B>            <B>Ascii</B>      <B>VT100</B>
+                 <B>Name</B>             <B>Name</B>           <B>Default</B>    <B>Name</B>
+       UK pound sign              ACS_STERLING   f          }
+       arrow pointing down        ACS_DARROW     v          .
+       arrow pointing left        ACS_LARROW     &lt;          ,
+       arrow pointing right       ACS_RARROW     &gt;          +
+       arrow pointing up          ACS_UARROW     ^          -
+       board of squares           ACS_BOARD      #          h
+       bullet                     ACS_BULLET     o          ~
+       checker board (stipple)    ACS_CKBOARD    :          a
+
+       degree symbol              ACS_DEGREE     \          f
+       diamond                    ACS_DIAMOND    +          `
+       greater-than-or-equal-to   ACS_GEQUAL     &gt;          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     &lt;          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
+
+       The  best  way to define a new device's graphics set is to
+       add a column to a copy of this table  for  your  terminal,
+       giving   the   character   which   (when  emitted  between
+       <B>smacs</B>/<B>rmacs</B> switches) will be rendered as the  correspond-
+       ing  graphic.  Then read off the VT100/your terminal char-
+       acter pairs right to left in sequence;  these  become  the
+       ACSC string.
+
+
+   <B>Color</B> <B>Handling</B>
+       Most  color  terminals are either `Tektronix-like' or `HP-
+       like'.  Tektronix-like terminals have a predefined set  of
+       N  colors  (where N usually 8), and can set character-cell
+       foreground and background characters independently, mixing
+       them  into  N  * N color-pairs.  On HP-like terminals, the
+       use must set each color pair up separately (foreground and
+       background  are  not  independently  settable).   Up  to M
+       color-pairs may be  set  up  from  2*M  different  colors.
+       ANSI-compatible terminals are Tektronix-like.
+
+       Some basic color capabilities are independent of the color
+       method.  The numeric capabilities <B>colors</B> and <B>pairs</B> specify
+       the  maximum numbers of colors and color-pairs that can be
+       displayed simultaneously.  The <B>op</B> (original  pair)  string
+       resets  foreground  and background colors to their default
+       values for the terminal.  The <B>oc</B> string resets all  colors
+       or  color-pairs  to their default values for the terminal.
+       Some terminals  (including  many  PC  terminal  emulators)
+       erase  screen  areas  with  the  current  background color
+       rather than the power-up default background; these  should
+       have the boolean capability <B>bce</B>.
+
+       To  change the current foreground or background color on a
+       Tektronix-type terminal, use <B>setaf</B> (set  ANSI  foreground)
+       and  <B>setab</B>  (set ANSI background) or <B>setf</B> (set foreground)
+       and <B>setb</B> (set background).  These take one parameter,  the
+       color  number.   The  SVr4  documentation  describes  only
+       <B>setaf</B>/<B>setab</B>; the XPG4 draft says  that  "If  the  terminal
+       supports ANSI escape sequences to set background and fore-
+       ground, they should be coded as <B>setaf</B> and  <B>setab</B>,  respec-
+       tively.   If  the terminal supports other escape sequences
+       to set background and foreground, they should be coded  as
+       <B>setf</B>  and  <B>setb</B>, respectively.  The <I>vidputs()</I> function and
+       the refresh functions use <B>setaf</B>  and  <B>setab</B>  if  they  are
+       defined."
+
+       The  <B>setaf</B>/<B>setab</B>  and <B>setf</B>/<B>setb</B> capabilities take a single
+       numeric argument each.  Argument values 0-7  are  portably
+       defined  as  follows  (the  middle  column is the symbolic
+       #define available in the header for the <B>curses</B> or  <B>ncurses</B>
+       libraries).  The terminal hardware is free to map these as
+       it likes, but the RGB values indicate normal locations  in
+       color space.
+
+             <B>Color</B>       <B>#define</B>       <B>Value</B>       <B>RGB</B>
+             black     <B>COLOR_BLACK</B>       0     0, 0, 0
+             red       <B>COLOR_RED</B>         1     max,0,0
+             green     <B>COLOR_GREEN</B>       2     0,max,0
+             yellow    <B>COLOR_YELLOW</B>      3     max,max,0
+             blue      <B>COLOR_BLUE</B>        4     0,0,max
+             magenta   <B>COLOR_MAGENTA</B>     5     max,0,max
+             cyan      <B>COLOR_CYAN</B>        6     0,max,max
+             white     <B>COLOR_WHITE</B>       7     max,max,max
+
+       On  an  HP-like terminal, use <B>scp</B> with a color-pair number
+       parameter to set which color pair is current.
+
+       On a Tektronix-like terminal, the capability  <B>ccc</B>  may  be
+       present  to  indicate that colors can be modified.  If so,
+       the <B>initc</B> capability will take a color number (0 to <B>colors</B>
+       -  1)and  three  more parameters which describe the color.
+       These three parameters default to being interpreted as RGB
+       (Red,  Green, Blue) values.  If the boolean capability <B>hls</B>
+       is present, they are instead as HLS (Hue, Lightness, Satu-
+       ration) indices.  The ranges are terminal-dependent.
+
+       On  an  HP-like  terminal, <B>initp</B> may give a capability for
+       changing a color-pair value.  It will take  seven  parame-
+       ters;  a  color-pair  number (0 to <B>max_pairs</B> - 1), and two
+       triples describing first background  and  then  foreground
+       colors.   These  parameters  must be (Red, Green, Blue) or
+       (Hue, Lightness, Saturation) depending on <B>hls</B>.
+
+       On some color terminals, colors collide  with  highlights.
+       You can register these collisions with the <B>ncv</B> capability.
+       This is a bit-mask of attributes not to be used when  col-
+       ors  are  enabled.  The correspondence with the attributes
+       understood by <B>curses</B> is as follows:
+
+                      <B>Attribute</B>      <B>Bit</B>   <B>Decimal</B>
+                      A_STANDOUT     0     1
+                      A_UNDERLINE    1     2
+                      A_REVERSE      2     4
+                      A_BLINK        3     8
+                      A_DIM          4     16
+                      A_BOLD         5     32
+                      A_INVIS        6     64
+                      A_PROTECT      7     128
+                      A_ALTCHARSET   8     256
+
+       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  <B>ncv</B>
+       capability of 2.
+
+       SVr4  curses  does nothing with <B>ncv</B>, ncurses recognizes it
+       and optimizes the output in favor of colors.
+
+
+   <B>Miscellaneous</B>
+       If the terminal requires other than a null (zero)  charac-
+       ter  as  a  pad,  then this can be given as pad.  Only the
+       first character of the pad string is used.  If the  termi-
+       nal does not have a pad character, specify npc.  Note that
+       ncurses implements  the  termcap-compatible  <B>PC</B>  variable;
+       though  the  application  may  set this value to something
+       other than a null, ncurses will test  <B>npc</B>  first  and  use
+       napms if the terminal has no pad character.
+
+       If  the terminal can move up or down half a line, this can
+       be indicated with <B>hu</B>  (half-line  up)  and  <B>hd</B>  (half-line
+       down).  This is primarily useful for superscripts and sub-
+       scripts on hard-copy terminals.  If a  hard-copy  terminal
+       can  eject  to  the next page (form feed), give this as <B>ff</B>
+       (usually control L).
+
+       If there is a command to repeat a given character a  given
+       number  of times (to save time transmitting a large number
+       of identical characters) this can be  indicated  with  the
+       parameterized  string  <B>rep</B>.   The  first  parameter is the
+       character to be repeated and the second is the  number  of
+       times  to repeat it.  Thus, tparm(repeat_char, 'x', 10) is
+       the same as `xxxxxxxxxx'.
+
+       If the terminal has a settable command character, such  as
+       the  TEKTRONIX  4025, this can be indicated with <B>cmdch</B>.  A
+       prototype command character is chosen which is used in all
+       capabilities.   This character is given in the <B>cmdch</B> capa-
+       bility to identify it.  The following convention  is  sup-
+       ported  on  some  UNIX  systems:  The environment is to be
+       searched for a <B>CC</B> variable, and if found, all  occurrences
+       of the prototype character are replaced with the character
+       in the environment variable.
+
+       Terminal descriptions that do  not  represent  a  specific
+       kind of known terminal, such as <I>switch</I>, <I>dialup</I>, <I>patch</I>, and
+       <I>network</I>, should include the  <B>gn</B>  (generic)  capability  so
+       that  programs  can  complain that they do not know how to
+       talk to the terminal.  (This capability does not apply  to
+       <I>virtual</I>   terminal   descriptions  for  which  the  escape
+       sequences are known.)
+
+       If the terminal has a ``meta key'' which acts as  a  shift
+       key,  setting  the  8th  bit of any character transmitted,
+       this fact can be indicated with <B>km</B>.   Otherwise,  software
+       will assume that the 8th bit is parity and it will usually
+       be cleared.  If strings exist to turn this  ``meta  mode''
+       on and off, they can be given as <B>smm</B> and <B>rmm</B>.
+
+       If  the terminal has more lines of memory than will fit on
+       the screen at once, the number of lines of memory  can  be
+       indicated  with  <B>lm</B>.   A  value of <B>lm</B>#0 indicates that the
+       number of lines is not fixed, but that there is still more
+       memory than fits on the screen.
+
+       If the terminal is one of those supported by the UNIX vir-
+       tual terminal protocol, the terminal number can  be  given
+       as <B>vt</B>.
+
+       Media copy strings which control an auxiliary printer con-
+       nected to the terminal can be given as <B>mc0</B>: print the con-
+       tents  of  the screen, <B>mc4</B>: turn off the printer, and <B>mc5</B>:
+       turn on the printer.  When the printer  is  on,  all  text
+       sent  to  the terminal will be sent to the printer.  It is
+       undefined whether the text is also displayed on the termi-
+       nal screen when the printer is on.  A variation <B>mc5p</B> takes
+       one parameter, and leaves the printer on for as many char-
+       acters  as  the  value  of  the  parameter, then turns the
+       printer off.  The parameter should not  exceed  255.   All
+       text,  including  <B>mc4</B>,  is  transparently  passed  to  the
+       printer while an <B>mc5p</B> is in effect.
+
+
+   <B>Glitches</B> <B>and</B> <B>Braindamage</B>
+       Hazeltine terminals, which do not allow `~' characters  to
+       be displayed should indicate <B>hz</B>.
+
+       Terminals which ignore a line-feed immediately after an <B>am</B>
+       wrap, such as the Concept and vt100, should indicate <B>xenl</B>.
+
+       If  <B>el</B>  is  required  to  get  rid of standout (instead of
+       merely writing normal text on top of it),  <B>xhp</B>  should  be
+       given.
+
+       Teleray  terminals,  where  tabs turn all characters moved
+       over to blanks, should  indicate  <B>xt</B>  (destructive  tabs).
+       Note:    the    variable    indicating    this    is   now
+       `dest_tabs_magic_smso'; in older  versions,  it  was  tel-
+       eray_glitch.  This glitch is also taken to mean that it is
+       not possible to position the cursor on top  of  a  ``magic
+       cookie'', that to erase standout mode it is instead neces-
+       sary to use delete and insert line.  The ncurses implemen-
+       tation ignores this glitch.
+
+       The  Beehive Superbee, which is unable to correctly trans-
+       mit the escape or control C characters, has <B>xsb</B>,  indicat-
+       ing  that the f1 key is used for escape and f2 for control
+       C.  (Only certain Superbees have this  problem,  depending
+       on  the  ROM.)  Note that in older terminfo versions, this
+       capability  was  called  `beehive_glitch';   it   is   now
+       `no_esc_ctl_c'.
+
+       Other  specific  terminal  problems  may  be  corrected by
+       adding more capabilities of the form <B>x</B><I>x</I>.
+
+
+   <B>Similar</B> <B>Terminals</B>
+       If there are two very similar terminals, one (the variant)
+       can  be  defined  as  being just like the other (the base)
+       with certain exceptions.  In the definition of  the  vari-
+       ant,  the string capability <B>use</B> can be given with the name
+       of the base terminal.  The capabilities given  before  <B>use</B>
+       override  those  in  the base type named by <B>use</B>.  If there
+       are multiple <B>use</B> capabilities, they are merged in  reverse
+       order.   That is, the rightmost <B>use</B> reference is processed
+       first, then the one to its left, and so forth.   Capabili-
+       ties  given explicitly in the entry override those brought
+       in by <B>use</B> references.
+
+       A capability can be canceled by placing <B>xx@</B> to the left of
+       the  use  reference that imports it, where <I>xx</I> is the capa-
+       bility.  For example, the entry
+
+                   2621-nl, smkx@, rmkx@, use=2621,
+
+       defines a 2621-nl that does not  have  the  <B>smkx</B>  or  <B>rmkx</B>
+       capabilities,  and hence does not turn on the function key
+       labels when in visual mode.  This is useful for  different
+       modes for a terminal, or for different user preferences.
+
+
+   <B>Pitfalls</B> <B>of</B> <B>Long</B> <B>Entries</B>
+       Long  terminfo  entries  are  unlikely to be a problem; to
+       date, no entry has even approached terminfo's  4K  string-
+       table  maximum.   Unfortunately,  the termcap translations
+       are much more  strictly  limited  (to  1K),  thus  termcap
+       translations  of long terminfo entries can cause problems.
+
+       The man pages for 4.3BSD and older versions  of  tgetent()
+       instruct  the user to allocate a 1K buffer for the termcap
+       entry.  The entry  gets  null-terminated  by  the  termcap
+       library, so that makes the maximum safe length for a term-
+       cap entry 1k-1 (1023) bytes.  Depending on what the appli-
+       cation  and the termcap library being used does, and where
+       in the termcap file the terminal type  that  tgetent()  is
+       searching for is, several bad things can happen.
+
+       Some  termcap libraries print a warning message or exit if
+       they find an entry that's longer than 1023  bytes;  others
+       don't;  others  truncate  the entries to 1023 bytes.  Some
+       application programs allocate more than the recommended 1K
+       for the termcap entry; others don't.
+
+       Each termcap entry has two important sizes associated with
+       it: before "tc" expansion, and after "tc" expansion.  "tc"
+       is  the  capability that tacks on another termcap entry to
+       the end of the current one, to add  on  its  capabilities.
+       If  a  termcap entry doesn't use the "tc" capability, then
+       of course the two lengths are the same.
+
+       The "before tc expansion" length  is  the  most  important
+       one,  because it affects more than just users of that par-
+       ticular terminal.  This is the length of the entry  as  it
+       exists in /etc/termcap, minus the backslash-newline pairs,
+       which tgetent() strips out while reading it.  Some termcap
+       libraries  strip  off  the final newline, too (GNU termcap
+       does not).  Now suppose:
+
+       *    a termcap entry before expansion is  more  than  1023
+            bytes long,
+
+       *    and the application has only allocated a 1k buffer,
+
+       *    and  the  termcap library (like the one in BSD/OS 1.1
+            and GNU) reads the whole entry into  the  buffer,  no
+            matter  what  its length, to see if it's the entry it
+            wants,
+
+       *    and tgetent() is searching for a terminal  type  that
+            either is the long entry, appears in the termcap file
+            after the long entry, or doesn't appear in  the  file
+            at  all  (so  that  tgetent() has to search the whole
+            termcap file).
+
+       Then tgetent() will overwrite memory, perhaps  its  stack,
+       and  probably core dump the program.  Programs like telnet
+       are particularly vulnerable;  modern  telnets  pass  along
+       values  like the terminal type automatically.  The results
+       are almost as undesirable with  a  termcap  library,  like
+       SunOS  4.1.3  and Ultrix 4.4, that prints warning messages
+       when it reads an overly long termcap entry.  If a  termcap
+       library  truncates  long  entries,  like  OSF/1 3.0, it is
+       immune to dying here but will return  incorrect  data  for
+       the terminal.
+
+       The "after tc expansion" length will have a similar effect
+       to the above, but only for people who actually set TERM to
+       that  terminal type, since tgetent() only does "tc" expan-
+       sion once it's found the terminal type it was looking for,
+       not while searching.
+
+       In summary, a termcap entry that is longer than 1023 bytes
+       can cause, on various combinations  of  termcap  libraries
+       and  applications,  a  core  dump,  warnings, or incorrect
+       operation.  If it's too long even before  "tc"  expansion,
+       it will have this effect even for users of some other ter-
+       minal types and users whose TERM variable does not have  a
+       termcap entry.
+
+       When in -C (translate to termcap) mode, the <B>ncurses</B> imple-
+       mentation of <B><A HREF="tic.1.html">tic(1)</A></B> issues warning messages when the  pre-
+       tc  length  of  a termcap translation is too long.  The -c
+       (check) option also checks resolved (after  tc  expansion)
+       lengths.
+
+   <B>Binary</B> <B>Compatibility</B>
+       It  is not wise to count on portability of binary terminfo
+       entries between commercial UNIX versions.  The problem  is
+       that  there  are  at least two versions of terminfo (under
+       HP-UX and AIX) which diverged from System V terminfo after
+       SVr1,  and have added extension capabilities to the string
+       table that (in the binary format) collide  with  System  V
+       and XSI Curses extensions.
+
+
+</PRE>
+<H2>EXTENSIONS</H2><PRE>
+       Some  SVr4  <B>curses</B>  implementations,  and  all previous to
+       SVr4, don't interpret the %A and %O operators in parameter
+       strings.
+
+       SVr4/XPG4  do  not  specify whether <B>msgr</B> 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   <B>ncurses</B>   implementation
+       ignores  <B>msgr</B>  in <B>ALTCHARSET</B> mode.  This raises the possi-
+       bility that an XPG4  implementation  making  the  opposite
+       interpretation  may need terminfo entries made for <B>ncurses</B>
+       to have <B>msgr</B> turned off.
+
+       The <B>ncurses</B> library handles insert-character  and  insert-
+       character modes in a slightly non-standard way in order to
+       get better update efficiency.  See the <B>Insert/Delete</B> <B>Char-</B>
+       <B>acter</B> subsection above.
+
+       The   parameter   substitutions  for  <B>set_clock</B>  and  <B>dis-</B>
+       <B>play_clock</B> are not documented in SVr4 or  the  XSI  Curses
+       standard.  They are deduced from the documentation for the
+       AT&amp;T 505 terminal.
+
+       Be careful assigning the <B>kmous</B>  capability.   The  <B>ncurses</B>
+       wants  to  interpret it as <B>KEY_MOUSE</B>, for use by terminals
+       and emulators like xterm that  can  return  mouse-tracking
+       information in the keyboard-input stream.
+
+       Different  commercial ports of terminfo and curses support
+       different subsets of the XSI Curses standard and (in  some
+       cases) different extension sets.  Here is a summary, accu-
+       rate as of October 1995:
+
+       <B>SVR4,</B> <B>Solaris,</B> <B>ncurses</B> -- These support all SVr4 capabili-
+       ties.
+
+       <B>SGI</B>  --  Supports  the  SVr4  set,  adds  one undocumented
+       extended string capability (<B>set_pglen</B>).
+
+       <B>SVr1,</B> <B>Ultrix</B> -- These support a restricted subset of  ter-
+       minfo  capabilities.   The booleans end with <B>xon_xoff</B>; the
+       numerics with  <B>width_status_line</B>;  and  the  strings  with
+       <B>prtr_non</B>.
+
+       <B>HP/UX</B>  --  Supports  the  SVr1  subset,  plus the SVr[234]
+       numerics <B>num_labels</B>, <B>label_height</B>, <B>label_width</B>, plus func-
+       tion  keys  11  through  63, plus <B>plab_norm</B>, <B>label_on</B>, and
+       <B>label_off</B>, plus some incompatible extensions in the string
+       table.
+
+       <B>AIX</B>  --  Supports  the  SVr1 subset, plus function keys 11
+       through 63, plus a number  of  incompatible  string  table
+       extensions.
+
+       <B>OSF</B>  -- Supports both the SVr4 set and the AIX extensions.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+       @DATADIR@/terminfo/?/*   files     containing     terminal
+                                descriptions
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="tic.1m.html">tic(1m)</A></B>, <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="printf.3S.html">printf(3S)</A></B>, <B><A HREF="term.5.html">term(5)</A></B>.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Zeyd  M.  Ben-Halim,  Eric  S.  Raymond, Thomas E. Dickey.
+       Based on pcurses by Pavel Curtis.
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/tic.1m.html b/doc/html/man/tic.1m.html
new file mode 100644 (file)
index 0000000..a8d6e7d
--- /dev/null
@@ -0,0 +1,296 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>tic</B> - the <I>terminfo</I> entry-description compiler
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>tic</B>  [<B>-1CINRTacfrsx</B>]  [<B>-e</B>  <I>names</I>] [<B>-o</B> <I>dir</I>] [<B>-v</B>[<I>n</I>]] [<B>-w</B>[<I>n</I>]]
+       <I>file</I>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The command <B>tic</B> translates a  <B>terminfo</B>  file  from  source
+       format  into compiled format.  The compiled format is nec-
+       essary for use with the library routines in <B><A HREF="ncurses.3x.html">ncurses(3x)</A></B>.
+
+       The results are normally placed  in  the  system  terminfo
+       directory  <B>@DATADIR@/terminfo</B>.   There  are  two  ways  to
+       change this behavior.
+
+       First, you may override the system default by setting  the
+       variable  <B>TERMINFO</B>  in  your  shell environment to a valid
+       (existing) directory name.
+
+       Secondly, if <B>tic</B> cannot get access  to  <I>@DATADIR@/terminfo</I>
+       or  your  TERMINFO  directory,  it looks for the directory
+       <I>$HOME/.terminfo</I>; if that directory exists,  the  entry  is
+       placed there.
+
+       Libraries that read terminfo entries are expected to check
+       for a TERMINFO directory first, look at <I>$HOME/.terminfo</I> if
+       TERMINFO  is  not  set, and finally look in <I>@DATADIR@/ter-</I>
+       <I>minfo</I>.
+
+       <B>-a</B>     tells  <B>tic</B>  to  retain  commented-out  capabilities
+              rather than discarding them.  Capabilities are com-
+              mented by prefixing them with a period.  This  sets
+              the  <B>-x</B> option, because it treats the commented-out
+              entries as user-defined names.
+
+       <B>-c</B>     tells <B>tic</B> to only check <I>file</I> for errors,  including
+              syntax  problems and bad use links.  If you specify
+              <B>-C</B> (<B>-I</B>) with this option, the code will print warn-
+              ings about entries which, after use resolution, are
+              more than 1023 (4096) bytes long.  Due to  a  fixed
+              buffer  length  in  older  termcap libraries (and a
+              documented limit in terminfo),  these  entries  may
+              cause core dumps.
+
+       <B>-v</B><I>n</I>    specifies that (verbose) output be written to stan-
+              dard  error   trace   information   showing   <B>tic</B>'s
+              progress.   The optional integer <I>n</I> is a number from
+              1 to 10, inclusive, indicating the desired level of
+              detail  of  information.   If  <I>n</I>  is  omitted,  the
+              default level is 1.  If <I>n</I> is specified and  greater
+              than 1, the level of detail is increased.
+
+       <B>-o</B><I>dir</I>  Write   compiled   entries   to   given  directory.
+              Overrides the TERMINFO environment variable.
+
+       <B>-w</B><I>n</I>    specifies the width of the output.
+
+       <B>-1</B>     restricts the output to a single column
+
+       <B>-C</B>     Force source translation to termcap format.   Note:
+              this  differs  from the -C option of <B><A HREF="infocmp.1m.html">infocmp(1m)</A></B> 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.
+
+       <B>-G</B>     Display constant literals in  decimal  form  rather
+              than their character equivalents.
+
+       <B>-I</B>     Force source translation to terminfo format.
+
+       <B>-L</B>     Force  source  translation to terminfo format using
+              the long C variable names listed in &lt;<B>term.h</B>&gt;
+
+       <B>-N</B>     Disable smart defaults.  Normally, when translating
+              from termcap to terminfo, the compiler makes a num-
+              ber of assumptions about  the  defaults  of  string
+              capabilities  <B>reset1_string</B>,  <B>carriage_return</B>, <B>cur-</B>
+              <B>sor_left</B>, <B>cursor_down</B>,  <B>scroll_forward</B>,  <B>tab</B>,  <B>new-</B>
+              <B>line</B>,  <B>key_backspace</B>,  <B>key_left</B>, and <B>key_down</B>, then
+              attempts to use obsolete  termcap  capabilities  to
+              deduce correct values.  It also normally suppresses
+              output of obsolete termcap capabilities such as <B>bs</B>.
+              This  option forces a more literal translation that
+              also preserves the obsolete capabilities.
+
+       <B>-R</B><I>subset</I>
+              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 out-
+              right 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 <B><A HREF="terminfo.5.html">terminfo(5)</A></B> for details.
+
+       <B>-T</B>     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).
+
+       <B>-r</B>     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.
+
+       <B>-e</B>     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 the
+              list,  the  entry  will be written or translated as
+              normal.  Otherwise no output will be generated  for
+              it.  The option value is interpreted as a file con-
+              taining the list if  it  contains  a  '/'.   (Note:
+              depending  on how tic was compiled, this option may
+              require -I or -C.)
+
+       <B>-f</B>     Display  complex  terminfo  strings  which  contain
+              if/then/else/endif  expressions  indented for read-
+              ability.
+
+       <B>-g</B>     Display constant character literals in quoted  form
+              rather than their decimal equivalents.
+
+       <B>-s</B>     Summarize the compile by showing the directory into
+              which  entries  are  written,  and  the  number  of
+              entries which are compiled.
+
+       <B>-x</B>     Treat  unknown  capabilities as user-defined.  That
+              is, if you supply a capability name which <B>tic</B>  does
+              not  recognize,  it  will  infer its type (boolean,
+              number or string)  from  the  syntax  and  make  an
+              extended table entry for that.
+
+       <I>file</I>   contains one or more <B>terminfo</B> terminal descriptions
+              in source format [see <B><A HREF="terminfo.5.html">terminfo(5)</A></B>].  Each  descrip-
+              tion  in  the  file describes the capabilities of a
+              particular terminal.
+
+       The debug flag levels are as follows:
+
+       1      Names of files created and linked
+
+       2      Information related to the ``use'' facility
+
+       3      Statistics from the hashing algorithm
+
+       5      String-table memory allocations
+
+       7      Entries into the string-table
+
+       8      List of tokens encountered by scanner
+
+       9      All values computed in  construction  of  the  hash
+              table
+
+       If n is not given, it is taken to be one.
+
+       All but one of the capabilities recognized by <B>tic</B> are doc-
+       umented in <B><A HREF="terminfo.5.html">terminfo(5)</A></B>.  The exception is the <B>use</B> capabil-
+       ity.
+
+       When  a  <B>use</B>=<I>entry</I>-<I>name</I>  field is discovered in a terminal
+       entry currently being compiled, <B>tic</B> reads  in  the  binary
+       from  <B>@DATADIR@/terminfo</B>  to complete the entry.  (Entries
+       created from <I>file</I> will be used first.  If the  environment
+       variable  <B>TERMINFO</B>  is  set,  that  directory  is searched
+       instead of <B>@DATADIR@/terminfo</B>.)  <B>tic</B> duplicates the  capa-
+       bilities  in  <I>entry</I>-<I>name</I>  for  the current entry, with the
+       exception  of  those  capabilities  that  explicitly   are
+       defined in the current entry.
+
+       When    an   entry,   e.g.,   <B>entry_name_1</B>,   contains   a
+       <B>use=</B><I>entry</I>_<I>name</I>_<I>2</I>  field,  any  canceled  capabilities   in
+       <I>entry</I>_<I>name</I>_<I>2</I>  must also appear in <B>entry_name_1</B> before <B>use=</B>
+       for these capabilities to be canceled in <B>entry_name_1</B>.
+
+       If the environment variable <B>TERMINFO</B> is set, the  compiled
+       results are placed there instead of <B>@DATADIR@/terminfo</B>.
+
+       Total compiled entries cannot exceed 4096 bytes.  The name
+       field cannot 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.
+
+
+</PRE>
+<H2>COMPATIBILITY</H2><PRE>
+       There is some evidence that historic  <B>tic</B>  implementations
+       treated  description  fields with no whitespace in them as
+       additional aliases or short names.  This <B>tic</B> does  not  do
+       that,  but  it  does  warn  when description fields may be
+       treated that way and check them for dangerous  characters.
+
+
+</PRE>
+<H2>EXTENSIONS</H2><PRE>
+       Unlike the stock SVr4 <B>tic</B> command, this implementation can
+       actually compile termcap sources.   In  fact,  entries  in
+       terminfo  and  termcap  syntax  can  be  mixed in a single
+       source file.  See <B><A HREF="terminfo.5.html">terminfo(5)</A></B>  for  the  list  of  termcap
+       names taken to be equivalent to terminfo names.
+
+       The  SVr4  manual  pages  are  not clear on the resolution
+       rules for <B>use</B> capabilities.  This  implementation  of  <B>tic</B>
+       will find <B>use</B> targets anywhere in the source file, or any-
+       where in the file tree rooted at <B>TERMINFO</B> (if <B>TERMINFO</B>  is
+       defined),  or  in the user's <I>$HOME/.terminfo</I> directory (if
+       it exists), or (finally) anywhere  in  the  system's  file
+       tree of compiled entries.
+
+       The  error  messages from this <B>tic</B> have the same format as
+       GNU C error messages, and can be  parsed  by  GNU  Emacs's
+       compile facility.
+       The <B>-C</B>, <B>-G</B>, <B>-I</B>, <B>-N</B>, <B>-R</B>, <B>-T</B>, <B>-a</B>, <B>-e</B>, <B>-f</B>, <B>-g</B>, <B>-o</B>, <B>-r</B>, <B>-s</B> and
+       <B>-x</B> options are not supported under SVr4.  The SVr4 -c mode
+       does not report bad use links.
+
+       System  V does not compile entries to or read entries from
+       your <I>$HOME/.terminfo</I> directory unless TERMINFO is  explic-
+       itly set to it.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+       <B>@DATADIR@/terminfo/?/*</B>
+            Compiled terminal description database.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="infocmp.1m.html">infocmp(1m)</A></B>,    <B><A HREF="captoinfo.1m.html">captoinfo(1m)</A></B>,   <B><A HREF="infotocap.1m.html">infotocap(1m)</A></B>,   <B><A HREF="toe.1m.html">toe(1m)</A></B>,
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/toe.1m.html b/doc/html/man/toe.1m.html
new file mode 100644 (file)
index 0000000..3b017e3
--- /dev/null
@@ -0,0 +1,76 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>toe</B> - table of (terminfo) entries
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>toe</B> [<B>-v</B>[<I>n</I>]] [<B>-huUV</B>] <I>file...</I>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       With no options, <B>toe</B> lists all available terminal types by
+       primary name with descriptions.   File  arguments  specify
+       the  directories  to  be scanned; if no such arguments are
+       given, your default terminfo directory is scanned.  If you
+       also  specify  the  -h  option, a directory header will be
+       issued as each directory is entered.
+
+       There are other options intended for use by terminfo  file
+       maintainers:
+
+       <B>-u</B> <I>file</I>
+              says to issue a report on dependencies in the given
+              file. This report  condenses  the  `use'  relation:
+              each  line consists of the primary name of a termi-
+              nal that has use capabilities, followed by a colon,
+              followed  by the whitespace-separated primary names
+              of all terminals which occur in those use capabili-
+              ties, followed by a newline
+
+       <B>-U</B> <I>file</I>
+              says  to  issue a report on reverse dependencies in
+              the given file.  This  report  reverses  the  `use'
+              relation: each line consists of the primary name of
+              a terminal that occurs in  use  capabilities,  fol-
+              lowed  by a colon, followed by the whitespace-sepa-
+              rated primary names of all terminals  which  depend
+              on it, followed by a newline.
+
+       <B>-v</B><I>n</I>    specifies that (verbose) output be written to stan-
+              dard  error   trace   information   showing   <B>toe</B>'s
+              progress.   The optional integer <I>n</I> is a number from
+              1 to 10, interpreted as for <B><A HREF="tic.1.html">tic(1)</A></B>.
+
+       <B>-V</B>   prints out the version of the program in use on stan-
+            dard error and exits.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+       <B>@DATADIR@/terminfo/?/*</B>
+            Compiled terminal description database.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="tic.1m.html">tic(1m)</A></B>,    <B><A HREF="infocmp.1m.html">infocmp(1m)</A></B>,   <B><A HREF="captoinfo.1m.html">captoinfo(1m)</A></B>,   <B><A HREF="infotocap.1m.html">infotocap(1m)</A></B>,
+       <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>.
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/tput.1.html b/doc/html/man/tput.1.html
new file mode 100644 (file)
index 0000000..606f777
--- /dev/null
@@ -0,0 +1,246 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>tput</B> - initialize a terminal or query terminfo database
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <B>tput</B> [<B>-T</B><I>type</I>] <I>capname</I> [<I>parms</I> ... ]
+       <B>tput</B> [<B>-T</B><I>type</I>] <B>init</B>
+       <B>tput</B> [<B>-T</B><I>type</I>] <B>reset</B>
+       <B>tput</B> [<B>-T</B><I>type</I>] <B>longname</B>
+       <B>tput</B> <B>-S</B>  <B>&lt;&lt;</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  <B>tput</B>  utility  uses the <B>terminfo</B> database to make the
+       values of terminal-dependent capabilities and  information
+       available to the shell (see <B><A HREF="sh.1.html">sh(1)</A></B>), to initialize or reset
+       the terminal, or return the long  name  of  the  requested
+       terminal  type.   <B>tput</B>  outputs  a string if the attribute
+       (<I>cap</I>ability <I>name</I>) is of type string, or an integer if  the
+       attribute is of type integer.  If the attribute is of type
+       boolean, <B>tput</B> simply sets the exit code (<B>0</B> for TRUE if the
+       terminal  has the capability, <B>1</B> 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 [<B>$?</B>,
+       see <B><A HREF="sh.1.html">sh(1)</A></B>] to be sure it is <B>0</B>.  (See the  <B>EXIT</B>  <B>CODES</B>  and
+       <B>DIAGNOSTICS</B>  sections.)   For a complete list of capabili-
+       ties and  the  <I>capname</I>  associated  with  each,  see  <B>ter-</B>
+       <B><A HREF="minfo.5.html">minfo(5)</A></B>.
+
+       <B>-T</B><I>type</I> indicates  the  <I>type</I>  of  terminal.   Normally this
+              option is unnecessary, because the default is taken
+              from the environment variable <B>TERM</B>.  If <B>-T</B> is spec-
+              ified, then the shell variables <B>LINES</B>  and  <B>COLUMNS</B>
+              will  be  ignored,and the operating system will not
+              be queried for the actual screen size.
+
+       <I>capname</I>
+              indicates the attribute from the <B>terminfo</B> database.
+              When  <B>termcap</B>  support  is compiled in, the <B>termcap</B>
+              name for the attribute is also accepted.
+
+       <I>parms</I>  If the attribute is a string that takes parameters,
+              the  arguments  <I>parms</I> will be instantiated into the
+              string.  An all numeric argument will be passed  to
+              the attribute as a number.
+
+       <B>-S</B>     allows  more  than one capability per invocation of
+              <B>tput</B>.  The capabilities must be passed to <B>tput</B> from
+              the standard input instead of from the command line
+              (see example).  Only one  <I>capname</I>  is  allowed  per
+              line.   The  <B>-S</B> option changes the meaning of the <B>0</B>
+              and <B>1</B> boolean and string exit codes (see  the  EXIT
+              CODES section).
+
+       <B>init</B>   If  the  <B>terminfo</B>  database is present and an entry
+              for the user's terminal exists (see <B>-T</B><I>type</I>, above),
+              the  following will occur: (1) if present, the ter-
+              minal's initialization strings will be output (<B>is1</B>,
+              <B>is2</B>,  <B>is3</B>,  <B>if</B>,  <B>iprog</B>), (2) any delays (e.g., new-
+              line) specified in the entry will be set in the tty
+              driver, (3) tabs expansion will be turned on or off
+              according to the specification in  the  entry,  and
+              (4) if tabs are not expanded, standard tabs will be
+              set (every 8 spaces).  If an entry does not contain
+              the  information  needed  for any of the four above
+              activities, that activity will silently be skipped.
+
+       <B>reset</B>  Instead  of putting out initialization strings, the
+              terminal's reset strings will be output if  present
+              (<B>rs1</B>,  <B>rs2</B>, <B>rs3</B>, <B>rf</B>).  If the reset strings are not
+              present, but initialization strings are,  the  ini-
+              tialization  strings  will  be  output.  Otherwise,
+              <B>reset</B> acts identically to <B>init</B>.
+
+       <B>longname</B>
+              If the <B>terminfo</B> database is present  and  an  entry
+              for  the user's terminal exists (see <B>-T</B><I>type</I> above),
+              then the long name of the terminal will be put out.
+              The long name is the last name in the first line of
+              the terminal's description in the <B>terminfo</B> database
+              [see <B><A HREF="term.5.html">term(5)</A></B>].
+
+
+</PRE>
+<H2>EXAMPLES</H2><PRE>
+       <B>tput</B> <B>init</B>
+            Initialize the terminal according to the type of ter-
+            minal in the environmental variable <B>TERM</B>.  This  com-
+            mand  should be included in everyone's .profile after
+            the environmental variable <B>TERM</B> has been exported, as
+            illustrated on the <B><A HREF="profile.4.html">profile(4)</A></B> manual page.
+
+       <B>tput</B> <B>-T5620</B> <B>reset</B>
+            Reset  an  AT&amp;T 5620 terminal, overriding the type of
+            terminal in the environmental variable <B>TERM</B>.
+
+       <B>tput</B> <B>cup</B> <B>0</B> <B>0</B>
+            Send the sequence to move the cursor to row <B>0</B>, column
+            <B>0</B> (the upper left corner of the screen, usually known
+            as the "home" cursor position).
+
+       <B>tput</B> <B>clear</B>
+            Echo the clear-screen sequence for the current termi-
+            nal.
+
+       <B>tput</B> <B>cols</B>
+            Print the number of columns for the current terminal.
+
+       <B>tput</B> <B>-T450</B> <B>cols</B>
+            Print the number of columns for the 450 terminal.
+
+
+       <B>bold=`tput</B> <B>smso`</B> <B>offbold=`tput</B> <B>rmso`</B>
+            Set the shell variables <B>bold</B>, to begin stand-out mode
+            sequence, and <B>offbold</B>, to end standout mode sequence,
+            for the current terminal.  This might be followed  by
+            a  prompt:  <B>echo</B>  <B>"${bold}Please</B>  <B>type</B>  <B>in</B> <B>your</B> <B>name:</B>
+            <B>${offbold}\c"</B>
+
+       <B>tput</B> <B>hc</B>
+            Set exit code to indicate if the current terminal  is
+            a hard copy terminal.
+
+       <B>tput</B> <B>cup</B> <B>23</B> <B>4</B>
+            Send  the sequence to move the cursor to row 23, col-
+            umn 4.
+
+       <B>tput</B> <B>longname</B>
+            Print the long name from the  <B>terminfo</B>  database  for
+            the  type  of terminal specified in the environmental
+            variable <B>TERM</B>.
+
+       <B>tput</B> <B>-S</B> <B>&lt;&lt;!</B>
+       <B>&gt;</B> <B>clear</B>
+       <B>&gt;</B> <B>cup</B> <B>10</B> <B>10</B>
+       <B>&gt;</B> <B>bold</B>
+       <B>&gt;</B> <B>!</B>
+
+            This example shows tput processing several  capabili-
+            ties  in  one  invocation.   This  example clears the
+            screen, moves the cursor to position 10, 10 and turns
+            on  bold (extra bright) mode.  The list is terminated
+            by an exclamation mark (<B>!</B>) on a line by itself.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+       <B>@DATADIR@/terminfo</B>
+              compiled terminal description database
+
+       <B>/usr/include/curses.h</B>
+              <B><A HREF="ncurses.3x.html">curses(3x)</A></B> header file
+
+       <B>/usr/include/term.h</B>
+              <B>terminfo</B> header file
+
+       <B>@DATADIR@/tabset/*</B>
+              tab settings for some terminals, in a format appro-
+              priate   to  be  output  to  the  terminal  (escape
+              sequences that set  margins  and  tabs);  for  more
+              information, see the "Tabs and Initialization" sec-
+              tion of <B><A HREF="terminfo.4.html">terminfo(4)</A></B>
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="clear.1.html">clear(1)</A></B>, <B><A HREF="stty.1.html">stty(1)</A></B>, <B><A HREF="tabs.5.html">tabs(5)</A></B>.   <B><A HREF="profile.5.html">profile(5)</A></B>,  <B><A HREF="terminfo.4.html">terminfo(4)</A></B>  in
+       the  <I>System</I>  <I>Administrator</I>'<I>s</I> <I>Reference</I> <I>Manual</I>.  Chapter 10
+       of the <I>Programmer</I>'<I>s</I> <I>Guide</I>.
+
+
+</PRE>
+<H2>EXIT CODES</H2><PRE>
+       If <I>capname</I> is of type boolean, a value of  <B>0</B>  is  set  for
+       TRUE and <B>1</B> for FALSE unless the <B>-S</B> option is used.
+
+       If  <I>capname</I>  is of type string, a value of <B>0</B> is set if the
+       <I>capname</I> is defined for this terminal <I>type</I>  (the  value  of
+       <I>capname</I>  is  returned on standard output); a value of <B>1</B> is
+       set if <I>capname</I> is not defined for this  terminal  <I>type</I>  (a
+       null value is returned on standard output).
+
+       If  <I>capname</I> is of type boolean or string and the <B>-S</B> option
+       is used, a value of <B>0</B> is returned  to  indicate  that  all
+       lines were successful.  No indication of which line failed
+       can be given so exit code <B>1</B> will never appear.  Exit codes
+       <B>2</B>, <B>3</B>, and <B>4</B> retain their usual interpretation.
+
+       If <I>capname</I> is of type integer, a value of <B>0</B> is always set,
+       whether or not <I>capname</I> is defined for this terminal  <I>type</I>.
+       To determine if <I>capname</I> is defined for this terminal <I>type</I>,
+       the user must test the value of standard output.  A  value
+       of  <B>-1</B> means that <I>capname</I> is not defined for this terminal
+       <I>type</I>.
+
+       Any other exit code indicates an error; see  the  DIAGNOS-
+       TICS section.
+
+
+</PRE>
+<H2>DIAGNOSTICS</H2><PRE>
+       <B>tput</B> prints the following error messages and sets the cor-
+       responding exit codes.
+
+       exit code   error message
+       <B>0</B>           (<I>capname</I> is a numeric variable that is not specified in the
+                   <B><A HREF="terminfo.5.html">terminfo(5)</A></B> database for this terminal type, e.g.
+                   <B>tput</B> <B>-T450</B> <B>lines</B> and <B>tput</B> <B>-T2621</B> <B>xmc</B>)
+       <B>1</B>           no error message is printed, see the <B>EXIT</B> <B>CODES</B> section.
+       <B>2</B>           usage error
+       <B>3</B>           unknown terminal <I>type</I> or no <B>terminfo</B> database
+       <B>4</B>           unknown <B>terminfo</B> capability <I>capname</I>
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The <B>longname</B> and <B>-S</B> options, and  the  parameter-substitu-
+       tion  features  used in the <B>cup</B> example, are not supported
+       in BSD curses or in AT&amp;T/USL curses before SVr4.
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/html/man/tset.1.html b/doc/html/man/tset.1.html
new file mode 100644 (file)
index 0000000..aebef36
--- /dev/null
@@ -0,0 +1,303 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>tset</B> - terminal initialization
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       tset  [-IQqrs]  [-]  [-e  <I>ch</I>] [-i <I>ch</I>] [-k <I>ch</I>] [-m <I>mapping</I>]
+       [<I>terminal</I>]
+       reset [-IQqrs] [-] [-e <I>ch</I>] [-i <I>ch</I>] [-k  <I>ch</I>]  [-m  <I>mapping</I>]
+       [<I>terminal</I>]
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       <B>Tset</B>  initializes  terminals.   <B>Tset</B>  first determines the
+       type of terminal that you are using.   This  determination
+       is done as follows, using the first terminal type found.
+
+       1. The <B>terminal</B> argument specified on the command line.
+
+       2. The value of the <B>TERM</B> environmental variable.
+
+       3.  (BSD  systems only.) The terminal type associated with
+       the standard error output device in  the  <I>/etc/ttys</I>  file.
+       (On Linux and System-V-like UNIXes, <I>getty</I> does this job by
+       setting <B>TERM</B>  according  to  the  type  passed  to  it  by
+       <I>/etc/inittab</I>.)
+
+       4. The default terminal type, ``unknown''.
+
+       If  the  terminal  type  was not specified on the command-
+       line, the -m option mappings are then applied  (see  below
+       for  more information).  Then, if the terminal type begins
+       with a question mark (``?''), the  user  is  prompted  for
+       confirmation of the terminal type.  An empty response con-
+       firms the type, or, another type can be entered to specify
+       a  new  type.  Once the terminal type has been determined,
+       the terminfo entry for the terminal is retrieved.   If  no
+       terminfo entry is found for the type, the user is prompted
+       for another terminal type.
+
+       Once the terminfo entry is  retrieved,  the  window  size,
+       backspace,  interrupt and line kill characters (among many
+       other things) are set and the terminal and tab initializa-
+       tion  strings  are  sent  to  the  standard  error output.
+       Finally, if the erase, interrupt and line kill  characters
+       have  changed,  or  are  not  set to their default values,
+       their values are displayed to the standard error output.
+
+       When invoked as <B>reset</B>, <B>tset</B> sets cooked  and  echo  modes,
+       turns  off cbreak and raw modes, turns on newline transla-
+       tion and resets any  unset  special  characters  to  their
+       default  values  before  doing the terminal initialization
+       described above.  This is  useful  after  a  program  dies
+       leaving  a  terminal  in an abnormal state.  Note, you may
+       have to type
+
+           <B>&lt;LF&gt;reset&lt;LF&gt;</B>
+
+       (the line-feed character is normally control-J) to get the
+       terminal to work, as carriage-return may no longer work in
+       the abnormal state.  Also, the  terminal  will  often  not
+       echo the command.
+
+       The options are as follows:
+
+       -q   The  terminal  type is displayed to the standard out-
+            put, and the terminal is not initialized in any  way.
+            The option `-' by itself is equivalent but archaic.
+
+       -e   Set the erase character to <I>ch</I>.
+
+       -I   Do  not  send  the  terminal  or  tab  initialization
+            strings to the terminal.
+
+       -i   Set the interrupt character to <I>ch</I>.
+
+       -k   Set the line kill character to <I>ch</I>.
+
+       -m   Specify a mapping from a port  type  to  a  terminal.
+            See below for more information.
+
+       -Q   Don't display any values for the erase, interrupt and
+            line kill characters.
+
+       -r   Print the terminal type to the standard error output.
+
+       -s   Print  the  sequence  of shell commands to initialize
+            the environment variable <B>TERM</B> to the standard output.
+            See  the section below on setting the environment for
+            details.
+
+       The arguments for the -e, -i, and -k options may either be
+       entered  as  actual characters or by using the `hat' nota-
+       tion, i.e. control-h may be specified as ``^H'' or ``^h''.
+
+
+</PRE>
+<H2>SETTING THE ENVIRONMENT</H2><PRE>
+       It  is  often  desirable  to  enter  the terminal type and
+       information about the  terminal's  capabilities  into  the
+       shell's environment.  This is done using the -s option.
+
+       When the -s option is specified, the commands to enter the
+       information into the shell's environment  are  written  to
+       the  standard output.  If the <B>SHELL</B> environmental variable
+       ends in ``csh'', the commands are for <B>csh</B>, otherwise, they
+       are  for  <B>sh</B>.   Note,  the  <B>csh</B> commands set and unset the
+       shell variable <B>noglob</B>, leaving it  unset.   The  following
+       line  in  the <B>.login</B> or <B>.profile</B> files will initialize the
+       environment correctly:
+
+           eval `tset -s options ... `
+
+
+
+</PRE>
+<H2>TERMINAL TYPE MAPPING</H2><PRE>
+       When the terminal is not hardwired into the system (or the
+       current system information is incorrect) the terminal type
+       derived from the <I>/etc/ttys</I> file or the <B>TERM</B>  environmental
+       variable  is often something generic like <B>network</B>, <B>dialup</B>,
+       or <B>unknown</B>.  When <B>tset</B> is used in a startup script  it  is
+       often  desirable  to provide information about the type of
+       terminal used on such ports.
+
+       The purpose of the -m option is to map from  some  set  of
+       conditions  to a terminal type, that is, to tell <B>tset</B> ``If
+       I'm on this port at a particular speed, guess that I'm  on
+       that kind of terminal''.
+
+       The argument to the -m option consists of an optional port
+       type, an optional operator, an optional baud rate specifi-
+       cation, an optional colon (``:'') character and a terminal
+       type.  The port type is a string (delimited by either  the
+       operator or the colon character).  The operator may be any
+       combination of ``&gt;'', ``&lt;'', ``@'', and ``!''; ``&gt;'' means
+       greater  than, ``&lt;'' means less than, ``@'' means equal to
+       and ``!'' inverts the sense of the test.  The baud rate is
+       specified  as  a  number and is compared with the speed of
+       the standard error output (which  should  be  the  control
+       terminal).  The terminal type is a string.
+
+       If the terminal type is not specified on the command line,
+       the -m mappings are applied to the terminal type.  If  the
+       port  type  and  baud rate match the mapping, the terminal
+       type specified in the mapping replaces the  current  type.
+       If  more than one mapping is specified, the first applica-
+       ble mapping is used.
+
+       For   example,    consider    the    following    mapping:
+       <B>dialup&gt;9600:vt100</B>.  The port type is dialup , the operator
+       is &gt;, the baud rate specification is 9600, and the  termi-
+       nal type is vt100.  The result of this mapping is to spec-
+       ify that if the terminal type is <B>dialup</B>, and the baud rate
+       is  greater  than 9600 baud, a terminal type of <B>vt100</B> will
+       be used.
+
+       If no baud rate is specified, the terminal type will match
+       any baud rate.  If no port type is specified, the terminal
+       type  will  match  any  port  type.    For   example,   <B>-m</B>
+       <B>dialup:vt100</B>  <B>-m</B>  <B>:?xterm</B>  will  cause  any  dialup  port,
+       regardless of baud rate, to match the terminal type vt100,
+       and  any  non-dialup  port type to match the terminal type
+       ?xterm.  Note, because of the leading question  mark,  the
+       user  will be queried on a default port as to whether they
+       are actually using an xterm terminal.
+
+       No whitespace characters are permitted in  the  -m  option
+       argument.   Also,  to avoid problems with meta-characters,
+       it is suggested that the  entire  -m  option  argument  be
+       placed  within single quote characters, and that <B>csh</B> users
+       insert a backslash character (``\'') before  any  exclama-
+       tion marks (``!'').
+
+
+</PRE>
+<H2>HISTORY</H2><PRE>
+       The  <B>tset</B> command appeared in BSD 3.0.  The <B>ncurses</B> imple-
+       mentation was lightly adapted from the 4.4BSD sources  for
+       a terminfo environment by Eric S. Raymond &lt;esr@snark.thyr-
+       sus.com&gt;.
+
+
+</PRE>
+<H2>COMPATIBILITY</H2><PRE>
+       The <B>tset</B> utility has been provided  for  backward-compati-
+       bility  with  BSD  environments (under most modern UNIXes,
+       <B>/etc/inittab</B> and <B><A HREF="getty.1.html">getty(1)</A></B> can set <B>TERM</B>  appropriately  for
+       each  dial-up  line;  this  obviates  what was <B>tset</B>'s most
+       important use).  This implementation behaves  like  4.4BSD
+       tset, with a few exceptions specified here.
+
+       The  -S  option  of BSD tset no longer works; it prints an
+       error message to stderr and dies.  The -s option only sets
+       <B>TERM</B>,  not  <B>TERMCAP</B>.   Both  these changes are because the
+       <B>TERMCAP</B> variable is no longer  supported  under  terminfo-
+       based <B>ncurses</B>, which makes <B>tset</B> <B>-S</B> useless (we made it die
+       noisily rather than silently induce lossage).
+
+       There was an undocumented  4.4BSD  feature  that  invoking
+       tset via a link named `TSET` (or via any other name begin-
+       ning with an upper-case letter) set the  terminal  to  use
+       upper-case only.  This feature has been omitted.
+
+       The  -A,  -E,  -h, -u and -v options were deleted from the
+       <B>tset</B> utility in 4.4BSD. None of them  were  documented  in
+       4.3BSD and all are of limited utility at best. The -a, -d,
+       and -p options are similarly not documented or useful, but
+       were  retained as they appear to be in widespread use.  It
+       is strongly recommended that  any  usage  of  these  three
+       options  be  changed to use the -m option instead.  The -n
+       option remains, but has no effect.  The -adnp options  are
+       therefore omitted from the usage summary above.
+
+       It  is  still  permissible  to  specify the -e, -i, and -k
+       options without arguments, although it is strongly  recom-
+       mended  that such usage be fixed to explicitly specify the
+       character.
+
+       As of 4.4BSD, executing <B>tset</B> as <B>reset</B>  no  longer  implies
+       the -Q option.  Also, the interaction between the - option
+       and the <I>terminal</I> argument in some historic implementations
+       of <B>tset</B> has been removed.
+
+
+</PRE>
+<H2>ENVIRONMENT</H2><PRE>
+       The <B>tset</B> command uses the <B>SHELL</B> and <B>TERM</B> environment vari-
+       ables.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+       /etc/ttys
+            system port name to terminal  type  mapping  database
+            (BSD versions only).
+
+       @DATADIR@/terminfo
+            terminal capability database
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <B><A HREF="csh.1.html">csh(1)</A></B>, <B><A HREF="sh.1.html">sh(1)</A></B>, <B><A HREF="stty.1.html">stty(1)</A></B>, <B><A HREF="tty.4.html">tty(4)</A></B>, <B><A HREF="termcap.5.html">termcap(5)</A></B>, <B><A HREF="ttys.5.html">ttys(5)</A></B>, envi-
+       <B><A HREF="ron.7.html">ron(7)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
similarity index 52%
rename from Ada95/html/man/wresize.3x.html
rename to doc/html/man/wresize.3x.html
index 95354f26df4c95ce71ae68e38b61652f84c5ab17..d2e2650b9b746941c1541d26ac12a2268b250708 100644 (file)
@@ -1,29 +1,33 @@
 <HTML>
 <BODY>
 <PRE>
-       <STRONG>wresize</STRONG> - resize a curses window
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <B>wresize</B> - resize a curses window
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+       <B>#include</B> <B>&lt;curses.h&gt;</B>
 
-       <STRONG>int</STRONG> <STRONG>wresize(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>lines,</STRONG> <STRONG>int</STRONG> <STRONG>columns);</STRONG>
+       <B>int</B> <B>wresize(WINDOW</B> <B>*win,</B> <B>int</B> <B>lines,</B> <B>int</B> <B>columns);</B>
 
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
-       The  <STRONG>wresize</STRONG>  function  reallocates storage for an <STRONG>ncurses</STRONG>
+       The  <B>wresize</B>  function  reallocates storage for an <B>ncurses</B>
        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 <STRONG>wbkgndset</STRONG>) merged into
+       background  rendition  (as  set  by <B>wbkgndset</B>) merged into
        them.
 
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       The function returns the integer <STRONG>ERR</STRONG> upon failure  and  <STRONG>OK</STRONG>
+       The function returns the integer <B>ERR</B> upon failure  and  <B>OK</B>
        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.
 <H2>NOTES</H2><PRE>
        The only restriction placed on the dimensions is that they
        be greater than zero.  The dimensions are not compared  to
-       <STRONG>curses</STRONG>   screen   dimensions  to  simplify  the  logic  of
-       <STRONG>resizeterm</STRONG>.  The caller  must  ensure  that  the  window's
+       <B>curses</B>   screen   dimensions  to  simplify  the  logic  of
+       <B>resizeterm</B>.  The caller  must  ensure  that  the  window's
        dimensions fit within the actual screen dimensions.
 
 
 </PRE>
 <H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="resizeterm.3x.html">resizeterm(3X)</A></STRONG>.
+       <B><A HREF="resizeterm.3x.html">resizeterm(3x)</A></B>.
 
 
 </PRE>
 
 
 
+
 </PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
 </BODY>
 </HTML>
similarity index 96%
rename from misc/ncurses-intro.html
rename to doc/html/ncurses-intro.html
index d01c65e6e52d6d88268f770ebdf4fe079bca9b1a..05c756e0e8b4474eb84fb8309af8c22868166e8f 100644 (file)
@@ -1,6 +1,6 @@
 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
 <!--
-  $Id: ncurses-intro.html,v 1.31 1999/05/16 17:02:31 juergen Exp $
+  $Id: ncurses-intro.html,v 1.34 2000/06/11 00:03:55 tom Exp $
 -->
 <HTML>
 <HEAD>
@@ -169,7 +169,7 @@ API has the advantage of (a) back-portability to character-cell terminals,
 and (b) simplicity.  For an application that does not require bit-mapped
 graphics and multiple fonts, an interface implementation using <CODE>curses</CODE>
 will typically be a great deal simpler and less expensive than one using an
-X toolkit. <P>
+X toolkit.
 
 <H2><A NAME="history">A Brief History of Curses</A></H2>
 
@@ -186,19 +186,19 @@ extensions. Parameterized capabilities strings were introduced, making it
 possible to describe multiple video attributes, and colors and to handle far
 more unusual terminals than possible with termcap.  In the later AT&amp;T
 System V releases, <CODE>curses</CODE> evolved to use more facilities and offer
-more capabilities, going far beyond BSD curses in power and flexibility.<P>
+more capabilities, going far beyond BSD curses in power and flexibility.
 
 <H2><A NAME="scope">Scope of This Document</A></H2>
 
 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>
+It includes the following System V curses features:
 <UL>
 <LI>Support for multiple screen highlights (BSD curses could only
-handle one `standout' highlight, usually reverse-video). <P>
-<LI>Support for line- and box-drawing using forms characters. <P>
-<LI>Recognition of function keys on input. <P>
-<LI>Color support. <P>
+handle one `standout' highlight, usually reverse-video).
+<LI>Support for line- and box-drawing using forms characters.
+<LI>Recognition of function keys on input.
+<LI>Color support.
 <LI>Support for pads (windows of larger than screen size on which the
 screen or a subwindow defines a viewport).
 </UL>
@@ -225,7 +225,7 @@ and wrote most of this introduction.
 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>
+<A HREF="mailto:dickey@herndon4.his.com">Thomas Dickey</A>
 and
 <A HREF="mailto:juergen.pfeifer@gmx.net">J&uuml;rgen Pfeifer</A>.
 <A HREF="mailto:florian@gnu.org">Florian La Roche</A>
@@ -244,7 +244,7 @@ their visibility in the natural way (handling window overlaps). <P>
 Finally, this document describes in detail the <A HREF="#menu">menus</A> and <A
 HREF="#form">forms</A> extension libraries, also cloned from System V,
 which support easy construction and sequences of menus and fill-in
-forms. <P>
+forms.
 
 
 <H2><A NAME="terminology">Terminology</A></H2>
@@ -257,12 +257,12 @@ consistency:
 <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>
+screen, scrolling independently of other windows on the physical screen.
 <DT> screens
 <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>
+of these, <CODE>stdscr</CODE>, is automatically provided for the programmer.
 <DT> terminal screen
 <DD>
 The package's idea of what the terminal display currently looks like, i.e.,
@@ -316,7 +316,7 @@ A given physical screen section may be within the scope of any number of
 overlapping windows.  Also, changes can be made to windows in any order,
 without regard to motion efficiency.  Then, at will, the programmer can
 effectively say ``make it look like this,'' and let the package implementation
-determine the most efficient way to repaint the screen. <P>
+determine the most efficient way to repaint the screen.
 
 <H3><A NAME="stdscr">Standard Windows and Function Naming Conventions</A></H3>
 
@@ -368,7 +368,7 @@ can be replaced by
 
 Note that the window description pointer (win) comes before the added (y, x)
 coordinates.  If a function requires a window pointer, it is always the first
-parameter passed. <P>
+parameter passed.
 
 <H3><A NAME="variables">Variables</A></H3>
 
@@ -405,7 +405,7 @@ updating, reading, etc. is applied to <CODE>stdscr</CODE>.  These instructions w
 work on any window, providing you change the function names and parameters as
 mentioned above. <P>
 
-Here is a sample program to motivate the discussion: <P>
+Here is a sample program to motivate the discussion:
 
 <PRE>
 #include &lt;curses.h&gt;
@@ -413,8 +413,11 @@ Here is a sample program to motivate the discussion: <P>
 
 static void finish(int sig);
 
+int
 main(int argc, char *argv[])
 {
+    int num = 0;
+
     /* initialize your non-curses data structures here */
 
     (void) signal(SIGINT, finish);      /* arrange interrupts to terminate */
@@ -423,28 +426,32 @@ main(int argc, char *argv[])
     keypad(stdscr, TRUE);  /* enable keyboard mapping */
     (void) nonl();         /* tell curses not to do NL-&gt;CR/NL on output */
     (void) cbreak();       /* take input chars one at a time, no wait for \n */
-    (void) noecho();       /* don't echo input */
+    (void) echo();         /* echo input - in color */
 
     if (has_colors())
     {
         start_color();
 
         /*
-         * Simple color assignment, often all we need.
+         * Simple color assignment, often all we need.  Color pair 0 cannot
+        * be redefined.  This example uses the same value for the color
+        * pair as for the foreground color, though of course that is not
+        * necessary:
          */
-        init_pair(COLOR_BLACK, COLOR_BLACK, COLOR_BLACK);
-        init_pair(COLOR_GREEN, COLOR_GREEN, COLOR_BLACK);
-        init_pair(COLOR_RED, COLOR_RED, COLOR_BLACK);
-        init_pair(COLOR_CYAN, COLOR_CYAN, COLOR_BLACK);
-        init_pair(COLOR_WHITE, COLOR_WHITE, COLOR_BLACK);
-        init_pair(COLOR_MAGENTA, COLOR_MAGENTA, COLOR_BLACK);
-        init_pair(COLOR_BLUE, COLOR_BLUE, COLOR_BLACK);
-        init_pair(COLOR_YELLOW, COLOR_YELLOW, COLOR_BLACK);
+        init_pair(1, COLOR_RED,     COLOR_BLACK);
+        init_pair(2, COLOR_GREEN,   COLOR_BLACK);
+        init_pair(3, COLOR_YELLOW,  COLOR_BLACK);
+        init_pair(4, COLOR_BLUE,    COLOR_BLACK);
+        init_pair(5, COLOR_CYAN,    COLOR_BLACK);
+        init_pair(6, COLOR_MAGENTA, COLOR_BLACK);
+        init_pair(7, COLOR_WHITE,   COLOR_BLACK);
     }
 
     for (;;)
     {
         int c = getch();     /* refresh, accept single keystroke of input */
+       attrset(COLOR_PAIR(num % 8));
+       num++;
 
         /* process the command keystroke */
     }
@@ -487,7 +494,7 @@ coordinates after updating it. <P>
 You can create new windows of your own using the functions <CODE>newwin()</CODE>,
 <CODE>derwin()</CODE>, and <CODE>subwin()</CODE>.  The routine <CODE>delwin()</CODE> will
 allow you to get rid of old windows.  All the options described above can be
-applied to any window. <P>
+applied to any window.
 
 <H3><A NAME="output">Output</A></H3>
 
@@ -515,7 +522,7 @@ to make it look like the entire window has been changed, thus making
 If you call <CODE>wrefresh()</CODE> with <CODE>curscr</CODE> as its argument, it will
 make the screen look like <CODE>curscr</CODE> thinks it looks like.  This is useful
 for implementing a command which would redraw the screen in case it get messed
-up. <P>
+up.
 
 <H3><A NAME="input">Input</A></H3>
 
@@ -539,7 +546,7 @@ watches the input stream for character sequences that correspond to arrow and
 function keys.  These sequences are returned as pseudo-character values.  The
 <CODE>#define</CODE> values returned are listed in the <CODE>curses.h</CODE> The
 mapping from sequences to <CODE>#define</CODE> values is determined by
-<CODE>key_</CODE> capabilities in the terminal's terminfo entry. <P>
+<CODE>key_</CODE> capabilities in the terminal's terminfo entry.
 
 <H3><A NAME="formschars">Using Forms Characters</A></H3>
 
@@ -552,7 +559,7 @@ the prefix <CODE>ACS_</CODE>). <P>
 The most useful of the ACS defines are the forms-drawing characters.  You can
 use these to draw boxes and simple graphs on the screen.  If the terminal
 does not have such characters, <CODE>curses.h</CODE> will map them to a
-recognizable (though ugly) set of ASCII defaults. <P>
+recognizable (though ugly) set of ASCII defaults.
 
 <H3><A NAME="attributes">Character Attributes and Color</A></H3>
 
@@ -584,7 +591,7 @@ have been used as the first arguments of the <CODE>init_pair()</CODE> values. <P
 Once you've done an <CODE>init_pair()</CODE> that creates color-pair N, you can
 use <CODE>COLOR_PAIR(N)</CODE> as a highlight that invokes that particular
 color combination.  Note that <CODE>COLOR_PAIR(N)</CODE>, for constant N,
-is itself a compile-time constant and can be used in initializers. <P>
+is itself a compile-time constant and can be used in initializers.
 
 <H3><A NAME="mouse">Mouse Interfacing</A></H3>
 
@@ -657,7 +664,7 @@ would normally accept from the keyboard.  Two of the test games in the
 code that illustrates how this can be done. <P>
 
 See the manual page <CODE>curs_mouse(3X)</CODE> for full details of the
-mouse-interface functions. <P>
+mouse-interface functions.
 
 <H3><A NAME="finishing">Finishing Up</A></H3>
 
@@ -665,7 +672,7 @@ In order to clean up after the <CODE>ncurses</CODE> routines, the routine
 <CODE>endwin()</CODE> is provided.  It restores tty modes to what they were when
 <CODE>initscr()</CODE> was first called, and moves the cursor down to the
 lower-left corner.  Thus, anytime after the call to initscr, <CODE>endwin()</CODE>
-should be called before exiting. <P>
+should be called before exiting.
 
 <H2><A NAME="functions">Function Descriptions</A></H2>
 
@@ -684,14 +691,14 @@ occurs a message is written to standard error and the program
 exits. Otherwise it returns a pointer to stdscr.  A few functions may be
 called before initscr (<CODE>slk_init()</CODE>, <CODE>filter()</CODE>,
 <CODE>ripofflines()</CODE>, <CODE>use_env()</CODE>, and, if you are using multiple
-terminals, <CODE>newterm()</CODE>.) <P>
+terminals, <CODE>newterm()</CODE>.)
 <DT> <CODE>endwin()</CODE>
 <DD> Your program should always call <CODE>endwin()</CODE> before exiting or
 shelling out of the program. This function will restore tty modes,
 move the cursor to the lower left corner of the screen, reset the
 terminal into the proper non-visual mode.  Calling <CODE>refresh()</CODE>
 or <CODE>doupdate()</CODE> after a temporary escape from the program will
-restore the ncurses screen from before the escape. <P>
+restore the ncurses screen from before the escape.
 <DT> <CODE>newterm(type, ofp, ifp)</CODE>
 <DD> A program which outputs to more than one terminal should use
 <CODE>newterm()</CODE> instead of <CODE>initscr()</CODE>.  <CODE>newterm()</CODE> should
@@ -701,12 +708,12 @@ terminal. The arguments are the type of the terminal (a string) and
 <CODE>FILE</CODE> pointers for the output and input of the terminal.  If
 type is NULL then the environment variable <CODE>$TERM</CODE> is used.
 <CODE>endwin()</CODE> should called once at wrapup time for each terminal
-opened using this function. <P>
+opened using this function.
 <DT> <CODE>set_term(new)</CODE>
 <DD> This function is used to switch to a different terminal previously
 opened by <CODE>newterm()</CODE>.  The screen reference for the new terminal
 is passed as the parameter.  The previous terminal is returned by the
-function.  All other calls affect only the current terminal. <P>
+function.  All other calls affect only the current terminal.
 <DT> <CODE>delscreen(sp)</CODE>
 <DD> The inverse of <CODE>newterm()</CODE>; deallocates the data structures
 associated with a given <CODE>SCREEN</CODE> reference.
@@ -723,7 +730,7 @@ terminal screen,  taking  into account  what is already
 there in  order to  do optimizations.  <CODE>refresh()</CODE> does a
 refresh of <CODE>stdscr()</CODE>.   Unless <CODE>leaveok()</CODE> has been
 enabled, the physical cursor of the terminal is left at  the
-location of the window's cursor. <P>
+location of the window's cursor.
 <DT> <CODE>doupdate()</CODE> and <CODE>wnoutrefresh(win)</CODE>
 <DD> These two functions allow multiple updates with more efficiency
 than wrefresh.  To use them, it is important to understand how curses
@@ -805,13 +812,13 @@ data dumped in them.  There is a script called <STRONG>tracemunch</STRONG>
 included with the <CODE>ncurses</CODE> distribution that can alleviate
 this problem somewhat; it compacts long sequences of similar operations into
 more succinct single-line pseudo-operations. These pseudo-ops can be
-distinguished by the fact that they are named in capital letters.<P>
+distinguished by the fact that they are named in capital letters.
 
 <H2><A NAME="hints">Hints, Tips, and Tricks</A></H2>
 
 The <CODE>ncurses</CODE> manual pages are a complete reference for this library.
 In the remainder of this document, we discuss various useful methods that
-may not be obvious from the manual page descriptions. <P>
+may not be obvious from the manual page descriptions.
 
 <H3><A NAME="caution">Some Notes of Caution</A></H3>
 
@@ -846,7 +853,7 @@ overlapping-windows facilities. <P>
 Try to avoid using the global variables LINES and COLS.  Use
 <CODE>getmaxyx()</CODE> on the <CODE>stdscr</CODE> 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. <P>
+in which case several screens could be open with different sizes.
 
 <H3><A NAME="leaving">Temporarily Leaving NCURSES Mode</A></H3>
 
@@ -912,7 +919,7 @@ For each call, you will have to specify a terminal type and a pair of file
 pointers; each call will return a screen reference, and <CODE>stdscr</CODE> will be
 set to the last one allocated.  You will switch between screens with the
 <CODE>set_term</CODE> call.  Note that you will also have to call
-<CODE>def_shell_mode</CODE> and <CODE>def_prog_mode</CODE> on each tty yourself. <P>
+<CODE>def_shell_mode</CODE> and <CODE>def_prog_mode</CODE> on each tty yourself.
 
 <H3><A NAME="testing">Testing for Terminal Capabilities</A></H3>
 
@@ -927,14 +934,14 @@ test whether a given terminal type should be treated as `smart'
 (cursor-addressable) or `stupid'.  The right way to test this is to see
 if the return value of <CODE>tigetstr("cup")</CODE> is non-NULL.  Alternatively,
 you can include the <CODE>term.h</CODE> file and test the value of the
-macro <CODE>cursor_address</CODE>. <P>
+macro <CODE>cursor_address</CODE>.
 
 <H3><A NAME="tuning">Tuning for Speed</A></H3>
 
 Use the <CODE>addchstr()</CODE> family of functions for fast
 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>
+screens.  Don't use the <CODE>immedok()</CODE> option!
 
 <H3><A NAME="special">Special Features of NCURSES</A></H3>
 
@@ -1012,7 +1019,7 @@ when you want a screen update, you do <CODE>update_panels()</CODE>, it will
 do all the necessary <CODE>wnoutrfresh()</CODE> calls for whatever panel
 stacking order you have defined.  Then you can do one <CODE>doupdate()</CODE>
 and there will be a <EM>single</EM> burst of physical I/O that will do
-all your updates. <P>
+all your updates.
 
 <H3><A NAME="backbug">Background Erase</A></H3>
 
@@ -1027,7 +1034,7 @@ is normal unless and until it is modified by the functions <CODE>bkgdset()</CODE
 or <CODE>wbkgdset()</CODE>. <P>
 
 This change in behavior conforms <CODE>ncurses</CODE> to System V Release 4 and
-the XSI Curses standard. <P>
+the XSI Curses standard.
 
 <H2><A NAME="xsifuncs">XSI Curses Conformance</A></H2>
 
@@ -1042,7 +1049,7 @@ One effect of XSI conformance is the change in behavior described under
 Also, <CODE>ncurses</CODE> meets the XSI requirement that every macro
 entry point have a corresponding function which may be linked (and
 will be prototype-checked) if the macro definition is disabled with
-<CODE>#undef</CODE>. <P>
+<CODE>#undef</CODE>.
 
 <H1><A NAME="panels">The Panels Library</A></H1>
 
@@ -1119,7 +1126,7 @@ Typically, you will want to call <CODE>update_panels()</CODE> and
 <CODE>doupdate()</CODE> just before accepting command input, once in each cycle
 of interaction with the user.  If you call <CODE>update_panels()</CODE> after
 each and every panel write, you'll generate a lot of unnecessary refresh
-activity and screen flicker. <P>
+activity and screen flicker.
 
 <H2><A NAME="pstdscr">Panels, Input, and the Standard Screen</A></H2>
 
@@ -1137,7 +1144,7 @@ Therefore, before requesting input from a panel window, you need to be sure
 that the panel is totally unobscured. <P>
 
 There is presently no way to display changes to one obscured panel without
-repainting all panels. <P>
+repainting all panels.
 
 <H2><A NAME="hiding">Hiding Panels</A></H2>
 
@@ -1148,7 +1155,7 @@ tests whether or not a panel is hidden. <P>
 
 The <CODE>panel_update</CODE> code ignores hidden panels.  You cannot do
 <CODE>top_panel()</CODE> or <CODE>bottom_panel</CODE> on a hidden panel().
-Other panels operations are applicable. <P>
+Other panels operations are applicable.
 
 <H2><A NAME="pmisc">Miscellaneous Other Facilities</A></H2>
 
@@ -1160,7 +1167,7 @@ pointer, they return the panel above or below that panel.  Handed
 Every panel has an associated user pointer, not used by the panel code, to
 which you can attach application data.  See the man page documentation
 of <CODE>set_panel_userptr()</CODE> and <CODE>panel_userptr</CODE> for
-details. <P>
+details.
 
 <H1><A NAME="menu">The Menu Library</A></H1>
 
@@ -1171,7 +1178,7 @@ uniform but flexible interface. <P>
 
 The <CODE>menu</CODE> library first appeared in AT&amp;T System V.  The
 version documented here is the <CODE>menu</CODE> code distributed
-with <CODE>ncurses</CODE>. <P>
+with <CODE>ncurses</CODE>.
 
 <H2><A NAME="mcompile">Compiling With the menu Library</A></H2>
 
@@ -1235,12 +1242,12 @@ predicate function.  Your menu-processing code can use the function
 Menu items can be made unselectable using <CODE>set_item_opts()</CODE>
 or <CODE>item_opts_off()</CODE> with the <CODE>O_SELECTABLE</CODE>
 argument.  This is the only option so far defined for menus, but it
-is good practice to code as though other option bits might be on. <P>
+is good practice to code as though other option bits might be on.
 
 <H2><A NAME="mdisplay">Menu Display</A></H2>
 
 The menu library calculates a minimum display size for your window, based
-on the following variables: <P>
+on the following variables:
 
 <UL>
 <LI>The number and maximum length of the menu items
@@ -1280,7 +1287,7 @@ There are other menu display attributes including a select attribute,
 an attribute for selectable items, an attribute for unselectable items,
 and a pad character used to separate item name text from description
 text.  These have reasonable defaults which the library allows you to
-change (see the <CODE>menu_attribs(3x)</CODE> manual page. <P>
+change (see the <CODE>menu_attribs(3x)</CODE> manual page.
 
 <H2><A NAME="mwindows">Menu Windows</A></H2>
 
@@ -1300,7 +1307,7 @@ functions in <CODE>menu_win(3x)</CODE>. <P>
 When you call <CODE>menu_post()</CODE>, you write the menu to its
 subwindow.  When you call <CODE>menu_unpost()</CODE>, you erase the
 subwindow, However, neither of these actually modifies the screen.  To
-do that, call <CODE>wrefresh()</CODE> or some equivalent. <P>
+do that, call <CODE>wrefresh()</CODE> or some equivalent.
 
 <H2><A NAME="minput">Processing Menu Input</A></H2>
 
@@ -1372,7 +1379,7 @@ wrapup time, and whenever the selected item changes.  See
 
 Each item, and each menu, has an associated user pointer on which you
 can hang application data.  See <CODE>mitem_userptr(3x)</CODE> and
-<CODE>menu_userptr(3x)</CODE>. <P>
+<CODE>menu_userptr(3x)</CODE>.
 
 <H1><A NAME="form">The Forms Library</A></H1>
 
@@ -1381,7 +1388,7 @@ 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 <CODE>form</CODE> code distributed
-with <CODE>ncurses</CODE>. <P>
+with <CODE>ncurses</CODE>.
 
 <H2><A NAME="fcompile">Compiling With the form Library</A></H2>
 
@@ -1395,7 +1402,7 @@ and must be linked explicitly with the forms library using an
 <CODE>-lform</CODE> argument.  Note that they must also link the
 <CODE>ncurses</CODE> library with <CODE>-lncurses</CODE>.  Many linkers
 are two-pass and will accept either order, but it is still good practice
-to put <CODE>-lform</CODE> first and <CODE>-lncurses</CODE> second. <P>
+to put <CODE>-lform</CODE> first and <CODE>-lncurses</CODE> second.
 
 <H2><A NAME="foverview">Overview of Forms</A></H2>
 
@@ -1446,11 +1453,11 @@ wherever possible. <P>
 
 In forms programs, however, the `process user requests' is somewhat more
 complicated than for menus.  Besides menu-like navigation operations,
-the menu driver loop has to support field editing and data validation. <P>
+the menu driver loop has to support field editing and data validation.
 
 <H2><A NAME="fcreate">Creating and Freeing Fields and Forms</A></H2>
 
-The basic function for creating fields is <CODE>new_field()</CODE>: <P>
+The basic function for creating fields is <CODE>new_field()</CODE>:
 
 <PRE>
 FIELD *new_field(int height, int width,   /* new field size */
@@ -1482,7 +1489,7 @@ The forms library allocates one working buffer per field; the size of
 each buffer is <CODE>((height + offscreen)*width + 1</CODE>, one character
 for each position in the field plus a NUL terminator.  The sixth
 argument is the number of additional data buffers to allocate for the
-field; your application can use them for its own purposes. <P>
+field; your application can use them for its own purposes.
 
 <PRE>
 FIELD *dup_field(FIELD *field,            /* field to copy */
@@ -1492,7 +1499,7 @@ FIELD *dup_field(FIELD *field,            /* field to copy */
 The function <CODE>dup_field()</CODE> duplicates an existing field at a
 new location.  Size and buffering information are copied; some
 attribute flags and status bits are not (see the
-<CODE>form_field_new(3X)</CODE> for details). <P>
+<CODE>form_field_new(3X)</CODE> for details).
 
 <PRE>
 FIELD *link_field(FIELD *field,           /* field to copy */
@@ -1516,7 +1523,7 @@ As you might guess, all these field-allocations return <CODE>NULL</CODE> if
 the field allocation is not possible due to an out-of-memory error or
 out-of-bounds arguments. <P>
 
-To connect fields to a form, use  <P>
+To connect fields to a form, use
 
 <PRE>
 FORM *new_form(FIELD **fields);
@@ -1534,7 +1541,7 @@ note that any given field may only be connected to one form. <P>
 The functions <CODE>free_field()</CODE> and <CODE>free_form</CODE> are available
 to free field and form objects.  It is an error to attempt to free a field
 connected to a form, but not vice-versa; thus, you will generally free
-your form objects first. <P>
+your form objects first.
 
 <H2><A NAME="fattributes">Fetching and Changing Field Attributes</A></H2>
 
@@ -1549,11 +1556,11 @@ When a field is created, the attributes not specified by the
 <CODE>new_field</CODE> function are copied from an invisible system
 default field.  In attribute-setting and -fetching functions, the
 argument NULL is taken to mean this field.  Changes to it persist
-as defaults until your forms application terminates. <P>
+as defaults until your forms application terminates.
 
 <H3><A NAME="fsizes">Fetching Size and Location Data</A></H3>
 
-You can retrieve field sizes and locations through: <P>
+You can retrieve field sizes and locations through:
 
 <PRE>
 int field_info(FIELD *field,              /* field from which to fetch */
@@ -1565,11 +1572,11 @@ int field_info(FIELD *field,              /* field from which to fetch */
 
 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>
+from an existing one.
 
 <H3><A NAME="flocation">Changing the Field Location</A></H3>
 
-It is possible to move a field's location on the screen:  <P>
+It is possible to move a field's location on the screen:
 
 <PRE>
 int move_field(FIELD *field,              /* field to alter */
@@ -1581,7 +1588,7 @@ You can, of course. query the current location through <CODE>field_info()</CODE>
 <H3><A NAME="fjust">The Justification Attribute</A></H3>
 
 One-line fields may be unjustified, justified right, justified left,
-or centered.  Here is how you manipulate this attribute:  <P>
+or centered.  Here is how you manipulate this attribute:
 
 <PRE>
 int set_field_just(FIELD *field,          /* field to alter */
@@ -1592,7 +1599,7 @@ int field_just(FIELD *field);             /* fetch mode of field */
 
 The mode values accepted and returned by this functions are
 preprocessor macros <CODE>NO_JUSTIFICATION</CODE>, <CODE>JUSTIFY_RIGHT</CODE>,
-<CODE>JUSTIFY_LEFT</CODE>, or <CODE>JUSTIFY_CENTER</CODE>. <P>
+<CODE>JUSTIFY_LEFT</CODE>, or <CODE>JUSTIFY_CENTER</CODE>.
 
 <H3><A NAME="fdispatts">Field Display Attributes</A></H3>
 
@@ -1603,7 +1610,7 @@ control pagination of the form. <P>
 
 This group of four field attributes controls the visual appearance
 of the field on the screen, without affecting in any way the data
-in the field buffer. <P>
+in the field buffer.
 
 <PRE>
 int set_field_fore(FIELD *field,          /* field to alter */
@@ -1632,7 +1639,7 @@ The attributes set and returned by the first four functions are normal
 <CODE>A_BOLD</CODE>, <CODE>A_REVERSE</CODE> etc).
 
 The page bit of a field controls whether it is displayed at the start of
-a new form screen. <P>
+a new form screen.
 
 <H3><A NAME="foptions">Field Option Bits</A></H3>
 
@@ -1708,13 +1715,13 @@ A field's options cannot be changed while the field is currently selected.
 However, options may be changed on posted fields that are not current. <P>
 
 The option values are bit-masks and can be composed with logical-or in
-the obvious way. <P>
+the obvious way.
 
 <H2><A NAME="fstatus">Field Status</A></H2>
 
 Every field has a status flag, which is set to FALSE when the field is
 created and TRUE when the value in field buffer 0 changes.  This flag can
-be queried and set directly: <P>
+be queried and set directly:
 
 <PRE>
 int set_field_status(FIELD *field,      /* field to alter */
@@ -1736,7 +1743,7 @@ To guarantee that the returned status value reflects reality, call
 <CODE>field_status()</CODE> either (1) in the field's exit validation check
 routine, (2) from the field's or form's initialization or termination
 hooks, or (3) just after a <CODE>REQ_VALIDATION</CODE> request has been
-processed by the forms driver. <P>
+processed by the forms driver.
 
 <H2><A NAME="fuser">Field User Pointer</A></H2>
 
@@ -1757,7 +1764,7 @@ 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
 <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>
+to initialize the new field's user pointer.
 
 <H2><A NAME="fdynamic">Variable-Sized Fields</A></H2>
 
@@ -1776,7 +1783,7 @@ dimensioned and located. <P>
 
 Normally, a dynamic field is allowed to grow without limit.  But it is
 possible to set an upper limit on the size of a dynamic field.  You do
-it with this function: <P>
+it with this function:
 
 <PRE>
 int set_max_field(FIELD *field,     /* field to alter (may not be NULL) */
@@ -1818,7 +1825,7 @@ is changed through a linked field. <P>
 The <CODE>form</CODE> library provides a rich set of pre-defined validation
 types, and gives you the capability to define custom ones of your own.  You
 can examine and change field validation attributes with the following
-functions: <P>
+functions:
 
 <PRE>
 int set_field_type(FIELD *field,          /* field to alter */
@@ -1833,12 +1840,12 @@ with other field attributes, Also, doing <CODE>set_field_type()</CODE> with a
 <CODE>NULL</CODE> field default will change the system default for validation of
 newly-created fields. <P>
 
-Here are the pre-defined validation types: <P>
+Here are the pre-defined validation types:
 
 <H3><A NAME="ftype_alpha">TYPE_ALPHA</A></H3>
 
 This field type accepts alphabetic data; no blanks, no digits, no special
-characters (this is checked at character-entry time).  It is set up with: <P>
+characters (this is checked at character-entry time).  It is set up with:
 
 <PRE>
 int set_field_type(FIELD *field,          /* field to alter */
@@ -1849,12 +1856,12 @@ int set_field_type(FIELD *field,          /* field to alter */
 The <CODE>width</CODE> argument sets a minimum width of data.  Typically
 you'll want to set this to the field width; if it's greater than the
 field width, the validation check will always fail.  A minimum width
-of zero makes field completion optional. <P>
+of zero makes field completion optional.
 
 <H3><A NAME="ftype_alnum">TYPE_ALNUM</A></H3>
 
 This field type accepts alphabetic data and digits; no blanks, no special
-characters (this is checked at character-entry time).  It is set up with: <P>
+characters (this is checked at character-entry time).  It is set up with:
 
 <PRE>
 int set_field_type(FIELD *field,          /* field to alter */
@@ -1865,13 +1872,13 @@ int set_field_type(FIELD *field,          /* field to alter */
 The <CODE>width</CODE> argument sets a minimum width of data.  As with
 TYPE_ALPHA, typically you'll want to set this to the field width; if it's
 greater than the field width, the validation check will always fail.  A
-minimum width of zero makes field completion optional. <P>
+minimum width of zero makes field completion optional.
 
 <H3><A NAME="ftype_enum">TYPE_ENUM</A></H3>
 
 This type allows you to restrict a field's values to be among a specified
 set of string values (for example, the two-letter postal codes for U.S.
-states).  It is set up with: <P>
+states).  It is set up with:
 
 <PRE>
 int set_field_type(FIELD *field,          /* field to alter */
@@ -1896,11 +1903,11 @@ value.  But the <CODE>checkunique</CODE> argument, if true, requires prefix
 matches to be unique in order to be valid. <P>
 
 The <CODE>REQ_NEXT_CHOICE</CODE> and <CODE>REQ_PREV_CHOICE</CODE> input requests
-can be particularly useful with these fields. <P>
+can be particularly useful with these fields.
 
 <H3><A NAME="ftype_integer">TYPE_INTEGER</A></H3>
 
-This field type accepts an integer.  It is set up as follows: <P>
+This field type accepts an integer.  It is set up as follows:
 
 <PRE>
 int set_field_type(FIELD *field,          /* field to alter */
@@ -1921,7 +1928,7 @@ with the C library function <CODE>atoi(3)</CODE>.
 
 <H3><A NAME="ftype_numeric">TYPE_NUMERIC</A></H3>
 
-This field type accepts a decimal number.  It is set up as follows: <P>
+This field type accepts a decimal number.  It is set up as follows:
 
 <PRE>
 int set_field_type(FIELD *field,              /* field to alter */
@@ -1945,7 +1952,7 @@ with the C library function <CODE>atof(3)</CODE>.
 <H3><A NAME="ftype_regexp">TYPE_REGEXP</A></H3>
 
 This field type accepts data matching a regular expression.  It is set up
-as follows: <P>
+as follows:
 
 <PRE>
 int set_field_type(FIELD *field,          /* field to alter */
@@ -1960,7 +1967,7 @@ The check for regular-expression match is performed on exit.
 
 The chief attribute of a field is its buffer contents.  When a form has
 been completed, your application usually needs to know the state of each
-field buffer.  You can find this out with: <P>
+field buffer.  You can find this out with:
 
 <PRE>
 char *field_buffer(FIELD *field,          /* field to query */
@@ -1993,7 +2000,7 @@ To guarantee that the returned buffer value reflects on-screen reality,
 call <CODE>field_buffer()</CODE> either (1) in the field's exit validation
 check routine, (2) from the field's or form's initialization or termination
 hooks, or (3) just after a <CODE>REQ_VALIDATION</CODE> request has been processed
-by the forms driver. <P>
+by the forms driver.
 
 <H2><A NAME="formattrs">Attributes of Forms</A></H2>
 
@@ -2002,7 +2009,7 @@ system default form structure.  These defaults can be queried or set by
 of these functions using a form-pointer argument of <CODE>NULL</CODE>. <P>
 
 The principal attribute of a form is its field list.  You can query
-and change this list with: <P>
+and change this list with:
 
 <PRE>
 int set_form_fields(FORM *form,           /* form to alter */
@@ -2024,7 +2031,7 @@ It may also be null, in which case the old fields are disconnected
 
 The <CODE>field_count()</CODE> function simply counts the number of fields
 connected to a given from.  It returns -1 if the form-pointer argument
-is NULL. <P>
+is NULL.
 
 <H2><A NAME="fdisplay">Control of Form Display</A></H2>
 
@@ -2055,7 +2062,7 @@ is where the current form page is actually displayed. <P>
 
 In order to declare your own frame window for a form, you'll need to
 know the size of the form's bounding rectangle.  You can get this
-information with: <P>
+information with:
 
 <PRE>
 int scale_form(FORM *form,                /* form to query */
@@ -2084,7 +2091,7 @@ should be done on the frame window, not the form subwindow. <P>
 
 It is possible to check from your application whether all of a
 scrollable field is actually displayed within the menu subwindow.  Use
-these functions: <P>
+these functions:
 
 <PRE>
 int data_ahead(FORM *form);               /* form to be queried */
@@ -2100,21 +2107,21 @@ The function <CODE>data_behind()</CODE> returns TRUE if the first (upper
 left hand) character position is off-screen (not being displayed). <P>
 
 Finally, there is a function to restore the form window's cursor to the
-value expected by the forms driver: <P>
+value expected by the forms driver:
 
 <PRE>
 int pos_form_cursor(FORM *)               /* form to be queried */
 </PRE>
 
 If your application changes the form window cursor, call this function before
-handing control back to the forms driver in order to re-synchronize it. <P>
+handing control back to the forms driver in order to re-synchronize it.
 
 <H2><A NAME="fdriver">Input Processing in the Forms Driver</A></H2>
 
 The function <CODE>form_driver()</CODE> handles virtualized input requests
 for form navigation, editing, and validation requests, just as
 <CODE>menu_driver</CODE> does for menus (see the section on <A
-HREF="#minput">menu input handling</A>). <P>
+HREF="#minput">menu input handling</A>).
 
 <PRE>
 int form_driver(FORM *form,               /* form to pass input to */
@@ -2127,12 +2134,12 @@ entered in the currently-selected field), or a forms processing request. <P>
 
 The forms driver provides hooks (through input-validation and
 field-termination functions) with which your application code can check
-that the input taken by the driver matched what was expected. <P>
+that the input taken by the driver matched what was expected.
 
 <H3><A NAME="fpage">Page Navigation Requests</A></H3>
 
 These requests cause page-level moves through the form,
-triggering display of a new form screen. <P>
+triggering display of a new form screen.
 
 <DL>
 <DT> <CODE>REQ_NEXT_PAGE</CODE>
@@ -2147,11 +2154,11 @@ triggering display of a new form screen. <P>
 
 These requests treat the list as cyclic; that is, <CODE>REQ_NEXT_PAGE</CODE>
 from the last page goes to the first, and <CODE>REQ_PREV_PAGE</CODE> from
-the first page goes to the last. <P>
+the first page goes to the last.
 
 <H3><A NAME="#ffield">Inter-Field Navigation Requests</A></H3>
 
-These requests handle navigation between fields on the same page. <P>
+These requests handle navigation between fields on the same page.
 
 <DL>
 <DT> <CODE>REQ_NEXT_FIELD</CODE>
@@ -2162,7 +2169,6 @@ These requests handle navigation between fields on the same page. <P>
 <DD> Move to the first field.
 <DT> <CODE>REQ_LAST_FIELD</CODE>
 <DD> Move to the last field.
-<P>
 <DT> <CODE>REQ_SNEXT_FIELD</CODE>
 <DD> Move to sorted next field.
 <DT> <CODE>REQ_SPREV_FIELD</CODE>
@@ -2171,7 +2177,6 @@ These requests handle navigation between fields on the same page. <P>
 <DD> Move to the sorted first field.
 <DT> <CODE>REQ_SLAST_FIELD</CODE>
 <DD> Move to the sorted last field.
-<P>
 <DT> <CODE>REQ_LEFT_FIELD</CODE>
 <DD> Move left to field.
 <DT> <CODE>REQ_RIGHT_FIELD</CODE>
@@ -2203,12 +2208,12 @@ For example, suppose you have a multi-line field B, and two
 single-line fields A and C on the same line with B, with A to the left
 of B and C to the right of B.  A <CODE>REQ_MOVE_RIGHT</CODE> from A will
 go to B only if A, B, and C <EM>all</EM> share the same first line;
-otherwise it will skip over B to C. <P>
+otherwise it will skip over B to C.
 
 <H3><A NAME="#fifield">Intra-Field Navigation Requests</A></H3>
 
 These requests drive movement of the edit cursor within the currently
-selected field. <P>
+selected field.
 
 <DL>
 <DT> <CODE>REQ_NEXT_CHAR</CODE>
@@ -2243,7 +2248,7 @@ selected field. <P>
 
 Each <EM>word</EM> is separated from the previous and next characters
 by whitespace.  The commands to move to beginning and end of line or field
-look for the first or last non-pad character in their ranges. <P>
+look for the first or last non-pad character in their ranges.
 
 <H3><A NAME="fscroll">Scrolling Requests</A></H3>
 
@@ -2253,7 +2258,6 @@ multi-line fields scroll vertically.  Most scrolling is triggered by
 editing and intra-field movement (the library scrolls the field to keep the
 cursor visible).  It is possible to explicitly request scrolling with the
 following requests:
-<P>
 
 <DL>
 <DT> <CODE>REQ_SCR_FLINE</CODE>
@@ -2283,7 +2287,7 @@ following requests:
 </DL>
 
 For scrolling purposes, a <EM>page</EM> of a field is the height
-of its visible part. <P>
+of its visible part.
 
 <H3><A NAME="fedit">Editing Requests</A></H3>
 
@@ -2293,7 +2297,7 @@ is an insertion or a replacement depends on the field's edit mode
 (insertion is the default. <P>
 
 The following requests support editing the field and changing the edit
-mode: <P>
+mode:
 
 <DL>
 <DT> <CODE>REQ_INS_MODE</CODE>
@@ -2359,13 +2363,13 @@ treated as a <CODE>REQ_PREV_FIELD</CODE>. <P> If the
 disabled and the forms driver just returns <CODE>E_REQUEST_DENIED</CODE>. <P>
 
 See <A HREF="#frmoptions">Form Options</A> for discussion of how to set
-and clear the overload options. <P>
+and clear the overload options.
 
 <H3><A NAME="forder">Order Requests</A></H3>
 
 If the type of your field is ordered, and has associated functions
 for getting the next and previous values of the type from a given value,
-there are requests that can fetch that value into the field buffer: <P>
+there are requests that can fetch that value into the field buffer:
 
 <DL>
 <DT> <CODE>REQ_NEXT_CHOICE</CODE>
@@ -2377,19 +2381,19 @@ there are requests that can fetch that value into the field buffer: <P>
 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
 (see <A HREF="#fcustom">Custom Validation Types</A>), you can associate
-our own ordering functions. <P>
+our own ordering functions.
 
 <H3><A NAME="fappcmds">Application Commands</A></H3>
 
 Form requests are represented as integers above the <CODE>curses</CODE> value
 greater than <CODE>KEY_MAX</CODE> and less than or equal to the constant
 <CODE>MAX_COMMAND</CODE>.  If your input-virtualization routine returns a
-value above <CODE>MAX_COMMAND</CODE>, the forms driver will ignore it. <P>
+value above <CODE>MAX_COMMAND</CODE>, the forms driver will ignore it.
 
 <H2><A NAME="fhooks">Field Change Hooks</A></H2>
 
 It is possible to set function hooks to be executed whenever the
-current field or form changes.  Here are the functions that support this: <P>
+current field or form changes.  Here are the functions that support this:
 
 <PRE>
 typedef void   (*HOOK)();       /* pointer to function returning void */
@@ -2418,7 +2422,7 @@ HOOK field_term(FORM *form);     /* form to query */
 These functions allow you to either set or query four different hooks.
 In each of the set functions, the second argument should be the
 address of a hook function.  These functions differ only in the timing
-of the hook call. <P>
+of the hook call.
 
 <DL>
 <DT> form_init
@@ -2429,7 +2433,7 @@ each page change operation.
 each field change
 <DT> field_term
 <DD> This hook is called just after field validation; that is, just before
-the field is altered.  It is also called when the form is unposted. <P>
+the field is altered.  It is also called when the form is unposted.
 <DT> form_term
 <DD> This hook is called when the form is unposted; also, just before
 each page change operation.
@@ -2449,7 +2453,7 @@ You can set a default hook for all fields by passing one of the set functions
 a NULL first argument. <P>
 
 You can disable any of these hooks by (re)setting them to NULL, the default
-value. <P>
+value.
 
 <H2><A HREF="#ffocus">Field Change Commands</A></H2>
 
@@ -2457,7 +2461,7 @@ Normally, navigation through the form will be driven by the user's
 input requests.  But sometimes it is useful to be able to move the
 focus for editing and viewing under control of your application, or
 ask which field it currently is in.  The following functions help you
-accomplish this: <P>
+accomplish this:
 
 <PRE>
 int set_current_field(FORM *form,         /* form to alter */
@@ -2476,7 +2480,7 @@ in the given form's field array (the array passed to <CODE>new_form()</CODE> or
 The initial current field of a form is the first active field on the
 first page. The function <CODE>set_form_fields()</CODE> resets this.<P>
 
-It is also possible to move around by pages. <P>
+It is also possible to move around by pages.
 
 <PRE>
 int set_form_page(FORM *form,             /* form to alter */
@@ -2486,12 +2490,12 @@ int form_page(FORM *form);                /* return form's current page */
 </PRE>
 
 The initial page of a newly-created form is 0.  The function
-<CODE>set_form_fields()</CODE> resets this. <P>
+<CODE>set_form_fields()</CODE> resets this.
 
 <H2><A NAME="frmoptions">Form Options</A></H2>
 
 Like fields, forms may have control option bits.  They can be changed
-or queried with these functions: <P>
+or queried with these functions:
 
 <PRE>
 int set_form_opts(FORM *form,             /* form to alter */
@@ -2521,7 +2525,7 @@ these have no last line, so the circumstances for triggering a
 </DL>
 
 The option values are bit-masks and can be composed with logical-or in
-the obvious way. <P>
+the obvious way.
 
 <H2><A NAME="fcustom">Custom Validation Types</A></H2>
 
@@ -2530,12 +2534,12 @@ validation types of your own.  Further, the optional additional arguments
 of <CODE>set_field_type</CODE> effectively allow you to parameterize validation
 types.  Most of the complications in the validation-type interface have to
 do with the handling of the additional arguments within custom validation
-functions. <P>
+functions.
 
 <H3><A NAME="flinktypes">Union Types</A></H3>
 
 The simplest way to create a custom data type is to compose it from two
-preexisting ones:  <P>
+preexisting ones:
 
 <PRE>
 FIELD *link_fieldtype(FIELDTYPE *type1,
@@ -2551,19 +2555,19 @@ composite type expects all arguments for the first type, than all arguments
 for the second.  Order functions (see <A HREF="#forder">Order Requests</A>)
 associated with the component types will work on the composite; what it does
 is check the validation function for the first type, then for the second, to
-figure what type the buffer contents should be treated as. <P>
+figure what type the buffer contents should be treated as.
 
 <H3><A NAME="fnewtypes">New Field Types</A></H3>
 
 To create a field type from scratch, you need to specify one or both of the
-following things: <P>
+following things:
 
 <UL>
 <LI>A character-validation function, to check each character as it is entered.
 <LI>A field-validation function to be applied on exit from the field.
 </UL>
 
-Here's how you do that: <P>
+Here's how you do that:
 <PRE>
 typedef int    (*HOOK)();       /* pointer to function returning int */
 
@@ -2589,7 +2593,7 @@ the operation succeeds; if it returns FALSE, the edit cursor stays in
 the field. <P>
 
 A character validator gets the character passed in as a first argument.
-It too should return TRUE if the character is valid, FALSE otherwise. <P>
+It too should return TRUE if the character is valid, FALSE otherwise.
 
 <H3><A NAME="fcheckargs">Validation Function Arguments</A></H3>
 
@@ -2606,7 +2610,7 @@ with the type.  The forms driver will use these to synthesize a pile
 from the trailing arguments of each <CODE>set_field_type()</CODE> argument, and
 a pointer to the pile will be passed to the validation functions. <P>
 
-Here is how you make the association: <P>
+Here is how you make the association:
 
 <PRE>
 typedef char   *(*PTRHOOK)();    /* pointer to function returning (char *) */
@@ -2618,7 +2622,7 @@ int set_fieldtype_arg(FIELDTYPE *type,    /* type to alter */
                       VOIDHOOK free_str); /* free structure storage */
 </PRE>
 
-Here is how the storage-management hooks are used: <P>
+Here is how the storage-management hooks are used:
 
 <DL>
 <DT> <CODE>make_str</CODE>
@@ -2639,14 +2643,14 @@ storage of that pile.
 The <CODE>make_str</CODE> and <CODE>copy_str</CODE> functions may return NULL to
 signal allocation failure.  The library routines will that call them will
 return error indication when this happens.  Thus, your validation functions
-should never see a NULL file pointer and need not check specially for it. <P>
+should never see a NULL file pointer and need not check specially for it.
 
 <H3><A NAME="fcustorder">Order Functions For Custom Types</A></H3>
 
 Some custom field types are simply ordered in the same well-defined way
 that <CODE>TYPE_ENUM</CODE> is.  For such types, it is possible to define
 successor and predecessor functions to support the <CODE>REQ_NEXT_CHOICE</CODE>
-and <CODE>REQ_PREV_CHOICE</CODE> requests. Here's how: <P>
+and <CODE>REQ_PREV_CHOICE</CODE> requests. Here's how:
 
 <PRE>
 typedef int    (*INTHOOK)();     /* pointer to function returning int */
@@ -2661,7 +2665,7 @@ 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
 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>
+legal next or previous value was set) or FALSE to indicate failure.
 
 <H3><A NAME="fcustprobs">Avoiding Problems</A></H3>
 
similarity index 99%
rename from misc/ncurses-intro.doc
rename to doc/ncurses-intro.doc
index e45ca3530f202e642ed92549e39911dc0db0b153..669b0b391705d61925e9a8e249a7d154b6c52d9d 100644 (file)
@@ -153,7 +153,6 @@ Scope of This Document
    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).
      * Support for line- and box-drawing using forms characters.
@@ -336,14 +335,16 @@ Using the Library
    function names and parameters as mentioned above.
    
    Here is a sample program to motivate the discussion:
-   
 #include <curses.h>
 #include <signal.h>
 
 static void finish(int sig);
 
+int
 main(int argc, char *argv[])
 {
+    int num = 0;
+
     /* initialize your non-curses data structures here */
 
     (void) signal(SIGINT, finish);      /* arrange interrupts to terminate */
@@ -352,28 +353,32 @@ main(int argc, char *argv[])
     keypad(stdscr, TRUE);  /* enable keyboard mapping */
     (void) nonl();         /* tell curses not to do NL->CR/NL on output */
     (void) cbreak();       /* take input chars one at a time, no wait for \n */
-    (void) noecho();       /* don't echo input */
+    (void) echo();         /* echo input - in color */
 
     if (has_colors())
     {
         start_color();
 
         /*
-         * Simple color assignment, often all we need.
+         * Simple color assignment, often all we need.  Color pair 0 cannot
+         * be redefined.  This example uses the same value for the color
+         * pair as for the foreground color, though of course that is not
+         * necessary:
          */
-        init_pair(COLOR_BLACK, COLOR_BLACK, COLOR_BLACK);
-        init_pair(COLOR_GREEN, COLOR_GREEN, COLOR_BLACK);
-        init_pair(COLOR_RED, COLOR_RED, COLOR_BLACK);
-        init_pair(COLOR_CYAN, COLOR_CYAN, COLOR_BLACK);
-        init_pair(COLOR_WHITE, COLOR_WHITE, COLOR_BLACK);
-        init_pair(COLOR_MAGENTA, COLOR_MAGENTA, COLOR_BLACK);
-        init_pair(COLOR_BLUE, COLOR_BLUE, COLOR_BLACK);
-        init_pair(COLOR_YELLOW, COLOR_YELLOW, COLOR_BLACK);
+        init_pair(1, COLOR_RED,     COLOR_BLACK);
+        init_pair(2, COLOR_GREEN,   COLOR_BLACK);
+        init_pair(3, COLOR_YELLOW,  COLOR_BLACK);
+        init_pair(4, COLOR_BLUE,    COLOR_BLACK);
+        init_pair(5, COLOR_CYAN,    COLOR_BLACK);
+        init_pair(6, COLOR_MAGENTA, COLOR_BLACK);
+        init_pair(7, COLOR_WHITE,   COLOR_BLACK);
     }
 
     for (;;)
     {
         int c = getch();     /* refresh, accept single keystroke of input */
+        attrset(COLOR_PAIR(num % 8));
+        num++;
 
         /* process the command keystroke */
     }
@@ -1137,7 +1142,6 @@ Menu Display
 
    The menu library calculates a minimum display size for your window,
    based on the following variables:
-   
      * The number and maximum length of the menu items
      * Whether the O_ROWMAJOR option is enabled
      * Whether display of descriptions is enabled
@@ -1330,7 +1334,6 @@ Overview of Forms
 Creating and Freeing Fields and Forms
 
    The basic function for creating fields is new_field():
-   
 FIELD *new_field(int height, int width,   /* new field size */
                  int top, int left,       /* upper left corner */
                  int offscreen,           /* number of offscreen rows */
@@ -1360,7 +1363,6 @@ FIELD *new_field(int height, int width,   /* new field size */
    position in the field plus a NUL terminator. The sixth argument is the
    number of additional data buffers to allocate for the field; your
    application can use them for its own purposes.
-   
 FIELD *dup_field(FIELD *field,            /* field to copy */
                  int top, int left);      /* location of new copy */
 
@@ -1368,7 +1370,6 @@ FIELD *dup_field(FIELD *field,            /* field to copy */
    location. Size and buffering information are copied; some attribute
    flags and status bits are not (see the form_field_new(3X) for
    details).
-   
 FIELD *link_field(FIELD *field,           /* field to copy */
                   int top, int left);     /* location of new copy */
 
@@ -1390,7 +1391,6 @@ FIELD *link_field(FIELD *field,           /* field to copy */
    out-of-bounds arguments.
    
    To connect fields to a form, use
-   
 FORM *new_form(FIELD **fields);
 
    This function expects to see a NULL-terminated array of field
@@ -1425,7 +1425,6 @@ Fetching and Changing Field Attributes
   Fetching Size and Location Data
   
    You can retrieve field sizes and locations through:
-   
 int field_info(FIELD *field,              /* field from which to fetch */
                int *height, *int width,   /* field size */
                int *top, int *left,       /* upper left corner */
@@ -1439,7 +1438,6 @@ int field_info(FIELD *field,              /* field from which to fetch */
   Changing the Field Location
   
    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 */
 
@@ -1449,7 +1447,6 @@ int move_field(FIELD *field,              /* field to alter */
   
    One-line fields may be unjustified, justified right, justified left,
    or centered. Here is how you manipulate this attribute:
-   
 int set_field_just(FIELD *field,          /* field to alter */
                    int justmode);         /* mode to set */
 
@@ -1469,7 +1466,6 @@ int field_just(FIELD *field);             /* fetch mode of field */
    This group of four field attributes controls the visual appearance of
    the field on the screen, without affecting in any way the data in the
    field buffer.
-   
 int set_field_fore(FIELD *field,          /* field to alter */
                    chtype attr);          /* attribute to set */
 
@@ -1586,7 +1582,6 @@ Field Status
    Every field has a status flag, which is set to FALSE when the field is
    created and TRUE when the value in field buffer 0 changes. This flag
    can be queried and set directly:
-   
 int set_field_status(FIELD *field,      /* field to alter */
                    int status);         /* mode to set */
 
@@ -1641,7 +1636,6 @@ Variable-Sized Fields
    Normally, a dynamic field is allowed to grow without limit. But it is
    possible to set an upper limit on the size of a dynamic field. You do
    it with this function:
-   
 int set_max_field(FIELD *field,     /* field to alter (may not be NULL) */
                    int max_size);   /* upper limit on field size */
 
@@ -1680,7 +1674,6 @@ Field Validation
    and gives you the capability to define custom ones of your own. You
    can examine and change field validation attributes with the following
    functions:
-   
 int set_field_type(FIELD *field,          /* field to alter */
                    FIELDTYPE *ftype,      /* type to associate */
                    ...);                  /* additional arguments*/
@@ -1699,7 +1692,6 @@ FIELDTYPE *field_type(FIELD *field);      /* field to query */
    This field type accepts alphabetic data; no blanks, no digits, no
    special characters (this is checked at character-entry time). It is
    set up with:
-   
 int set_field_type(FIELD *field,          /* field to alter */
                    TYPE_ALPHA,            /* type to associate */
                    int width);            /* maximum width of field */
@@ -1714,7 +1706,6 @@ int set_field_type(FIELD *field,          /* field to alter */
    This field type accepts alphabetic data and digits; no blanks, no
    special characters (this is checked at character-entry time). It is
    set up with:
-   
 int set_field_type(FIELD *field,          /* field to alter */
                    TYPE_ALNUM,            /* type to associate */
                    int width);            /* maximum width of field */
@@ -1729,7 +1720,6 @@ int set_field_type(FIELD *field,          /* field to alter */
    This type allows you to restrict a field's values to be among a
    specified set of string values (for example, the two-letter postal
    codes for U.S. states). It is set up with:
-   
 int set_field_type(FIELD *field,          /* field to alter */
                    TYPE_ENUM,             /* type to associate */
                    char **valuelist;      /* list of possible values */
@@ -1757,7 +1747,6 @@ int set_field_type(FIELD *field,          /* field to alter */
   TYPE_INTEGER
   
    This field type accepts an integer. It is set up as follows:
-   
 int set_field_type(FIELD *field,          /* field to alter */
                    TYPE_INTEGER,          /* type to associate */
                    int padding,           /* # places to zero-pad to */
@@ -1776,7 +1765,6 @@ int set_field_type(FIELD *field,          /* field to alter */
   TYPE_NUMERIC
   
    This field type accepts a decimal number. It is set up as follows:
-   
 int set_field_type(FIELD *field,              /* field to alter */
                    TYPE_NUMERIC,              /* type to associate */
                    int padding,               /* # places of precision */
@@ -1798,7 +1786,6 @@ int set_field_type(FIELD *field,              /* field to alter */
   
    This field type accepts data matching a regular expression. It is set
    up as follows:
-   
 int set_field_type(FIELD *field,          /* field to alter */
                    TYPE_REGEXP,           /* type to associate */
                    char *regexp);         /* expression to match */
@@ -1811,7 +1798,6 @@ Direct Field Buffer Manipulation
    The chief attribute of a field is its buffer contents. When a form has
    been completed, your application usually needs to know the state of
    each field buffer. You can find this out with:
-   
 char *field_buffer(FIELD *field,          /* field to query */
                    int bufindex);         /* number of buffer to query */
 
@@ -1846,7 +1832,6 @@ Attributes of Forms
    
    The principal attribute of a form is its field list. You can query and
    change this list with:
-   
 int set_form_fields(FORM *form,           /* form to alter */
                     FIELD **fields);      /* fields to connect */
 
@@ -1895,7 +1880,6 @@ Control of Form Display
    In order to declare your own frame window for a form, you'll need to
    know the size of the form's bounding rectangle. You can get this
    information with:
-   
 int scale_form(FORM *form,                /* form to query */
                int *rows,                 /* form rows */
                int *cols);                /* form cols */
@@ -1919,7 +1903,6 @@ WINDOW *form_sub(FORM *form);             /* fetch form subwindow of form */
    It is possible to check from your application whether all of a
    scrollable field is actually displayed within the menu subwindow. Use
    these functions:
-   
 int data_ahead(FORM *form);               /* form to be queried */
 
 int data_behind(FORM *form);              /* form to be queried */
@@ -1933,7 +1916,6 @@ int data_behind(FORM *form);              /* form to be queried */
    
    Finally, there is a function to restore the form window's cursor to
    the value expected by the forms driver:
-   
 int pos_form_cursor(FORM *)               /* form to be queried */
 
    If your application changes the form window cursor, call this function
@@ -1945,7 +1927,6 @@ Input Processing in the Forms Driver
    The function form_driver() handles virtualized input requests for form
    navigation, editing, and validation requests, just as menu_driver does
    for menus (see the section on menu input handling).
-   
 int form_driver(FORM *form,               /* form to pass input to */
                 int request);             /* form request code */
 
@@ -2255,7 +2236,6 @@ Field Change Hooks
    It is possible to set function hooks to be executed whenever the
    current field or form changes. Here are the functions that support
    this:
-   
 typedef void    (*HOOK)();       /* pointer to function returning void */
 
 int set_form_init(FORM *form,    /* form to alter */
@@ -2320,7 +2300,6 @@ Field Change Commands
    focus for editing and viewing under control of your application, or
    ask which field it currently is in. The following functions help you
    accomplish this:
-   
 int set_current_field(FORM *form,         /* form to alter */
                       FIELD *field);      /* field to shift to */
 
@@ -2337,7 +2316,6 @@ int field_index(FORM *form,               /* form to query */
    first page. The function set_form_fields() resets this.
    
    It is also possible to move around by pages.
-   
 int set_form_page(FORM *form,             /* form to alter */
                   int page);              /* page to go to (0-origin) */
 
@@ -2350,7 +2328,6 @@ Form Options
 
    Like fields, forms may have control option bits. They can be changed
    or queried with these functions:
-   
 int set_form_opts(FORM *form,             /* form to alter */
                   int attr);              /* attribute to set */
 
@@ -2391,7 +2368,6 @@ Custom Validation Types
   
    The simplest way to create a custom data type is to compose it from
    two preexisting ones:
-   
 FIELD *link_fieldtype(FIELDTYPE *type1,
                       FIELDTYPE *type2);
 
@@ -2409,13 +2385,11 @@ FIELD *link_fieldtype(FIELDTYPE *type1,
   
    To create a field type from scratch, you need to specify one or both
    of the following things:
-   
      * A character-validation function, to check each character as it is
        entered.
      * A field-validation function to be applied on exit from the field.
        
    Here's how you do that:
-   
 typedef int     (*HOOK)();       /* pointer to function returning int */
 
 FIELDTYPE *new_fieldtype(HOOK f_validate, /* field validator */
@@ -2457,7 +2431,6 @@ int free_fieldtype(FIELDTYPE *ftype);     /* type to free */
    and a pointer to the pile will be passed to the validation functions.
    
    Here is how you make the association:
-   
 typedef char    *(*PTRHOOK)();    /* pointer to function returning (char *) */
 typedef void    (*VOIDHOOK)();    /* pointer to function returning void */
 
@@ -2497,7 +2470,6 @@ int set_fieldtype_arg(FIELDTYPE *type,    /* type to alter */
    way that TYPE_ENUM is. For such types, it is possible to define
    successor and predecessor functions to support the REQ_NEXT_CHOICE and
    REQ_PREV_CHOICE requests. Here's how:
-   
 typedef int     (*INTHOOK)();     /* pointer to function returning int */
 
 int set_fieldtype_arg(FIELDTYPE *type,    /* type to alter */
index 798053058a0f86d88739fb8c53574683deb893ad..dd65638af9c8e964759468f251e4d1b46d42ac4f 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.25 1998/04/04 00:49:55 tom Exp $
+# $Id: Makefile.in,v 1.28 2000/05/28 01:40:18 tom Exp $
 ##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc.                          #
+# Copyright (c) 1998-2000 Free Software Foundation, Inc.                     #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -64,6 +64,7 @@ LD            = @LD@
 LN_S           = @LN_S@
 
 CC             = @CC@
+CPP            = @CPP@
 CFLAGS         = @CFLAGS@
 
 CPPFLAGS       = @CPPFLAGS@ \
@@ -82,7 +83,7 @@ LINK          = $(CC)
 LDFLAGS                = @LDFLAGS@ @LD_MODEL@ @LIBS@
 
 SHLIB_DIRS     = -L../lib -L$(libdir)
-SHLIB_LIST     = $(SHLIB_DIRS) -lncurses @SHLIB_LIST@
+SHLIB_LIST     = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
 
 MK_SHARED_LIB  = @MK_SHARED_LIB@
 
@@ -102,6 +103,7 @@ AUTO_SRC    = \
 
 ################################################################################
 all \
+libs \
 install ::     $(AUTO_SRC) $(LIBRARIES)
 
 sources :      $(AUTO_SRC)
index 9716159b384fe8ba77b5a459ba476770b675f569..701d80f81f1120217a9c92c4b0ca942bbe9c2fd5 100644 (file)
@@ -13,7 +13,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_enum.c,v 1.10 1999/05/16 17:23:14 juergen Exp $")
+MODULE_ID("$Id: fty_enum.c,v 1.11 2000/03/19 01:09:56 Bruno.Haible Exp $")
 
 typedef struct {
   char **kwds;
@@ -225,7 +225,7 @@ static bool Next_Enum(FIELD * field, const void * argp)
     }
   if (cnt<=0)
     kwds = args->kwds;
-  if ((cnt>=0) || (Compare((unsigned char *)dummy,bp,ccase)==EXACT))
+  if ((cnt>=0) || (Compare((const unsigned char *)dummy,bp,ccase)==EXACT))
     {
       set_field_buffer(field,0,*kwds);
       return TRUE;
@@ -261,7 +261,7 @@ static bool Previous_Enum(FIELD * field, const void * argp)
   if (cnt<=0)
     kwds  = &args->kwds[args->count-1];
 
-  if ((cnt>=0) || (Compare((unsigned char *)dummy,bp,ccase)==EXACT))
+  if ((cnt>=0) || (Compare((const unsigned char *)dummy,bp,ccase)==EXACT))
     {
       set_field_buffer(field,0,*kwds);
       return TRUE;
index 7c10212827cbdb668d9dadf0bd14499a6051cbad..8e4435cc2b38e1209a4b126e753f4ee13f682968 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.24 1999/01/17 02:01:44 tom Exp $
+# $Id: Caps,v 1.25 1999/11/27 20:13:55 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 (shift, sets parity bit)
+has_meta_key           km      bool    km      YB-GE   Has a meta key (i.e., sets 8th-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
index 6f66b21a2883b6e92a810ef0c46140426979a0c4..e839cf4ac6a043947e4418ad83f328fe6e8fbc5e 100644 (file)
@@ -1,7 +1,7 @@
 
 BEGIN          {
                    print  "/****************************************************************************"
-                   print  " * Copyright (c) 1998 Free Software Foundation, Inc.                        *"
+                   print  " * Copyright (c) 1998,1999,2000 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            *"
@@ -33,7 +33,7 @@ BEGIN         {
                    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  "/* $Id: MKterm.h.awk.in,v 1.37 2000/03/12 02:40:07 tom Exp $ */"
                    print  ""
                    print  "/*"
                    print  "**  term.h -- Definition of struct term"
@@ -174,6 +174,8 @@ $2 == "%%-STOP-HERE-%%"     {
 
 /^#/           {next;}
 
+$1 == "acs_chars"      {acsindex = StringCount}
+
 $3 == "bool"   {
                    printf "#define %-30s CUR Booleans[%d]\n", $1, BoolCount++
                }
@@ -197,6 +199,9 @@ END         {
                        printf "#define NUMCOUNT  %d\n", NumberCount
                        printf "#define STRCOUNT  %d\n", StringCount
                        print  ""
+                       print  "/* used by code for comparing entries */"
+                       print  "#define acs_chars_index ", acsindex
+                       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 */"
index 724be6d5a744652e317d9836c5dc571a9896a98b..29c0d7cc452114d4f7283c57b87ca311842050e5 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.22 1998/02/11 12:13:46 tom Exp $
+# $Id: Makefile.in,v 1.23 2000/05/28 01:33:52 tom Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
@@ -71,6 +71,7 @@ AUTO_SRC = \
 
 ################################################################################
 all \
+libs \
 sources \
 install ::     $(AUTO_SRC)
 
index af1193cc4981c16284563a52e7307312b361b255..071f9e17cdbb427da028f3724274285eea1d8706 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998-2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-/* $Id: capdefaults.c,v 1.8 1998/07/04 22:31:04 tom Exp $ */
+/* $Id: capdefaults.c,v 1.12 2000/01/02 02:34:56 tom Exp $ */
 
-       /*
-        * Compute obsolete capabilities.  The reason this is an include file
-        * is that the two places where it's needed want the macros to
-        * generate offsets to different structures.  See the file Caps for
-        * explanations of these conversions.
-        *
-        * Note: This code is the functional inverse of the first part
-        * of postprocess_entry().
-        */
-       {
-               char *sp;
-               int capval;
+    /*
+     * Compute obsolete capabilities.  The reason this is an include file is
+     * that the two places where it's needed want the macros to generate
+     * offsets to different structures.  See the file Caps for explanations of
+     * these conversions.
+     *
+     * Note:  This code is the functional inverse of the first part of
+     * postprocess_termcap().
+     */
+{
+    char *sp;
+    int capval;
 
 #define EXTRACT_DELAY(str)     (sp = strchr(str, '*'), sp ? atoi(sp+1) : 0)
 
-               /* current (4.4BSD) capabilities marked obsolete */
-               if (VALID_STRING(carriage_return)
-                               && (capval = EXTRACT_DELAY(carriage_return)))
-                       carriage_return_delay = capval;
-               if (VALID_STRING(newline) && (capval = EXTRACT_DELAY(newline)))
-                       new_line_delay = capval;
+    /* current (4.4BSD) capabilities marked obsolete */
+    if (VALID_STRING(carriage_return)
+       && (capval = EXTRACT_DELAY(carriage_return)))
+       carriage_return_delay = capval;
+    if (VALID_STRING(newline) && (capval = EXTRACT_DELAY(newline)))
+       new_line_delay = capval;
 
-               /* current (4.4BSD) capabilities not obsolete */
-               if (!VALID_STRING(termcap_init2) && VALID_STRING(init_3string))
-               {
-                       termcap_init2 = init_3string;
-                       init_3string = (char *)0;
-               }
-               if (VALID_STRING(reset_1string)
-                       && !VALID_STRING(reset_2string)
-                       && VALID_STRING(reset_3string))
-               {
-                       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))
-                       magic_cookie_glitch_ul = magic_cookie_glitch;
-#else
-               magic_cookie_glitch_ul = -1;
-#endif
+    /* current (4.4BSD) capabilities not obsolete */
+    if (!VALID_STRING(termcap_init2) && VALID_STRING(init_3string)) {
+       termcap_init2 = init_3string;
+       init_3string = ABSENT_STRING;
+    }
+    if (!VALID_STRING(termcap_reset)
+     && VALID_STRING(reset_2string)
+     && !VALID_STRING(reset_1string)
+     && !VALID_STRING(reset_3string)) {
+       termcap_reset = reset_2string;
+       reset_2string = ABSENT_STRING;
+    }
+    if (magic_cookie_glitch_ul == ABSENT_NUMERIC
+       && magic_cookie_glitch != ABSENT_NUMERIC
+       && VALID_STRING(enter_underline_mode))
+       magic_cookie_glitch_ul = magic_cookie_glitch;
 
-               /* totally obsolete capabilities */
-               linefeed_is_newline = VALID_STRING(newline)
-                                       && (strcmp("\n", newline) == 0);
-               if (VALID_STRING(cursor_left)
-                               && (capval = EXTRACT_DELAY(cursor_left)))
-                       backspace_delay = capval;
-               if (VALID_STRING(tab) && (capval = EXTRACT_DELAY(tab)))
-                       horizontal_tab_delay = capval;
+    /* totally obsolete capabilities */
+    linefeed_is_newline = VALID_STRING(newline)
+       && (strcmp("\n", newline) == 0);
+    if (VALID_STRING(cursor_left)
+       && (capval = EXTRACT_DELAY(cursor_left)))
+       backspace_delay = capval;
+    if (VALID_STRING(tab) && (capval = EXTRACT_DELAY(tab)))
+       horizontal_tab_delay = capval;
 #undef EXTRACT_DELAY
-       }
+}
index 4f300b0b9aeddfe18487c59d1d39adea887eaf9d..b33995e8b67a9050eee973152ec4a10698398382 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,7 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-/* $Id: curses.h.in,v 1.85 1999/10/23 12:33:54 tom Exp $ */
+/* $Id: curses.h.in,v 1.93 2000/07/08 11:07:26 tom Exp $ */
 
 #ifndef __NCURSES_H
 #define __NCURSES_H
 #undef  NCURSES_CONST
 #define NCURSES_CONST @NCURSES_CONST@
 
+#undef NCURSES_COLOR_T
+#define        NCURSES_COLOR_T short
+
+#undef NCURSES_SIZE_T
+#define        NCURSES_SIZE_T short
+
 typedef unsigned @cf_cv_typeof_chtype@ chtype;
 
 #include <stdio.h>
@@ -245,18 +251,18 @@ cchar_t;
 struct ldat
 {
        chtype  *text;          /* text of the line */
-       short   firstchar;      /* first changed character in the line */
-       short   lastchar;       /* last changed character in the line */
-       short   oldindex;       /* index of the line at last update */
+       NCURSES_SIZE_T firstchar; /* first changed character in the line */
+       NCURSES_SIZE_T lastchar; /* last changed character in the line */
+       NCURSES_SIZE_T oldindex; /* index of the line at last update */
 };
 
 struct _win_st
 {
-       short   _cury, _curx;   /* current cursor position */
+       NCURSES_SIZE_T _cury, _curx; /* current cursor position */
 
        /* window location and size */
-       short   _maxy, _maxx;   /* maximums of x and y, NOT window size */
-       short   _begy, _begx;   /* screen coords of upper-left-hand corner */
+       NCURSES_SIZE_T _maxy, _maxx; /* maximums of x and y, NOT window size */
+       NCURSES_SIZE_T _begy, _begx; /* screen coords of upper-left-hand corner */
 
        short   _flags;         /* window state flags */
 
@@ -279,8 +285,8 @@ struct _win_st
        struct ldat *_line;     /* the actual line data */
 
        /* global screen state */
-       short   _regtop;        /* top line of scrolling region */
-       short   _regbottom;     /* bottom line of scrolling region */
+       NCURSES_SIZE_T _regtop; /* top line of scrolling region */
+       NCURSES_SIZE_T _regbottom; /* bottom line of scrolling region */
 
        /* these are used only if this is a sub-window */
        int     _parx;          /* x coordinate of this window in parent */
@@ -290,12 +296,12 @@ struct _win_st
        /* these are used only if this is a pad */
        struct pdat
        {
-           short _pad_y,      _pad_x;
-           short _pad_top,    _pad_left;
-           short _pad_bottom, _pad_right;
+           NCURSES_SIZE_T _pad_y,      _pad_x;
+           NCURSES_SIZE_T _pad_top,    _pad_left;
+           NCURSES_SIZE_T _pad_bottom, _pad_right;
        } _pad;
 
-       short   _yoffset;       /* real begy is _begy + _yoffset */
+       NCURSES_SIZE_T _yoffset; /* real begy is _begy + _yoffset */
 };
 
 extern WINDOW   *stdscr;
@@ -311,8 +317,14 @@ extern int TABSIZE;
  */
 extern int ESCDELAY;   /* ESC expire time in milliseconds */
 
+extern char ttytype[];         /* needed for backward compatibility */
+
+/*
+ * These functions are extensions - not in XSI Curses.
+ */
 extern char *keybound (int, int);
 extern const char *curses_version (void);
+extern int assume_default_colors (int, int);
 extern int define_key (char *, int);
 extern int keyok (int, bool);
 extern int resizeterm (int, int);
@@ -320,8 +332,6 @@ 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 */
-
 /*
  * GCC (and some other compilers) define '__attribute__'; we're using this
  * macro to alert the compiler to flag inconsistencies in printf/scanf-like
@@ -433,6 +443,7 @@ extern int doupdate(void);                          /* implemented */
 extern WINDOW *dupwin(WINDOW *);                       /* implemented */
 extern int echo(void);                                 /* implemented */
 extern int echochar(const chtype);                     /* generated */
+extern int erase(void);                                        /* generated */
 #ifdef _XOPEN_SOURCE_EXTENDED
 extern int echo_wchar(const cchar_t *);                        /* missing */
 extern int erasewchar(wchar_t*);                       /* missing */
@@ -715,6 +726,8 @@ 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 int touchline(WINDOW *, int, int);              /* generated */
+extern int touchwin(WINDOW *);                         /* generated */
 extern char *tparm(NCURSES_CONST char *, ...);         /* implemented */
 extern int typeahead(int);                             /* implemented */
 extern int ungetch(int);                               /* implemented */
@@ -945,7 +958,7 @@ extern bool mouse_trafo(int*, int*, bool);              /* generated */
 #define winchstr(w, s)         winchnstr(w, s, -1)
 #define winsstr(w, s)          winsnstr(w, s, -1)
 
-#define redrawwin(w)           wredrawln(w, 0, w->_maxy+1)
+#define redrawwin(win)         wredrawln(win, 0, (win)->_maxy+1)
 #define waddstr(win,str)       waddnstr(win,str,-1)
 #define waddchstr(win,str)     waddchnstr(win,str,-1)
 
@@ -1329,6 +1342,7 @@ extern void trace(const unsigned int);
 #define TRACE_BITS     0x0100  /* trace state of TTY control bits */
 #define TRACE_ICALLS   0x0200  /* trace internal/nested calls */
 #define TRACE_CCALLS   0x0400  /* trace per-character calls */
+#define TRACE_DATABASE 0x0800  /* trace read/write of terminfo/termcap data */
 #define TRACE_MAXIMUM  0xffff  /* maximum trace level */
 
 #if defined(TRACE) || defined(NCURSES_TEST)
@@ -1341,6 +1355,14 @@ extern const char *_nc_visbuf(const char *);
 #endif
 
 #ifdef __cplusplus
+
+/* these names conflict with STL */
+#undef box
+#undef clear
+#undef erase
+#undef move
+#undef refresh
+
 }
 #endif
 
index 1e23a97720e03cf454a37d7ce57484331b7e9a68..5ac5a78d3bd6d82476ea6864da73362be47ce029 100644 (file)
@@ -29,7 +29,7 @@
 /****************************************************************************
  *  Author: Thomas E. Dickey <dickey@clark.net> 1996,1997                   *
  ****************************************************************************/
-/* $Id: nc_alloc.h,v 1.7 1999/04/03 23:15:13 tom Exp $ */
+/* $Id: nc_alloc.h,v 1.8 2000/04/08 23:42:57 tom Exp $ */
 
 #ifndef NC_ALLOC_included
 #define NC_ALLOC_included 1
@@ -69,4 +69,15 @@ extern void _nc_leaks_dump_entry(void);
 #define ExitProgram(code) return code
 #endif
 
+/* doalloc.c */
+extern void *_nc_doalloc(void *, size_t);
+#if !HAVE_STRDUP
+#define strdup _nc_strdup
+extern char *_nc_strdup(const char *);
+#endif
+
+#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))
+
 #endif /* NC_ALLOC_included */
index a19b6010af767de1e941587fe4e7b550fd68bfe7..7d9f77b4befc321d73728169f66f8928279b2469 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,6 +31,7 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
+/* $Id: term_entry.h,v 1.29 2000/03/19 02:04:15 tom Exp $ */
 
 /*
  *     term_entry.h -- interface to entry-manipulation code
@@ -46,16 +47,20 @@ extern "C" {
 #include <term.h>
 
 #define MAX_USES       32
+#define MAX_CROSSLINKS 16
 
 typedef struct entry {
        TERMTYPE        tterm;
        int             nuses;
        struct
         {
-           void        *parent;        /* (char *) or (ENTRY *) */
+           char                *name;
+           struct entry        *link;
            long        line;
         }
        uses[MAX_USES];
+       int             ncrosslinks;
+       struct entry    *crosslinks[MAX_CROSSLINKS];
        long            cstart, cend;
        long            startline;
        struct entry    *next;
@@ -130,6 +135,7 @@ 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;
+extern bool _nc_disable_period;
 #endif
 extern int _nc_parse_entry(ENTRY *, int, bool);
 extern int _nc_capcmp(const char *, const char *);
@@ -141,7 +147,7 @@ extern void _nc_write_entry(TERMTYPE *const);
 /* comp_parse.c: entry list handling */
 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 int _nc_resolve_uses(bool);
 extern void _nc_free_entries(ENTRY *);
 extern void (*_nc_check_termtype)(TERMTYPE *);
 
index 0a850540b943d257752804d836fe502460635836..24f12bcc79be1f447777abcdb84081f62034d267 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998-2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -97,8 +97,21 @@ extern "C" {
 /* location of user's personal info directory */
 #define PRIVATE_INFO   "%s/.terminfo"  /* plug getenv("HOME") into %s */
 
+/*
+ * Some traces are designed to be used via tic's verbose option (and similar in
+ * infocmp and toe) rather than the 'trace()' function.  So we use the bits
+ * above the normal trace() parameter as a debug-level.
+ */
+
+#define MAX_DEBUG_LEVEL 15
+#define DEBUG_LEVEL(n) ((n) << 12)     /* see TRACE_MAXIMUM */
+
+#define set_trace_level(n) \
+       _nc_tracing &= DEBUG_LEVEL(MAX_DEBUG_LEVEL), \
+       _nc_tracing |= DEBUG_LEVEL(n)
+
 #ifdef TRACE
-#define DEBUG(n, a)    if (_nc_tracing & (1 << (n - 1))) _tracef a
+#define DEBUG(n, a)    if (_nc_tracing >= DEBUG_LEVEL(n)) _tracef a
 #else
 #define DEBUG(n, a)    /*nothing*/
 #endif
@@ -157,7 +170,7 @@ struct tinfo_fkeys {
        chtype code;
        };
 
-#ifdef BROKEN_LINKER
+#if    BROKEN_LINKER
 
 #define        _nc_tinfo_fkeys _nc_tinfo_fkeysf()
 extern struct tinfo_fkeys *_nc_tinfo_fkeysf(void);
@@ -258,7 +271,7 @@ extern bool _nc_suppress_warnings;
 extern char *_nc_tic_expand(const char *, bool, int);
 
 /* comp_scan.c: decode string from readable form */
-extern char _nc_trans_string(char *);
+extern char _nc_trans_string(char *, char *);
 
 /* captoinfo.c: capability conversion */
 extern char *_nc_captoinfo(const char *, const char *, int const);
index 89fc9b098b8c5ab20ff24069b7233ab411aec440..ebc66913e94018bd82ce82789525e7f67ff340b8 100755 (executable)
@@ -1,15 +1,27 @@
 #! /bin/sh
 #
 # install - install a program, script, or datafile
-# This comes from X11R5.
+# This comes from X11R5 (mit/util/scripts/install.sh).
+#
+# Copyright 1991 by the Massachusetts Institute of Technology
+#
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appear in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation, and that the name of M.I.T. not be used in advertising or
+# publicity pertaining to distribution of the software without specific,
+# written prior permission.  M.I.T. makes no representations about the
+# suitability of this software for any purpose.  It is provided "as is"
+# without express or implied warranty.
 #
 # Calling this script install-sh is preferred over install.sh, to prevent
 # `make' implicit rules from creating a file called install from it
 # when there is no Makefile.
 #
 # This script is compatible with the BSD install script, but was written
-# from scratch.
-#
+# from scratch.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
 
 
 # set DOITPROG to echo to test this script
@@ -29,7 +41,7 @@ stripprog="${STRIPPROG-strip}"
 rmprog="${RMPROG-rm}"
 mkdirprog="${MKDIRPROG-mkdir}"
 
-tranformbasename=""
+transformbasename=""
 transform_arg=""
 instcmd="$mvprog"
 chmodcmd="$chmodprog 0755"
index a6f765a4f00cdbe1747e9e157fae09a0e0a59906..d4e25c51e89f339a43e66baa6484c383c9aca8f9 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #***************************************************************************
-# Copyright (c) 1998 Free Software Foundation, Inc.                        *
+# Copyright (c) 1998-2000 Free Software Foundation, Inc.                   *
 #                                                                          *
 # Permission is hereby granted, free of charge, to any person obtaining a  *
 # copy of this software and associated documentation files (the            *
@@ -27,7 +27,7 @@
 # authorization.                                                           *
 #***************************************************************************
 #
-# $Id: MKterminfo.sh,v 1.5 1998/09/06 00:20:01 tom Exp $
+# $Id: MKterminfo.sh,v 1.6 2000/01/25 11:31:57 tom Exp $
 #
 # MKterminfo.sh -- generate terminfo.5 from Caps tabular data
 #
 # \ 5 to \n because I couldn't get used to inserting linefeeds directly.  There
 # had better be no \ 5s in the table source text.
 #
+# keep the order independent of locale:
+LANGUAGE=C
+LC_ALL=C
+export LANGUAGE
+export LC_ALL
+#
 head=$1
 caps=$2
 tail=$3
index f0607f5662937581ddb904973770a16f05ff306d..a43bc25dee8b0437e9983b42e1f6bf004d7b17c6 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.25 1998/02/11 12:13:49 tom Exp $
+# $Id: Makefile.in,v 1.26 2000/04/01 22:15:22 tom Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
@@ -54,11 +54,13 @@ sources:    terminfo.5
 $(INSTALL_PREFIX)$(mandir) :
        $(srcdir)/../mkinstalldirs $@
 
+EDITARGS = $(INSTALL_PREFIX)$(mandir) $(srcdir) terminfo.5 $(srcdir)/*.[0-9]*
+
 install install.man : terminfo.5 $(INSTALL_PREFIX)$(mandir)
-       sh ./edit_man.sh installing $(INSTALL_PREFIX)$(mandir) terminfo.5 $(srcdir)/*.[0-9]*
+       sh ./edit_man.sh installing $(EDITARGS)
 
 uninstall uninstall.man :
-       -sh ./edit_man.sh removing $(INSTALL_PREFIX)$(mandir) terminfo.5 $(srcdir)/*.[0-9]*
+       -sh ./edit_man.sh removing $(EDITARGS)
 
 # We compose terminfo.5 from the real sources...
 CAPLIST=$(srcdir)/../include/Caps
index 70e278cbf6f3f08fdb80ec959b3b8ca9e7f0f51a..16dbe805537f3b2c8bbb4820dd7470c7b22b2348 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
@@ -27,7 +27,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: captoinfo.1m,v 1.13 1998/12/26 19:57:11 tom Exp $
+.\" $Id: captoinfo.1m,v 1.14 2000/03/19 02:20:28 tom Exp $
 .TH captoinfo 1M ""
 .ds n 5
 .ds d @DATADIR@/terminfo
@@ -173,6 +173,7 @@ capabilities \fBmeml\fR (memory lock) and \fBmemu\fR (memory unlock).
 These will be discarded with a warning message.
 .SH NOTES
 This utility is actually a link to \fItic\fR(1M), running in \fI-I\fR mode.
+You can use other \fItic\fR options such as \fB-f\fR and  \fB-x\fR.
 
 The trace option isn't identical to SVr4's.  Under SVr4, instead of following
 the -v with a trace level n, you repeat it n times.
index 7cdfd7835355b0616af470dbd514a9f58d737188..63e05269d0b7b323895dd413ee07c7825001ef53 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_addch.3x,v 1.16 1999/02/07 03:47:42 tom Exp $
+.\" $Id: curs_addch.3x,v 1.17 2000/07/01 19:53:01 tom Exp $
 .TH curs_addch 3X ""
 .SH NAME
 \fBaddch\fR, \fBwaddch\fR, \fBmvaddch\fR, \fBmvwaddch\fR,
-\fBechochar\fR, \fBwechochar\fR - add a character (with attributes) to a
-\fBcurses\fR window, then advance the cursor
+\fBechochar\fR,
+\fBwechochar\fR - add a character (with attributes) to a \fBcurses\fR window, then advance the cursor
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
index f552a3b0f5e8ae88b88dcec3af5e29bdd0ad0d95..0d9ea29f028050cc86d5e066038464826e6865c0 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_addchstr.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_addchstr.3x,v 1.7 2000/07/01 19:53:33 tom Exp $
 .TH curs_addchstr 3X ""
 .SH NAME
 \fBaddchstr\fR, \fBaddchnstr\fR, \fBwaddchstr\fR,
 \fBwaddchnstr\fR, \fBmvaddchstr\fR, \fBmvaddchnstr\fR, \fBmvwaddchstr\fR,
-\fBmvwaddchnstr\fR - add a string of characters (and attributes) to a
-\fBcurses\fR window
+\fBmvwaddchnstr\fR - add a string of characters (and attributes) to a \fBcurses\fR window
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
index fee3f8145e353199ace2ad058cf0a4687e44c5ce..6b74452d3c8888319407436fa9847e28bb258819 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_addstr.3x,v 1.8 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_addstr.3x,v 1.9 2000/07/01 19:54:05 tom Exp $
 .TH curs_addstr 3X ""
 .SH NAME
-\fBaddstr\fR, \fBaddnstr\fR, \fBwaddstr\fR, \fBwaddnstr\fR,
-\fBmvaddstr\fR, \fBmvaddnstr\fR, \fBmvwaddstr\fR, \fBmvwaddnstr\fR - add a
-string of characters to a \fBcurses\fR window and advance cursor
+\fBaddstr\fR,
+\fBaddnstr\fR,
+\fBwaddstr\fR,
+\fBwaddnstr\fR,
+\fBmvaddstr\fR,
+\fBmvaddnstr\fR,
+\fBmvwaddstr\fR,
+\fBmvwaddnstr\fR - add a string of characters to a \fBcurses\fR window and advance cursor
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
index d6ad62471acf13b59a21f4cb7b89d0fe81e0ecb7..e884fa888bb0f3586d3b4ee984d8ad3a786b71f7 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_attr.3x,v 1.19 1998/12/26 19:25:35 tom Exp $
+.\" $Id: curs_attr.3x,v 1.22 2000/07/08 11:59:58 tom Exp $
 .TH curs_attr 3X ""
 .SH NAME
 \fBattroff\fR, \fBwattroff\fR, \fBattron\fR, \fBwattron\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
+\fBstandend\fR, \fBwstandend\fR, \fBstandout\fR, \fBwstandout\fR,
+\fBattr_get\fR, \fBwattr_get\fR,
+\fBattr_off\fR, \fBwattr_off\fR,
+\fBattr_on\fR, \fBwattr_on\fR,
+\fBattr_set\fR, \fBwattr_set\fR,
+\fBchgat\fR, \fBwchgat\fR,
+\fBmvchgat\fR, \fBmvwchgat\fR,
+\fBPAIR_NUMBER\fR - \fBcurses\fR character and window attribute control routines
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 .br
@@ -75,9 +81,9 @@
 .br
 \fBint wattr_on(WINDOW *win, attr_t attrs, void *opts);\fR
 .br
-\fBint attr_set(attr_t attrs, void *opts);\fR
+\fBint attr_set(attr_t attrs, short pair, void *opts);\fR
 .br
-\fBint wattr_set(WINDOW *win, attr_t attrs, void *opts);\fR
+\fBint wattr_set(WINDOW *win, attr_t attrs, short pair, void *opts);\fR
 .br
 \fBint chgat(int n, attr_t attr, short color,\fR
       \fBconst void *opts)\fR
index a256999765611ad3425118ee3b021b3833d4e4c9..efd4f82763971d1d1e684db380497f9bed96ba18 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_bkgd.3x,v 1.12 1998/03/14 23:43:31 tom Exp $
+.\" $Id: curs_bkgd.3x,v 1.14 2000/07/01 17:39:31 tom Exp $
 .TH curs_bkgd 3X ""
 .SH NAME
-\fBbkgdset\fR, \fBwbkgdset\fR, \fBbkgd\fR,
-\fBwbkgd\fR - \fBcurses\fR window background manipulation routines
+\fBbkgdset\fR, \fBwbkgdset\fR,
+\fBbkgd\fR, \fBwbkgd\fR,
+\fBgetbkgd\fR - \fBcurses\fR window background manipulation routines
 ..
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
index 45200eb15cb885614ad804fadfbf409582991726..2bd9626404cd3cbd58bdf83a7b342b94efa4f7c3 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_border.3x,v 1.11 1999/01/30 23:11:47 tom Exp $
+.\" $Id: curs_border.3x,v 1.14 2000/07/01 19:54:58 tom Exp $
 .TH curs_border 3X ""
 .SH NAME
 \fBborder\fR, \fBwborder\fR, \fBbox\fR,
-\fBhline\fR, \fBwhline\fR, \fBvline\fR, \fBwvline\fR - create
-\fBcurses\fR borders, horizontal and vertical lines
+\fBhline\fR, \fBwhline\fR,
+\fBvline\fR, \fBwvline\fR,
+\fBmvhline\fR, \fBmvwhline\fR,
+\fBmvvline\fR, \fBmvwvline\fR - create \fBcurses\fR borders, horizontal and vertical lines
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 .br
index 03cbba6349e64d9a8c4372308d09a48145c3e85a..9116b773ae310174181ebbc5624787a2387bb786 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_color.3x,v 1.10 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_color.3x,v 1.15 2000/07/08 11:59:51 tom Exp $
 .TH curs_color 3X ""
 .SH NAME
-\fBstart_color\fR, \fBinit_pair\fR,
-\fBinit_color\fR, \fBhas_colors\fR, \fBcan_change_color\fR,
-\fBcolor_content\fR, \fBpair_content\fR - \fBcurses\fR color
-manipulation routines
+\fBstart_color\fR,
+\fBinit_pair\fR,
+\fBinit_color\fR,
+\fBhas_colors\fR,
+\fBcan_change_color\fR,
+\fBcolor_content\fR,
+\fBpair_content\fR,
+\fBCOLOR_PAIR\fR - \fBcurses\fR color manipulation routines
 .SH SYNOPSIS
 \fB# include <curses.h>\fR
 .br
@@ -83,13 +87,27 @@ just turned on.
 
 The \fBinit_pair\fR routine changes the definition of a color-pair.  It takes
 three arguments: the number of the color-pair to be changed, the foreground
-color number, and the background color number.  The value of the first argument
-must be between \fB1\fR and \fBCOLOR_PAIRS-1\fR.  The value of the second and
+color number, and the background color number.
+For portable applications:
+.TP 5
+-
+The value of the first argument
+must be between \fB1\fR and \fBCOLOR_PAIRS-1\fR.
+.TP 5
+-
+The value of the second and
 third arguments must be between 0 and \fBCOLORS\fR (the 0 color pair is wired
-to white on black and cannot be changed).  If the color-pair was previously
+to white on black and cannot be changed).
+.PP
+If the color-pair was previously
 initialized, the screen is refreshed and all occurrences of that color-pair is
 changed to the new definition.
 
+As an extension, ncurses allows you to set color pair 0 via
+the \fBassume_default_colors\fR routine, or to specify the use of
+default colors (color number \fB-1\fR) if you first invoke the
+\fBuse_default_colors\fR routine.
+
 The \fBinit_color\fR routine changes the definition of a color.  It takes four
 arguments: the number of the color to be changed followed by three RGB values
 (for the amounts of red, green, and blue components).  The value of the first
@@ -160,15 +178,18 @@ the background color used when parts of a window are blanked by erasing or
 scrolling operations, see \fBcurs_bkgd\fR(3X).
 
 Several caveats apply on 386 and 486 machines with VGA-compatible graphics:
-
+.TP 5
+-
 COLOR_YELLOW is actually brown.  To get yellow, use COLOR_YELLOW combined with
 the \fBA_BOLD\fR attribute.
-
+.TP 5
+-
 The A_BLINK attribute should in theory cause the background to go bright.  This
 often fails to work, and even some cards for which it mostly works (such as the
 Paradise and compatibles) do the wrong thing when you try to set a bright
 "yellow" background (you get a blinking yellow foreground instead).
-
+.TP 5
+-
 Color RGB values are not settable.
 .SH PORTABILITY
 This implementation satisfies XSI Curses's minimum maximums
@@ -177,6 +198,11 @@ for \fBCOLORS\fR and \fBCOLOR_PAIRS\fR.
 The \fBinit_pair\fP routine accepts negative values of foreground
 and background color to support the \fBuse_default_colors\fP extension,
 but only if that routine has been first invoked.
+.PP
+The assumption that \fBCOLOR_BLACK\fR is the default
+background color for all terminals can be modified using the
+\fBassume_default_colors\fP extension,
+..
 .SH SEE ALSO
 \fBcurses\fR(3X),
 \fBcurs_initscr\fR(3X),
index d63d6020e3a9318b681eb347aa4468043fcf55d2..34bd9ac3e2446896b03e84a031661729cd34ad55 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_delch.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_delch.3x,v 1.7 2000/07/01 19:55:37 tom Exp $
 .TH curs_delch 3X ""
 .SH NAME
-\fBdelch\fR, \fBwdelch\fR, \fBmvdelch\fR, \fBmvwdelch\fR -
-delete character under the cursor in a \fBcurses\fR window
+\fBdelch\fR,
+\fBwdelch\fR,
+\fBmvdelch\fR,
+\fBmvwdelch\fR - delete character under the cursor in a \fBcurses\fR window
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
index 54bf331ba59e95e5ed7c97a1488f3150da555e51..8e48384af2eb53047b8027707f9b05289dbf80b9 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_deleteln.3x,v 1.5 1999/02/07 03:58:20 tom Exp $
+.\" $Id: curs_deleteln.3x,v 1.6 2000/07/01 19:56:12 tom Exp $
 .TH curs_deleteln 3X ""
 .SH NAME
-\fBdeleteln\fR, \fBwdeleteln\fR, \fBinsdelln\fR,
-\fBwinsdelln\fR, \fBinsertln\fR, \fBwinsertln\fR - delete and insert
-lines in a \fBcurses\fR window
+\fBdeleteln\fR,
+\fBwdeleteln\fR,
+\fBinsdelln\fR,
+\fBwinsdelln\fR,
+\fBinsertln\fR,
+\fBwinsertln\fR - delete and insert lines in a \fBcurses\fR window
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
diff --git a/man/curs_extend.3x b/man/curs_extend.3x
new file mode 100644 (file)
index 0000000..16a3f80
--- /dev/null
@@ -0,0 +1,89 @@
+.\"***************************************************************************
+.\" Copyright (c) 1999,2000 Free Software Foundation, Inc.                   *
+.\"                                                                          *
+.\" Permission is hereby granted, free of charge, to any person obtaining a  *
+.\" copy of this software and associated documentation files (the            *
+.\" "Software"), to deal in the Software without restriction, including      *
+.\" without limitation the rights to use, copy, modify, merge, publish,      *
+.\" distribute, distribute with modifications, sublicense, and/or sell       *
+.\" copies of the Software, and to permit persons to whom the Software is    *
+.\" furnished to do so, subject to the following conditions:                 *
+.\"                                                                          *
+.\" The above copyright notice and this permission notice shall be included  *
+.\" in all copies or substantial portions of the Software.                   *
+.\"                                                                          *
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+.\"                                                                          *
+.\" Except as contained in this notice, the name(s) of the above copyright   *
+.\" holders shall not be used in advertising or otherwise to promote the     *
+.\" sale, use or other dealings in this Software without prior written       *
+.\" authorization.                                                           *
+.\"***************************************************************************
+.\"
+.\" Author: Thomas E. Dickey <dickey@clark.net> 1999
+.\"
+.\" $Id: curs_extend.3x,v 1.4 2000/07/01 16:43:11 tom Exp $
+.TH use_default_colors 3X ""
+.SH NAME
+\fBcurs_extend\fR:
+\fBcurses_version\fP,
+\fBuse_extended_names\fP \- miscellaneous curses extensions
+..
+.SH SYNOPSIS
+\fB#include <curses.h>\fP
+
+\fBconst char * curses_version(void);\fP
+.br
+\fBint use_extended_names(bool enable);\fP
+..
+.SH DESCRIPTION
+These functions are extensions to the curses library
+which do not fit easily into other categories.
+.PP
+Use
+.I curses_version()
+to get the version number, including patch level of the library, e.g.,
+.B 5.0.19991023
+.PP
+The
+.I use_extended_names()
+function controls whether the calling application
+is able to use user-defined or nonstandard names
+which may be compiled into the terminfo
+description, i.e., via the terminfo or termcap interfaces.
+Normally these names are available for use, since the essential descision
+is made by using the \fB-x\fP option of \fItic\fP to compile
+extended terminal definitions.
+However you can disable this feature
+to ensure compatiblity with other implementations of curses
+..
+.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_getch\fR(3X),
+\fBcurs_mouse\fR(3X),
+\fBcurs_print\fR(3X),
+\fBdefine_key\fR(3X),
+\fBdft_fgbg\fR(3X),
+\fBkeybound\fR(3X),
+\fBkeyok\fR(3X),
+\fBresizeterm\fR(3X),
+\fBwresize\fR(3X).
+..
+.SH AUTHOR
+Thomas Dickey.
+.\"#
+.\"# The following sets edit modes for GNU EMACS
+.\"# Local Variables:
+.\"# mode:nroff
+.\"# fill-column:79
+.\"# End:
index 0e4424618bcd9cd1504efa911fbf9108fe05606a..b2b20ef4da15db42efc6cd2f86d8d7152bfb7eb7 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_getch.3x,v 1.15 1998/11/29 01:04:26 Rick.Ohnemus Exp $
+.\" $Id: curs_getch.3x,v 1.17 2000/07/01 16:45:36 tom Exp $
 .TH curs_getch 3X ""
 .SH NAME
-\fBgetch\fR, \fBwgetch\fR, \fBmvgetch\fR,
-\fBmvwgetch\fR, \fBungetch\fR - get (or push back) characters from
-\fBcurses\fR terminal keyboard
+\fBgetch\fR,
+\fBwgetch\fR,
+\fBmvgetch\fR,
+\fBmvwgetch\fR,
+\fBungetch\fR,
+\fBhas_key\fR \- get (or push back) characters from \fBcurses\fR terminal keyboard
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
@@ -57,7 +60,7 @@ this is after one character (cbreak mode), or after the first newline (nocbreak
 mode).  In half-delay mode, the program waits until a character is typed or the
 specified timeout has been reached.
 
-If \fBnoecho\fR has been set, then the character will also be echoed into the
+Unless \fBnoecho\fR has been set, then the character will also be echoed into the
 designated window according to the following rules:
 If the character is the current erase character, left arrow, or backspace,
 the cursor is moved one space to the left and that screen position is erased
index b3678e0a2b5af719809f3a4a70e8a5448217547e..42c22931877c5ec5e59bd4c5dab397f0cf0d5e67 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_getstr.3x,v 1.7 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_getstr.3x,v 1.9 2000/07/01 17:39:31 tom Exp $
 .TH curs_getstr 3X ""
 .SH NAME
-\fBgetstr\fR, \fBwgetstr\fR, \fBmvgetstr\fR,
-\fBmvwgetstr\fR, \fBwgetnstr\fR - accept character strings from
-\fBcurses\fR terminal keyboard
+\fBgetstr\fR,
+\fBgetnstr\fR,
+\fBwgetstr\fR,
+\fBwgetnstr\fR,
+\fBmvgetstr\fR,
+\fBmvgetnstr\fR,
+\fBmvwgetstr\fR,
+\fBmvwgetnstr\fR - accept character strings from \fBcurses\fR terminal keyboard
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
@@ -41,6 +46,8 @@
 .br
 \fBint wgetstr(WINDOW *win, char *str);\fR
 .br
+\fBint wgetnstr(WINDOW *win, char *str, int n);\fR
+.br
 \fBint mvgetstr(int y, int x, char *str);\fR
 .br
 \fBint mvwgetstr(WINDOW *win, int y, int x, char *str);\fR
@@ -49,8 +56,6 @@
 .br
 \fBint mvwgetnstr(WINDOW *, int y, int x, char *str, int n);\fR
 .br
-\fBint wgetnstr(WINDOW *win, char *str, int n);\fR
-.br
 .SH DESCRIPTION
 The function \fBgetstr\fR is equivalent to a series of calls to \fBgetch\fR,
 until a newline or carriage return is received (the terminating character is
index dfe7bf48191a00a005bb9e33479dec93e3014dfb..60f9d566e9fa7803739121c16815f7b51eee1db3 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_inchstr.3x,v 1.7 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_inchstr.3x,v 1.8 2000/07/01 20:16:18 tom Exp $
 .TH curs_inchstr 3X ""
 .SH NAME
-\fBinchstr\fR, \fBinchnstr\fR, \fBwinchstr\fR,
-\fBwinchnstr\fR, \fBmvinchstr\fR, \fBmvinchnstr\fR, \fBmvwinchstr\fR,
-\fBmvwinchnstr\fR - get a string of characters (and attributes) from a
-\fBcurses\fR window
+\fBinchstr\fR,
+\fBinchnstr\fR,
+\fBwinchstr\fR,
+\fBwinchnstr\fR,
+\fBmvinchstr\fR,
+\fBmvinchnstr\fR,
+\fBmvwinchstr\fR,
+\fBmvwinchnstr\fR - get a string of characters (and attributes) from a \fBcurses\fR window
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
index 66aae13cab1d72aff6432d19dc5efef9d041fc99..daa5e1e822de3ef840eaf5653b06108d2cce313d 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_initscr.3x,v 1.8 1999/09/18 23:52:30 tom Exp $
+.\" $Id: curs_initscr.3x,v 1.10 2000/07/08 12:47:39 tom Exp $
 .TH curs_initscr 3X ""
 .SH NAME
-\fBinitscr\fR, \fBnewterm\fR, \fBendwin\fR,
-\fBisendwin\fR, \fBset_term\fR, \fBdelscreen\fR - \fBcurses\fR screen
-initialization and manipulation routines
+\fBinitscr\fR,
+\fBnewterm\fR,
+\fBendwin\fR,
+\fBisendwin\fR,
+\fBset_term\fR,
+\fBdelscreen\fR - \fBcurses\fR screen initialization and manipulation routines
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
@@ -39,7 +42,7 @@ initialization and manipulation routines
 .br
 \fBint endwin(void);\fR
 .br
-\fBint isendwin(void);\fR
+\fBbool isendwin(void);\fR
 .br
 \fBSCREEN *newterm(const char *type, FILE *outfd, FILE *infd);\fR
 .br
index 5c3c3410465eb0ec1dda13ab3ebe1aec40b4b6bb..8546cf530e673898521b193d4982d207a7245879 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_insch.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_insch.3x,v 1.7 2000/07/01 19:57:21 tom Exp $
 .TH curs_insch 3X ""
 .SH NAME
-\fBinsch\fR, \fBwinsch\fR, \fBmvinsch\fR, \fBmvwinsch\fR -
-insert a character before cursor in a \fBcurses\fR window
+\fBinsch\fR,
+\fBwinsch\fR,
+\fBmvinsch\fR,
+\fBmvwinsch\fR - insert a character before cursor in a \fBcurses\fR window
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
index 955ac8df639761e67da4b21b7821a64a46082161..af84cb91380585a85224693fd7bf380634450d56 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_insstr.3x,v 1.10 1998/07/25 20:32:57 Todd.Miller Exp $
+.\" $Id: curs_insstr.3x,v 1.11 2000/07/01 19:57:49 tom Exp $
 .TH curs_insstr 3X ""
 .SH NAME
-\fBinsstr\fR, \fBinsnstr\fR, \fBwinsstr\fR, \fBwinsnstr\fR,
-\fBmvinsstr\fR, \fBmvinsnstr\fR, \fBmvwinsstr\fR, \fBmvwinsnstr\fR - insert
-string before cursor in a \fBcurses\fR window
+\fBinsstr\fR,
+\fBinsnstr\fR,
+\fBwinsstr\fR,
+\fBwinsnstr\fR,
+\fBmvinsstr\fR,
+\fBmvinsnstr\fR,
+\fBmvwinsstr\fR,
+\fBmvwinsnstr\fR - insert string before cursor in a \fBcurses\fR window
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 .br
index d3a7e6f7d085b8ffe9c8a06975a68980cc6efe5a..283ae19a1c4c6aca5f07bcc7007215b9f49516c5 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_instr.3x,v 1.8 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_instr.3x,v 1.9 2000/07/01 20:05:03 tom Exp $
 .TH curs_instr 3X ""
 .SH NAME
-\fBinstr\fR, \fBinnstr\fR, \fBwinstr\fR, \fBwinnstr\fR,
-\fBmvinstr\fR, \fBmvinnstr\fR, \fBmvwinstr\fR, \fBmvwinnstr\fR - get a string
-of characters from a \fBcurses\fR window
+\fBinstr\fR,
+\fBinnstr\fR,
+\fBwinstr\fR,
+\fBwinnstr\fR,
+\fBmvinstr\fR,
+\fBmvinnstr\fR,
+\fBmvwinstr\fR,
+\fBmvwinnstr\fR - get a string of characters from a \fBcurses\fR window
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
index 62a775e7cbed85e0a17857c0a3639a110f287988..ada1a1d10ebc23a31287b9f6e476f1fe4f7f1dd9 100644 (file)
@@ -26,7 +26,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_kernel.3x,v 1.11 1998/06/27 21:56:38 tom Exp $
+.\" $Id: curs_kernel.3x,v 1.12 2000/02/27 01:37:46 tom Exp $
 .TH curs_kernel 3X ""
 .SH NAME
 \fBdef_prog_mode\fR, \fBdef_shell_mode\fR,
@@ -134,6 +134,13 @@ the variables \fIy\fR and \fIx\fR.
 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.
+
+Both ncurses and SVr4 will call \fBcurs_set\fR in \fBendwin\fR
+if \fBcurs_set\fR
+has been called to make the cursor other than normal, i.e., either
+visible or very visible.
+There is no way for ncurses to determine the initial cursor state to
+restore that.
 .SH PORTABILITY
 The functions \fBsetsyx\fR and \fBgetsyx\fR are not described in the XSI
 Curses standard, Issue 4.  All other functions are as described in XSI Curses.
index 45fdd2a38f7954d885365ec692555dcc4c62cdd7..316598a5594c9c8ced7ce5112853f12c387bfaad 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright (c) 1998,1999 Free Software Foundation, Inc.                   *
+.\" Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.'" $Id: curs_mouse.3x,v 1.13 1999/09/11 17:28:28 tom Exp $
+.'" $Id: curs_mouse.3x,v 1.15 2000/07/08 12:50:08 tom Exp $
 .TH curs_mouse 3X ""
 .SH NAME
 \fBgetmouse\fR, \fBungetmouse\fR,
 \fBmousemask\fR, \fBwenclose\fR,
-\fBwmouse_trafo\fR, \fBmouseinterval\fR - mouse interface through curses
+\fBmouse_trafo\fR, \fBwmouse_trafo\fR,
+\fBmouseinterval\fR - mouse interface through curses
 .SH SYNOPSIS
 .nf
 \fB#include <curses.h>\fR
@@ -56,7 +57,11 @@ MEVENT;\fR
 .br
 \fBbool wenclose(WINDOW *win, int y, int x);\fR
 .br
-\fBbool wmouse_trafo(const WINDOW* win, int* pY, int* pX, bool to_screen);\fR
+\fBbool mouse_trafo(int* pY, int* pX, bool to_screen);\fR
+.br
+\fBbool wmouse_trafo(const WINDOW* win, int* pY, int* pX,\fR
+.br
+       \fBbool to_screen);\fR
 .br
 \fBint mouseinterval(int erval);\fR
 .br
index 2946562d4e06cfdd22b093089ade777ac007fe4f..4c5bf1f456a8efd614c4e855404cd16f31ac1eeb 100644 (file)
@@ -26,7 +26,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_outopts.3x,v 1.13 1998/12/26 20:02:04 tom Exp $
+.\" $Id: curs_outopts.3x,v 1.14 2000/02/27 01:41:58 tom Exp $
 .TH curs_outopts 3X ""
 .SH NAME
 \fBclearok\fR, \fBidlok\fR, \fBidcok immedok\fR,
@@ -151,6 +151,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 documentation does this, but the code does not.
+Use \fBcurs_set\fR to make the cursor invisible.
 .SH NOTES
 Note that \fBclearok\fR, \fBleaveok\fR, \fBscrollok\fR, \fBidcok\fR, \fBnl\fR,
 \fBnonl\fR and \fBsetscrreg\fR may be macros.
index b6a026059d44a2ae995a8cb60f33d0403ac299f1..9c0b82c9af211012c4605d7a6cc546577b2f4cfd 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_overlay.3x,v 1.8 1998/12/26 20:08:30 tom Exp $
+.\" $Id: curs_overlay.3x,v 1.9 2000/07/01 20:05:31 tom Exp $
 .TH curs_overlay 3X ""
 .SH NAME
-\fBoverlay\fR, \fBoverwrite\fR, \fBcopywin\fR - overlay and
-manipulate overlapped \fBcurses\fR windows
+\fBoverlay\fR,
+\fBoverwrite\fR,
+\fBcopywin\fR - overlay and manipulate overlapped \fBcurses\fR windows
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
index 35138f120336b1b53cda8c5ff83d576d48252e19..0813a0a48f64120e2dc8129680756e2183e63823 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_pad.3x,v 1.8 1998/12/26 20:09:03 tom Exp $
+.\" $Id: curs_pad.3x,v 1.9 2000/07/04 22:38:13 tom Exp $
 .TH curs_pad 3X ""
 .SH NAME
 \fBnewpad\fR, \fBsubpad\fR, \fBprefresh\fR,
-\fBpnoutrefresh\fR, \fBpechochar\fR - create and display \fBcurses\fR
-pads
+\fBpnoutrefresh\fR, \fBpechochar\fR - create and display \fBcurses\fR pads
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
index 2f0152f3a77b027dd47a5f004904f6b45c1234ba..8ba9d1748649158974d850285d4819d7f6054f92 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_printw.3x,v 1.8 1998/12/26 20:09:36 tom Exp $
+.\" $Id: curs_printw.3x,v 1.11 2000/07/01 20:11:32 tom Exp $
 .TH curs_printw 3X ""
 .SH NAME
-\fBprintw\fR, \fBwprintw\fR, \fBmvprintw\fR,
-\fBmvwprintw\fR, \fBvwprintw\fR - print formatted output in
-\fBcurses\fR windows
+\fBprintw\fR,
+\fBwprintw\fR,
+\fBmvprintw\fR,
+\fBmvwprintw\fR,
+\fBvwprintw\fR, \fBvw_printw\fR - print formatted output in \fBcurses\fR windows
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
@@ -48,6 +50,8 @@
 .br
 \fBint vwprintw(WINDOW *win, char *fmt, varglist);\fR
 .br
+\fBint vw_printw(WINDOW *win, char *fmt, varglist);\fR
+.br
 .SH DESCRIPTION
 The \fBprintw\fR, \fBwprintw\fR, \fBmvprintw\fR and \fBmvwprintw\fR
 routines are analogous to \fBprintf\fR [see \fBprintf\fR(3S)].  In
index 4572b4c9f0eee8f6507436448769b809d0e1200e..9b4cb1df1c985fb32fd7a2cd3142e43a7758c3ab 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_refresh.3x,v 1.7 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_refresh.3x,v 1.8 2000/07/01 20:06:14 tom Exp $
 .TH curs_refresh 3X ""
 .SH NAME
-\fBrefresh\fR, \fBwrefresh\fR, \fBwnoutrefresh\fR,
-\fBdoupdate\fR, \fBredrawwin\fR, \fBwredrawln\fR - refresh
-\fBcurses\fR windows and lines
+\fBrefresh\fR,
+\fBwrefresh\fR,
+\fBwnoutrefresh\fR,
+\fBdoupdate\fR,
+\fBredrawwin\fR,
+\fBwredrawln\fR - refresh \fBcurses\fR windows and lines
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
index f0c64f1fcf2cdd6eb43891b5952caaaaee995c73..c0053315c255d3c3282c3c070949920e2b41f561 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_scanw.3x,v 1.8 1998/12/26 20:10:12 tom Exp $
+.\" $Id: curs_scanw.3x,v 1.10 2000/07/01 20:06:29 tom Exp $
 .TH curs_scanw 3X ""
 .SH NAME
-\fBscanw\fR, \fBwscanw\fR, \fBmvscanw\fR,
-\fBmvwscanw\fR, \fBvwscanw\fR - convert formatted input from a
-\fBcurses\fR widow
+\fBscanw\fR,
+\fBwscanw\fR,
+\fBmvscanw\fR,
+\fBmvwscanw\fR,
+\fBvwscanw\fR, \fBvw_scanw\fR - convert formatted input from a \fBcurses\fR widow
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
@@ -44,6 +46,8 @@
 \fBint mvwscanw(WINDOW *win, int y, int x,\fR
       \fBchar *fmt\fR [\fB, arg]\fR \fB...);\fR
 .br
+\fBint vw_scanw(WINDOW *win, char *fmt, va_list varglist);\fR
+.br
 \fBint vwscanw(WINDOW *win, char *fmt, va_list varglist);\fR
 .SH DESCRIPTION
 The \fBscanw\fR, \fBwscanw\fR and \fBmvscanw\fR routines are analogous to
index 67a224899b2d0d81c383a8a340a7cc06771ea734..581d10d13c43cab4413defab94d941fb0ad864ff 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_scr_dump.3x,v 1.1 1998/03/11 21:12:53 tom Exp $
+.\" $Id: curs_scr_dump.3x,v 1.2 2000/07/01 20:06:53 tom Exp $
 .TH curs_scr_dump 3X ""
 .SH NAME
-\fBscr_dump\fR, \fBscr_restore\fR,
-\fBscr_init\fR, \fBscr_set\fR - read (write) a \fBcurses\fR screen
-from (to) a file
+\fBscr_dump\fR,
+\fBscr_restore\fR,
+\fBscr_init\fR,
+\fBscr_set\fR - read (write) a \fBcurses\fR screen from (to) a file
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
index 5429685fab2e19e8b45679d3fd21c37e105eba61..863b587d0bc751941c8d869c087958a5777932d4 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_scroll.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_scroll.3x,v 1.8 2000/07/01 17:54:23 tom Exp $
 .TH curs_scroll 3X ""
 .SH NAME
-\fBscroll\fR, \fBsrcl\fR, \fBwscrl\fR - scroll a \fBcurses\fR window
+\fBscroll\fR, \fBscrl\fR, \fBwscrl\fR - scroll a \fBcurses\fR window
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
@@ -63,7 +63,8 @@ immediately if the scroll region is the entire screen "is" performed, not
 that this will occur, in order to leave open the possibility of smarter
 optimization of multiple scroll actions on the next update. 
 
-Neither the SVr4 documentation specifies whether the current attribute or
+Neither the SVr4 nor the XSI documentation specify whether the current
+attribute or
 current color-pair of blanks generated by the scroll function is zeroed.
 Under this implementation it is.
 .SH PORTABILITY
index 86209d7964c1be6b8c24954594040460dca01c4f..c52a70556f0184d436fb74579414024400a78f8d 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_slk.3x,v 1.9 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_slk.3x,v 1.10 2000/07/01 17:52:44 tom 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_color\fR -
-\fBcurses\fR soft label routines
+\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_attr_on\fR, \fBslk_attr_set\fR, \fBslk_attr_off\fR,
+\fBslk_attr\fR \fBslk_color\fR - \fBcurses\fR soft label routines
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
 .br
 \fBint slk_attron(const chtype attrs);\fR
 .br
+\fBint slk_attroff(const chtype attrs);\fR
+.br
 \fBint slk_attrset(const chtype attrs);\fR
 .br
-\fBattr_t slk_attr(void);\fR
+\fBint slk_attr_on(attr_t attrs, void* opts);\fR
 .br
-\fBint slk_attroff(const chtype attrs);\fR
+\fBint slk_attr_off(const attr_t attrs, void * opts);\fR
+.br
+\fBint slk_attr_set(const attr_t attrs,\fR
+.br
+       \fBshort color_pair_number, void* opts);\fR
+.br
+\fBattr_t slk_attr(void);\fR
 .br
 \fBint slk_color(short color_pair_number);\fR
 .br
index 2ece5a3587dfd49c3cdc18313f74605cd94184cb..3938bc0f0326ed236cbdb513259216c701358b97 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
@@ -26,7 +26,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_termattrs.3x,v 1.4 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_termattrs.3x,v 1.6 2000/07/08 12:53:34 tom Exp $
 .TH curs_termattrs 3X ""
 .SH NAME
 \fBbaudrate\fR, \fBerasechar\fR, \fBhas_ic\fR,
@@ -39,9 +39,9 @@
 .br
 \fBchar erasechar(void);\fR
 .br
-\fBint has_ic(void);\fR
+\fBbool has_ic(void);\fR
 .br
-\fBint has_il(void);\fR
+\fBbool has_il(void);\fR
 .br
 \fBchar killchar(void);\fR
 .br
index c3a0cf30212412398346dd3798d1c1fb5eb5b9cf..01395bfe1d3deedd6eaad4705fe9f887256c5493 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_termcap.3x,v 1.12 1999/09/05 01:02:07 tom Exp $
+.\" $Id: curs_termcap.3x,v 1.13 2000/07/01 20:10:57 tom Exp $
 .TH curs_termcap 3X ""
 .ds n 5
 .SH NAME
-\fBtgetent\fR, \fBtgetflag\fR, \fBtgetnum\fR,
-\fBtgetstr\fR, \fBtgoto\fR, \fBtputs\fR - direct \fBcurses\fR
-interface to the terminfo capability database
+\fBtgetent\fR,
+\fBtgetflag\fR,
+\fBtgetnum\fR,
+\fBtgetstr\fR,
+\fBtgoto\fR,
+\fBtputs\fR - direct \fBcurses\fR interface to the terminfo capability database
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 .br
index 098a094383050376491d28ee665525e693fb7742..bb5c8ca6cfa3fe746e6e0c2c7d1266017cbfcff1 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1999 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1999,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_terminfo.3x,v 1.12 1999/10/17 01:11:59 tom Exp $
+.\" $Id: curs_terminfo.3x,v 1.13 2000/07/01 20:07:34 tom Exp $
 .TH curs_terminfo 3X ""
 .ds n 5
 .SH NAME
-\fBsetupterm\fR, \fBsetterm\fR,
-\fBset_curterm\fR, \fBdel_curterm\fR, \fBrestartterm\fR, \fBtparm\fR,
-\fBtputs\fR, \fBputp\fR, \fBvidputs\fR, \fBvidattr\fR, \fBmvcur\fR,
-\fBtigetflag\fR, \fBtigetnum\fR, \fBtigetstr\fR - \fBcurses\fR
-interfaces to terminfo database
+\fBsetupterm\fR,
+\fBsetterm\fR,
+\fBset_curterm\fR,
+\fBdel_curterm\fR,
+\fBrestartterm\fR,
+\fBtparm\fR,
+\fBtputs\fR,
+\fBputp\fR,
+\fBvidputs\fR,
+\fBvidattr\fR,
+\fBmvcur\fR,
+\fBtigetflag\fR,
+\fBtigetnum\fR,
+\fBtigetstr\fR - \fBcurses\fR interfaces to terminfo database
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 .br
index e1d130d30368b49c6cf208b890884d49f479dcdc..58ffa9f6042be6f9198e03c32a5b7e90838c9e06 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_touch.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_touch.3x,v 1.8 2000/07/08 11:07:57 tom Exp $
 .TH curs_touch 3X ""
 .SH NAME
-\fBtouchwin\fR, \fBtouchline\fR, \fBuntouchwin\fR,
-\fBwtouchln\fR, \fBis_linetouched\fR, \fBis_wintouched\fR -
-\fBcurses\fR refresh control routines
+\fBtouchwin\fR,
+\fBtouchline\fR,
+\fBuntouchwin\fR,
+\fBwtouchln\fR,
+\fBis_linetouched\fR,
+\fBis_wintouched\fR - \fBcurses\fR refresh control routines
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 .br
@@ -43,9 +46,9 @@
 .br
 \fBint wtouchln(WINDOW *win, int y, int n, int changed);\fR
 .br
-\fBint is_linetouched(WINDOW *win, int line);\fR
+\fBbool is_linetouched(WINDOW *win, int line);\fR
 .br
-\fBint is_wintouched(WINDOW *win);\fR
+\fBbool is_wintouched(WINDOW *win);\fR
 .br
 .SH DESCRIPTION
 The \fBtouchwin\fR and \fBtouchline\fR routines throw away all
diff --git a/man/curs_trace.3x b/man/curs_trace.3x
new file mode 100644 (file)
index 0000000..9f5b13a
--- /dev/null
@@ -0,0 +1,147 @@
+.\"***************************************************************************
+.\" Copyright (c) 2000 Free Software Foundation, Inc.                        *
+.\"                                                                          *
+.\" Permission is hereby granted, free of charge, to any person obtaining a  *
+.\" copy of this software and associated documentation files (the            *
+.\" "Software"), to deal in the Software without restriction, including      *
+.\" without limitation the rights to use, copy, modify, merge, publish,      *
+.\" distribute, distribute with modifications, sublicense, and/or sell       *
+.\" copies of the Software, and to permit persons to whom the Software is    *
+.\" furnished to do so, subject to the following conditions:                 *
+.\"                                                                          *
+.\" The above copyright notice and this permission notice shall be included  *
+.\" in all copies or substantial portions of the Software.                   *
+.\"                                                                          *
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+.\"                                                                          *
+.\" Except as contained in this notice, the name(s) of the above copyright   *
+.\" holders shall not be used in advertising or otherwise to promote the     *
+.\" sale, use or other dealings in this Software without prior written       *
+.\" authorization.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_trace.3x,v 1.2 2000/07/08 12:42:51 tom Exp $
+.TH curs_trace 3X ""
+.SH NAME
+\fB_tracef\fR,
+\fB_tracedump\fR,
+\fB_traceattr\fR,
+\fB_traceattr2\fR,
+\fB_nc_tracebits\fR,
+\fB_tracechar\fR,
+\fB_tracechtype\fR,
+\fB_tracechtype2\fR,
+\fB_tracemouse\fR,
+\fBtrace\fR - \fBcurses\fR debugging routines
+.SH SYNOPSIS
+\fB#include <curses.h>\fR
+.br
+\fBvoid _tracef(const char *format, ...);\fR
+.br
+\fBvoid _tracedump(const char *label, WINDOW *win);\fR
+.br
+\fBchar *_traceattr(attr_t attr);\fR
+.br
+\fBchar *_traceattr2(int buffer, chtype ch);\fR
+.br
+\fBchar *_nc_tracebits(void);\fR
+.br
+\fBchar *_tracechar(const unsigned char ch);\fR
+.br
+\fBchar *_tracechtype(chtype ch);\fR
+.br
+\fBchar *_tracechtype2(int buffer, chtype ch);\fR
+.br
+\fBchar *_tracemouse(const MEVENT *event);\fR
+.br
+\fBvoid trace(const unsigned int param);\fR
+.SH DESCRIPTION
+The \fBtrace\fR routines are used for debugging the ncurses libraries,
+as well as applications which use the ncurses libraries.
+These functions are normally available only with the debugging library
+\fIlibncurses_g.a\fR, but may be compiled into any model (shared, static,
+profile) by defining the symbol \fBTRACE\fR.
+
+The principal parts of this interface are the \fBtrace\fR routine which
+selectively enables different tracing features, and the \fB_tracef\fR
+routine which writes formatted data to the \fItrace\fR file.
+
+Calling \fBtrace\fR with a nonzero parameter opens the file \fBtrace\fR
+in the current directory for output.  The parameter is formed by OR'ing
+values from the list of \fBTRACE_\fP\fIxxx\fR definitions in \fB<curses.h>\fR.
+These include:
+.TP 5
+TRACE_DISABLE
+turn off tracing.
+.TP 5
+TRACE_TIMES
+trace user and system times of updates.
+.TP 5
+TRACE_TPUTS
+trace tputs calls.
+.TP 5
+TRACE_UPDATE
+trace update actions, old & new screens.
+.TP 5
+TRACE_MOVE
+trace cursor movement and scrolling.
+.TP 5
+TRACE_CHARPUT
+trace all character outputs.
+.TP 5
+TRACE_ORDINARY
+trace all update actions.
+The old and new screen contents are written to the trace file
+for each refresh.
+.TP 5
+TRACE_CALLS
+trace all curses calls.
+The parameters for each call are traced, as well as return values.
+.TP 5
+TRACE_VIRTPUT
+trace virtual character puts, i.e., calls to \fBaddch\fR.
+.TP 5
+TRACE_IEVENT
+trace low-level input processing, including timeouts.
+.TP 5
+TRACE_BITS
+trace state of TTY control bits.
+.TP 5
+TRACE_ICALLS
+trace internal/nested calls.
+.TP 5
+TRACE_CCALLS
+trace per-character calls.
+.TP 5
+TRACE_DATABASE
+trace read/write of terminfo/termcap data.
+.TP 5
+TRACE_MAXIMUM
+maximum trace level, enables all of the separate trace features.
+
+Some tracing features are enabled whenever the \fBtrace\fR parameter
+is nonzero.  Some features overlap.
+The specific names are used as a guideline.
+..
+.SH RETURN VALUE
+Routines which return a value are designed to be used as parameters
+to the \fB_tracef\fR routine.
+.SH PORTABILITY
+These functions are not part of the XSI interface.
+Some other curses implementations are known to
+have similar, undocumented features,
+but they are not compatible with ncurses.
+.SH SEE ALSO
+\fBcurses\fR(3X).
+.\"#
+.\"# The following sets edit modes for GNU EMACS
+.\"# Local Variables:
+.\"# mode:nroff
+.\"# fill-column:79
+.\"# End:
index 623514e908ca26399f5b3fcf55be23be2fa13796..4d3ca4ca00c30489462dff43562b37b78a7f5060 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_window.3x,v 1.8 1999/03/20 22:38:46 tom Exp $
+.\" $Id: curs_window.3x,v 1.9 2000/07/01 20:08:37 tom Exp $
 .TH curs_window 3X ""
 .SH NAME
-\fBnewwin\fR, \fBdelwin\fR, \fBmvwin\fR,
-\fBsubwin\fR, \fBderwin\fR, \fBmvderwin\fR, \fBdupwin\fR,
-\fBwsyncup\fR, \fBsyncok\fR, \fBwcursyncup\fR, \fBwsyncdown\fR -
-create \fBcurses\fR windows
+\fBnewwin\fR,
+\fBdelwin\fR,
+\fBmvwin\fR,
+\fBsubwin\fR,
+\fBderwin\fR,
+\fBmvderwin\fR,
+\fBdupwin\fR,
+\fBwsyncup\fR,
+\fBsyncok\fR,
+\fBwcursyncup\fR,
+\fBwsyncdown\fR - create \fBcurses\fR windows
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
index 2461256857b818ed270e39961e743b2c09d68a8b..eedde7c3bbe5028a9c61f4492ae613621d6ae53f 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" Author: Thomas E. Dickey <dickey@clark.net> 1997
+.\" Author: Thomas E. Dickey <dickey@clark.net> 1997,1999
 .\"
-.\" $Id: dft_fgbg.3x,v 1.6 1998/03/14 23:43:15 tom Exp $
+.\" $Id: dft_fgbg.3x,v 1.12 2000/07/04 22:31:56 tom Exp $
 .TH use_default_colors 3X ""
 .SH NAME
-\fBdft_fgbg\fR \- use terminal's default colors
+\fBdft_fgbg\fR:
+\fBuse_default_colors\fR,
+\fBassume_default_colors\fR \- use terminal's default colors
 ..
 .SH SYNOPSIS
 \fB#include <curses.h>\fP
 
 \fBint use_default_colors(void);\fP
+.br
+\fBint assume_default_colors(int fg, int bg);\fP
 ..
 .SH DESCRIPTION
-This is an extension to the curses library.
-It is used with terminals that support ISO 6429 color, or equivalent.
+The
+.I use_default_colors()
+and
+.I assume_default_colors()
+functions are extensions to the curses library.
+They are used with terminals that support ISO 6429 color, or equivalent.
 These terminals allow the application to reset color to an unspecified
 default value (e.g., with SGR 39 or SGR 49).
-Because they are designed to support this, their design usually includes
-features to change the default foreground or background colors so that
-they do not match the assumption in XSI curses of white on black.
 .PP
 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.
+do not take advantage of SGR 39 and SGR 49.
+Some applications are designed to work with the default background,
+using colors only for text.
+For example, there are several implementations of the \fBls\fP program
+which use colors to denote different file types or permissions.
+These "color ls" programs do not necessarily modify the background color,
+typically using only the \fIsetaf\fP terminfo capability to set the
+foreground color.
+Full-screen applications that use default colors can achieve similar
+visual effects.
+.PP
+The first function,
+.I use_default_colors()
+tells the curses library to assign terminal default
+foreground/background colors to color number -1. So init_pair(x,COLOR_RED,-1)
+will initialize pair x as red on default background and init_pair(x,-1,COLOR_BLUE) will
+initialize pair x as default foreground on blue.
+.PP
+The other,
+.I assume_default_colors()
+is a refinement which tells which colors to paint for color pair 0.
+This function recognizes a special color number -1,
+which denotes the default terminal color.
+.PP
+The following are equivalent:
+.RS
+.br
+.I use_default_colors();
+.br
+.I assume_default_colors(-1,-1);
+.RE
+.PP
+These are ncurses extensions.
+For other curses implementations, color
+number -1 does not mean anything, just as for ncurses before a
+successful call of \fIuse_default_colors()\fP or \fIassume_default_colors()\fP.
+.PP
+Other curses implementations do not allow an application to modify color pair 0.
+They assume that the background is COLOR_BLACK,
+but do not ensure that the color pair 0 is painted to match the
+assumption.
+If your application does not use either
+.I use_default_colors()
+or
+.I assume_default_colors()
+ncurses will paint a white foreground (text) with black background
+for color pair 0.
 ..
 .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
+These functions return the integer \fBERR\fP upon failure and \fBOK\fP on success.
+They 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.
index f64c662e6059d259295de70a27e47f423ce765e4..6165dd76479efe925806c1d76f37a06cdcf4d6d1 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
@@ -27,7 +27,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_field_info.3x,v 1.5 1998/11/29 01:06:24 Rick.Ohnemus Exp $
+.\" $Id: form_field_info.3x,v 1.6 2000/04/15 22:21:31 tom Exp $
 .TH form_field_info 3X ""
 .SH NAME
 \fBform_field_info\fR - retrieve field characteristics
@@ -69,6 +69,10 @@ The header file \fB<form.h>\fR automatically includes the header file
 .SH PORTABILITY
 These routines emulate the System V forms library.  They were not supported on
 Version 7 or BSD versions.
+.PP
+A null (zero pointer) is accepted for any of the return values,
+to ignore that value.
+Not all implementations allow this, e.g., Solaris 2.7 does not.
 .SH AUTHORS
 Juergen Pfeifer.  Manual pages and adaptation for new curses by Eric
 S. Raymond.
index 11fa217243fec73261f8172e23d54daa964a02c6..a7449892d1289f530b96226df5450c37914774d1 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: infocmp.1m,v 1.21 1999/06/15 23:12:25 tom Exp $
+.\" $Id: infocmp.1m,v 1.25 2000/06/11 02:08:16 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-dceEGgnpILCuV1\fR] [\fB-v\fR \fIn\fR] [\fB-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR]
+\fBinfocmp\fR [\fB-dceEGgnpqrILCuV1\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]
 .br
@@ -213,16 +213,27 @@ filenames.  The files are searched for pairwise matches between
 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.
+with exactly one match it includes a difference report.  Normally,
+to reduce the volume of the report, use references are
+not resolved before looking for differences, but resolution can be forced
+by also specifying \fB-r\fR.
 .TP
 \fB-G\fR
 Display constant literals in decimal form
 rather than their character equivalents.
+.TP
+\fB-a\fR
+tells \fBinfocmp\fP to retain commented-out capabilities rather than discarding
+them.  Capabilities are commented by prefixing them with a period.
+.TP 5
+\fB-q\fR
+Make the comparison listing shorter by omitting subheadings, and using
+"-" for absent capabilities, "@" for canceled rather than "NULL".
 .TP 5
 \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
+versions of terminfo like those on SVr1, Ultrix, or HP/UX that do not support
+the full set of SVR4/XSI Curses terminfo; and variants such as AIX
 that have their own extensions incompatible with SVr4/XSI.  Available terminfo
 subsets are "SVr1", "Ultrix", "HP", and "AIX"; see \fBterminfo\fR(\*n) for
 details.  You can also choose the subset "BSD" which selects only capabilities
@@ -336,11 +347,13 @@ The
 \fB-G\fR,
 \fB-R\fR,
 \fB-T\fR,
+\fB-a\fR,
 \fB-e\fR,
 \fB-f\fR,
 \fB-g\fR,
-\fB-i\fR, and
-\fB-p\fR
+\fB-i\fR,
+\fB-p\fR, and
+\fB-q\fR
 options are not supported in SVr4 curses.
 
 The \fB-r\fR option's notion of `termcap' capabilities is System V Release 4's.
@@ -355,7 +368,7 @@ The -F option of \fBinfocmp\fR(1M) should be a \fBtoe\fR(1M) mode.
 .SH AUTHOR
 Eric S. Raymond <esr@snark.thyrsus.com>
 and
-Thomas E. Dickey <dickey@clark.net>
+Thomas E. Dickey <dickey@herndon4.his.com>
 .\"#
 .\"# The following sets edit modes for GNU EMACS
 .\"# Local Variables:
diff --git a/man/infotocap.1m b/man/infotocap.1m
new file mode 100644 (file)
index 0000000..867840d
--- /dev/null
@@ -0,0 +1,74 @@
+'\" t
+.\"***************************************************************************
+.\" Copyright (c) 1999,2000 Free Software Foundation, Inc.                   *
+.\"                                                                          *
+.\" Permission is hereby granted, free of charge, to any person obtaining a  *
+.\" copy of this software and associated documentation files (the            *
+.\" "Software"), to deal in the Software without restriction, including      *
+.\" without limitation the rights to use, copy, modify, merge, publish,      *
+.\" distribute, distribute with modifications, sublicense, and/or sell       *
+.\" copies of the Software, and to permit persons to whom the Software is    *
+.\" furnished to do so, subject to the following conditions:                 *
+.\"                                                                          *
+.\" The above copyright notice and this permission notice shall be included  *
+.\" in all copies or substantial portions of the Software.                   *
+.\"                                                                          *
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+.\"                                                                          *
+.\" Except as contained in this notice, the name(s) of the above copyright   *
+.\" holders shall not be used in advertising or otherwise to promote the     *
+.\" sale, use or other dealings in this Software without prior written       *
+.\" authorization.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: infotocap.1m,v 1.2 2000/03/19 02:19:49 tom Exp $
+.TH infotocap 1M ""
+.ds n 5
+.ds d @DATADIR@/terminfo
+.SH NAME
+\fBinfotocap\fR - convert a \fIterminfo\fR description into a \fItermcap\fR description
+.SH SYNOPSIS
+\fBinfotocap\fR [\fB-v\fR\fIn\fR \fIwidth\fR]  [\fB-V\fR] [\fB-1\fR] [\fB-w\fR \fIwidth\fR] \fIfile\fR . . .
+.SH DESCRIPTION
+\fBinfotocap\fR looks in \fIfile\fR for \fBterminfo\fR descriptions.  For each
+one found, an equivalent \fBtermcap\fR description is written to standard
+output.  Terminfo \fBuse\fR capabilities are translated directly to termcap
+\fBtc\fR capabilities.
+.TP 5
+\fB-v\fR
+print out tracing information on standard error as the program runs.
+.TP 5
+\fB-V\fR
+print out the version of the program in use on standard error and exit.
+.TP 5
+\fB-1\fR
+cause the fields to print 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-w\fR
+change the output to \fIwidth\fR characters.
+.SH FILES
+.TP 20
+\*d
+Compiled terminal description database.
+.SH NOTES
+This utility is actually a link to \fItic\fR(1M), running in \fI-C\fR mode.
+You can use other \fItic\fR options such as \fB-f\fR and  \fB-x\fR.
+.SH SEE ALSO
+\fBcurses\fR(3X),
+\fBtic\fR(1M),
+\fBinfocmp\fR(1M),
+\fBterminfo\fR(\*n)
+.\"#
+.\"# The following sets edit modes for GNU EMACS
+.\"# Local Variables:
+.\"# mode:nroff
+.\"# fill-column:79
+.\"# End:
index ba116a0b670e7fadb9ed90504308a1b1da39856f..8fc899811c729ee063ecd2e43c5058a10b526f40 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: man_db.renames,v 0.15 1999/10/02 23:28:13 tom Exp $
+# $Id: man_db.renames,v 0.19 2000/07/08 12:11:31 tom Exp $
 # Manual-page renamings for the man_db program
 #
 captoinfo.1m                   captoinfo.1
@@ -14,6 +14,7 @@ curs_clear.3x                 clear.3ncurses
 curs_color.3x                  color.3ncurses
 curs_delch.3x                  delch.3ncurses
 curs_deleteln.3x               deleteln.3ncurses
+curs_extend.3x                 extensions.3ncurses
 curs_getch.3x                  getch.3ncurses
 curs_getstr.3x                 getstr.3ncurses
 curs_getyx.3x                  getyx.3ncurses
@@ -41,6 +42,7 @@ curs_termattrs.3x             termattrs.3ncurses
 curs_termcap.3x                        termcap.3ncurses
 curs_terminfo.3x               terminfo.3ncurses
 curs_touch.3x                  touch.3ncurses
+curs_trace.3x                  trace.3ncurses
 curs_util.3x                   util.3ncurses
 curs_window.3x                 window.3ncurses
 curses.3x                      ncurses.3ncurses
@@ -70,6 +72,7 @@ form_requestname.3x           requestname.3form
 form_userptr.3x                        userptr.3form
 form_win.3x                    win.3form
 infocmp.1m                     infocmp.1
+infotocap.1m                   infotocap.1
 keybound.3x                    keybound.3ncurses
 keyok.3x                       keyok.3ncurses
 menu.3x                                menu.3menu
@@ -105,6 +108,7 @@ system.3s                   system.3
 term.5                         term.5
 term.7                         term.7
 terminfo.5                     terminfo.5
+terminfo.\\\*n                 terminfo.5
 tic.1m                         tic.1
 toe.1m                         toe.1
 tput.1                         tput.1
diff --git a/man/manlinks.sed b/man/manlinks.sed
new file mode 100644 (file)
index 0000000..9221419
--- /dev/null
@@ -0,0 +1,68 @@
+# $Id: manlinks.sed,v 1.7 2000/07/01 19:50:06 tom Exp $
+##############################################################################
+# Copyright (c) 2000 Free Software Foundation, Inc.                          #
+#                                                                            #
+# Permission is hereby granted, free of charge, to any person obtaining a    #
+# copy of this software and associated documentation files (the "Software"), #
+# to deal in the Software without restriction, including without limitation  #
+# the rights to use, copy, modify, merge, publish, distribute, distribute    #
+# with modifications, sublicense, and/or sell copies of the Software, and to #
+# permit persons to whom the Software is furnished to do so, subject to the  #
+# following conditions:                                                      #
+#                                                                            #
+# The above copyright notice and this permission notice shall be included in #
+# all copies or substantial portions of the Software.                        #
+#                                                                            #
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   #
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL    #
+# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      #
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    #
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER        #
+# DEALINGS IN THE SOFTWARE.                                                  #
+#                                                                            #
+# Except as contained in this notice, the name(s) of the above copyright     #
+# holders shall not be used in advertising or otherwise to promote the sale, #
+# use or other dealings in this Software without prior written               #
+# authorization.                                                             #
+##############################################################################
+# Given a manpage (nroff) as input, writes a list of the names that are
+# listed in the "NAME" section, i.e., the names that we would like to use
+# as aliases for the manpage -T.Dickey
+/^'\\"/d
+/\.\\"/d
+/^\.br/d
+/^\.sp/d
+s/\\f.//g
+s/[:,]/ /g
+s/^[   ][      ]*//
+s/[    ][      ]*$//
+s/[    ][      ]*/ /g
+s/\.SH[        ][      ]*/.SH_(/
+#
+/^\.SH_(NAME/,/^\.SH_(SYNOPSIS/{
+s/\\-.*/ -/
+/ -/{
+       s/ -.*//
+       s/ /\
+/g
+}
+/^-/{
+       d
+}
+s/ /\
+/g
+}
+:syn
+/^\.SH_(SYNOPSIS/,/^\.SH_(DESCRIPTION/{
+       /^#/d
+       /^[^(]*$/d
+       s/^\([^ (]\+ [*]*\)\+//g
+       s/\.SH_(/.SH_/
+       s/(.*//
+       s/\.SH_/.SH_(/
+}
+/^\.SH_(DESCRIPTION/,${
+       d
+}
+/^\./d
index 92f30934f58dfea8bc78f8875221e12adf31914c..5aac8f2e9454ceafc0d841f13e516275674d2af7 100644 (file)
@@ -27,7 +27,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: ncurses.3x,v 1.35 1999/10/23 19:50:07 tom Exp $
+.\" $Id: ncurses.3x,v 1.40 2000/07/08 13:10:31 tom Exp $
 .hy 0
 .TH ncurses 3X ""
 .ds n 5
@@ -198,11 +198,23 @@ l l
 l l .
 \fBcurses\fR Routine Name/Manual Page Name
 =
+COLOR_PAIR/\fBcurs_color\fR(3X)
+PAIR_NUMBER/\fBcurs_attr\fR(3X)
+_nc_tracebits/\fBcurs_trace\fR(3X)*
+_traceattr/\fBcurs_trace\fR(3X)*
+_traceattr2/\fBcurs_trace\fR(3X)*
+_tracechar/\fBcurs_trace\fR(3X)*
+_tracechtype/\fBcurs_trace\fR(3X)*
+_tracechtype2/\fBcurs_trace\fR(3X)*
+_tracedump/\fBcurs_trace\fR(3X)*
+_tracef/\fBcurs_trace\fR(3X)*
+_tracemouse/\fBcurs_trace\fR(3X)*
 addch/\fBcurs_addch\fR(3X)
 addchnstr/\fBcurs_addchstr\fR(3X)
 addchstr/\fBcurs_addchstr\fR(3X)
 addnstr/\fBcurs_addstr\fR(3X)
 addstr/\fBcurs_addstr\fR(3X)
+assume_default_colors/\fBdft_fgbg\fR(3X)*
 attr_get/\fBcurs_attr\fR(3X)
 attr_off/\fBcurs_attr\fR(3X)
 attr_on/\fBcurs_attr\fR(3X)
@@ -227,6 +239,7 @@ color_content/\fBcurs_color\fR(3X)
 color_set/\fBcurs_attr\fR(3X)
 copywin/\fBcurs_overlay\fR(3X)
 curs_set/\fBcurs_kernel\fR(3X)
+curses_version/\fBcurs_extend\fR(3X)*
 def_prog_mode/\fBcurs_kernel\fR(3X)
 def_shell_mode/\fBcurs_kernel\fR(3X)
 define_key/\fBdefine_key\fR(3X)*
@@ -284,6 +297,7 @@ intrflush/\fBcurs_inopts\fR(3X)
 is_linetouched/\fBcurs_touch\fR(3X)
 is_wintouched/\fBcurs_touch\fR(3X)
 isendwin/\fBcurs_initscr\fR(3X)
+keybound/\fBkeybound\fR(3X)*
 keyname/\fBcurs_util\fR(3X)
 keyok/\fBkeyok\fR(3X)*
 keypad/\fBcurs_inopts\fR(3X)
@@ -292,6 +306,7 @@ leaveok/\fBcurs_outopts\fR(3X)
 longname/\fBcurs_termattrs\fR(3X)
 mcprint/\fBcurs_print\fR(3X)*
 meta/\fBcurs_inopts\fR(3X)
+mouse_trafo/\fBcurs_mouse\fR(3X)*
 mouseinterval/\fBcurs_mouse\fR(3X)*
 mousemask/\fBcurs_mouse\fR(3X)*
 move/\fBcurs_move\fR(3X)
@@ -318,6 +333,7 @@ mvinsstr/\fBcurs_insstr\fR(3X)
 mvinstr/\fBcurs_instr\fR(3X)
 mvprintw/\fBcurs_printw\fR(3X)
 mvscanw/\fBcurs_scanw\fR(3X)
+mvvline/\fBcurs_border\fR(3X)
 mvwaddch/\fBcurs_addch\fR(3X)
 mvwaddchnstr/\fBcurs_addchstr\fR(3X)
 mvwaddchstr/\fBcurs_addchstr\fR(3X)
@@ -425,6 +441,7 @@ touchwin/\fBcurs_touch\fR(3X)
 tparm/\fBcurs_terminfo\fR(3X)
 tputs/\fBcurs_termcap\fR(3X)
 tputs/\fBcurs_terminfo\fR(3X)
+trace/\fBcurs_trace\fR(3X)*
 typeahead/\fBcurs_inopts\fR(3X)
 unctrl/\fBcurs_util\fR(3X)
 ungetch/\fBcurs_getch\fR(3X)
@@ -432,6 +449,7 @@ ungetmouse/\fBcurs_mouse\fR(3X)*
 untouchwin/\fBcurs_touch\fR(3X)
 use_default_colors/\fBdft_fgbg\fR(3X)*
 use_env/\fBcurs_util\fR(3X)
+use_extended_names/\fBcurs_extend\fR(3X)*
 vidattr/\fBcurs_terminfo\fR(3X)
 vidputs/\fBcurs_terminfo\fR(3X)
 vline/\fBcurs_border\fR(3X)
@@ -479,7 +497,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)
+wmouse_trafo/\fBcurs_mouse\fR(3X)*
 wmove/\fBcurs_move\fR(3X)
 wnoutrefresh/\fBcurs_refresh\fR(3X)
 wprintw/\fBcurs_printw\fR(3X)
@@ -549,14 +567,6 @@ 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.
index 7b019db348563da5656a721f96a48af862ab9b22..65a83c990cf2036d038fb0b01e6bf1f8538f352c 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: terminfo.tail,v 1.29 1999/03/07 02:09:07 tom Exp $
+.\" $Id: terminfo.tail,v 1.32 2000/04/15 20:04:58 tom Exp $
 .\" Beginning of terminfo.tail file
 .ps +1
 .PP
@@ -310,7 +310,8 @@ The \fB%\fR encodings have the following meanings:
        \s-1%%  outputs `%'
        %\fI[[\fP:\fI]flags][width[.precision]][\fPdoxXs\fI]\fP
                as in \fBprintf\fP, flags are [-+#] and space
-       %c      print pop() gives %c
+       %c      print pop() like %c in printf()
+       %s      print pop() like %s in printf()
 
        %p[1-9] push \fIi\fP'th parm
        %P[a-z] set dynamic variable [a-z] to pop()
@@ -327,7 +328,7 @@ The \fB%\fR encodings have the following meanings:
        %= %> %<        logical operations: push(pop() op pop())
        %A, %O  logical and & or operations (for conditionals)
        %! %~   unary operations push(op pop())
-       %i      add 1 to first two parms (for ANSI terminals)
+       %i      add 1 to first two parameters (for ANSI terminals)
 
        %? expr %t thenpart %e elsepart %;
                if-then-else, %e elsepart is optional.
@@ -1326,16 +1327,20 @@ capabilities of the form \fBx\fR\fIx\fR.
 .PP
 .SS Similar Terminals
 .PP
-If there are two very similar terminals,
-one can be defined as being just like the other with certain exceptions.
-The string capability \fBuse\fR can be given
-with the name of the similar terminal.
-The capabilities given before
+If there are two very similar terminals, one (the variant) can be defined as
+being just like the other (the base) with certain exceptions.  In the
+definition of the variant, the string capability \fBuse\fR can be given with
+the name of the base terminal.  The capabilities given before
 .B use
-override those in the terminal type invoked by
+override those in the base type named by
 .BR use .
+If there are multiple \fBuse\fR capabilities, they are merged in reverse order.
+That is, the rightmost \fBuse\fR reference is processed first, then the one to
+its left, and so forth.  Capabilities given explicitly in the entry override
+those brought in by \fBuse\fR references.
+.PP
 A capability can be canceled by placing \fBxx@\fR to the left of the
-capability definition, where xx is the capability.
+use reference that imports it, where \fIxx\fP is the capability.
 For example, the entry
 .PP
        2621-nl, smkx@, rmkx@, use=2621,
@@ -1425,10 +1430,6 @@ of terminfo (under HP-UX and AIX) which diverged from System V terminfo after
 SVr1, and have added extension capabilities to the string table that (in the
 binary format) collide with System V and XSI Curses extensions.
 .SH EXTENSIONS
-The %x operator in parameterized strings is unique to the ncurses implementation
-of \fBtparm\fR (it is required in order to support an unfortunate choice of
-\fBinitc\fR format on the Linux console).
-.PP
 Some SVr4 \fBcurses\fR implementations, and all previous to SVr4, don't
 interpret the %A and %O operators in parameter strings.
 .PP
index 7f8fe496593f1abe359f29bd87f0efeb1e32ea69..40f790ca0f38b89b8406bfdd180e33e4bcacc3cd 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998,1999 Free Software Foundation, Inc.                   *
+.\" Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
@@ -26,7 +26,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: tic.1m,v 1.25 1999/03/07 02:07:06 tom Exp $
+.\" $Id: tic.1m,v 1.26 2000/03/19 02:18:18 tom Exp $
 .TH tic 1M ""
 .ds n 5
 .ds d @DATADIR@/terminfo
@@ -41,6 +41,7 @@ I\
 N\
 R\
 T\
+a\
 c\
 f\
 r\
@@ -72,8 +73,14 @@ 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-a\fR
+tells \fBtic\fP to retain commented-out capabilities rather than discarding
+them.  Capabilities are commented by prefixing them with a period.
+This sets the \fB-x\fR option, because it treats the commented-out
+entries as user-defined names.
+.TP
 \fB-c\fR
-specifies to only check \fIfile\fR for errors, including syntax problems and
+tells \fBtic\fP 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
 will print warnings about entries which, after use resolution, are more than
 1023 (4096) bytes long.  Due to a fixed buffer length in older termcap
@@ -171,6 +178,9 @@ are written, and the number of entries which are compiled.
 .TP
 \fB-x\fR
 Treat unknown capabilities as user-defined.
+That is, if you supply a capability name which \fBtic\fP does not recognize,
+it will infer its type (boolean, number or string) from the syntax and
+make an extended table entry for that.
 .TP
 \fIfile\fR
 contains one or more \fBterminfo\fR terminal descriptions in source
@@ -251,16 +261,17 @@ 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
-\fB-o\fR,
+\fB-C\fR,
 \fB-G\fR,
 \fB-I\fR,
-\fB-C\fR,
 \fB-N\fR,
 \fB-R\fR,
+\fB-T\fR,
+\fB-a\fR,
 \fB-e\fR,
 \fB-f\fR,
 \fB-g\fR,
-\fB-T\fR,
+\fB-o\fR,
 \fB-r\fR,
 \fB-s\fR and
 \fB-x\fR
index d334dab02ba169f2b7660e35821331fbf72ea426..3d802c07fe69fe63fce201a400cb7dfd8fb25170 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.25 1998/11/10 19:08:30 juergen Exp $
+# $Id: Makefile.in,v 1.28 2000/05/28 01:40:08 tom Exp $
 ##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc.                          #
+# Copyright (c) 1998-2000 Free Software Foundation, Inc.                     #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -64,6 +64,7 @@ LD            = @LD@
 LN_S           = @LN_S@
 
 CC             = @CC@
+CPP            = @CPP@
 CFLAGS         = @CFLAGS@
 
 CPPFLAGS       = @CPPFLAGS@ \
@@ -83,7 +84,7 @@ LINK          = $(CC)
 LDFLAGS                = @LDFLAGS@ @LD_MODEL@ @LIBS@
 
 SHLIB_DIRS     = -L../lib -L$(libdir)
-SHLIB_LIST     = $(SHLIB_DIRS) -lncurses @SHLIB_LIST@
+SHLIB_LIST     = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
 
 MK_SHARED_LIB  = @MK_SHARED_LIB@
 
@@ -105,6 +106,7 @@ AUTO_SRC    = \
 
 ################################################################################
 all \
+libs \
 install ::     $(AUTO_SRC) $(LIBRARIES)
 
 sources :      $(AUTO_SRC)
index 3fbe2b56f7253659881fa64145be27c297dead4e..ea43b5953d993bb2abfacdae7bea05d407fac4d4 100644 (file)
@@ -1,5 +1,5 @@
 LIBRARY form5 INITINSTANCE TERMINSTANCE\r
-DESCRIPTION "NCurses-5-0-990828, module form"\r
+DESCRIPTION "NCurses-5-1-20000704, module form"\r
 CODE LOADONCALL\r
 DATA LOADONCALL NONSHARED MULTIPLE\r
 EXPORTS\r
diff --git a/misc/indent.pro b/misc/indent.pro
new file mode 100644 (file)
index 0000000..7ddfe9b
--- /dev/null
@@ -0,0 +1,35 @@
+/* Use this with indent 2.0 (2.1 is not acceptable, since it has more bugs) */
+/* indent 4 columns */
+-i4
+/* tab stops every 8 columns */
+-ts8
+/* cuddle 'else' */
+-ce
+/* force blank lines after procedure body */
+-bap
+/* do not force newline after comma in declaration */
+-nbc
+/* do not force blank line after declarations */
+-nbad
+/* format braces inline */
+-br
+/* do not line up parentheses */
+-nlp
+/* put the type of a procedure on the line before its name */
+-psl
+/* do not insert a space between procedure name and '(' */
+-npcs
+/* leave preprocessor space */
+-lps
+/* swallow optional blank lines */
+-sob
+/* continuation indent of 0 spaces */
+-ci0 
+/* force space before semicolon on same line */
+-ss
+
+/* for vile */
+-T size_t
+-T LINE
+-T BUFFER
+-T WINDOW
index a84e63d1cdbe9931119611703decc2f72accb864..01f973c286ca354016fac4af1db2f8eb9c6bab70 100644 (file)
@@ -1,5 +1,5 @@
 LIBRARY menu5 INITINSTANCE TERMINSTANCE\r
-DESCRIPTION "NCurses-5-0-990828, module menu"\r
+DESCRIPTION "NCurses-5-1-20000704, module menu"\r
 CODE LOADONCALL\r
 DATA LOADONCALL NONSHARED MULTIPLE\r
 EXPORTS\r
index 13db4bf0cb22606d607447cb2ba89d85727868ac..fa50456f5cd0d6df93927f61b98d4d88289d2a7f 100644 (file)
@@ -1,5 +1,5 @@
 LIBRARY ncurses5 INITINSTANCE TERMINSTANCE\r
-DESCRIPTION "NCurses-5-0-990828, module ncurses"\r
+DESCRIPTION "NCurses-5-1-20000704, module ncurses"\r
 CODE LOADONCALL\r
 DATA LOADONCALL NONSHARED MULTIPLE\r
 EXPORTS\r
@@ -33,8 +33,8 @@ EXPORTS
        "_nc_curr_file_pos"     @817    NONAME\r
        "_nc_curr_line" @815    NONAME\r
        "_nc_curr_token"        @803    NONAME\r
+       "_nc_disable_period"    @23     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
@@ -44,115 +44,109 @@ EXPORTS
        "_nc_find_entry"        @809    NONAME\r
        "_nc_find_type_entry"   @810    NONAME\r
        "_nc_first_name"        @622    NONAME\r
+       "_nc_flush"     @54     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_free_termtype"     @58     NONAME\r
+       "_nc_freeall"   @59     NONAME\r
+       "_nc_freewin"   @60     NONAME\r
+       "_nc_get_hash_table"    @63     NONAME\r
        "_nc_get_table" @808    NONAME\r
        "_nc_get_token" @811    NONAME\r
-       "_nc_get_tty_mode"      @63     NONAME\r
+       "_nc_get_tty_mode"      @65     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_getenv_num"        @67     NONAME\r
+       "_nc_has_mouse" @73     NONAME\r
+       "_nc_hash_map"  @84     NONAME\r
        "_nc_head"      @700    NONAME\r
-       "_nc_home_terminfo"     @84     NONAME\r
+       "_nc_home_terminfo"     @91     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_acs"  @92     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_init_keytry"       @93     NONAME\r
+       "_nc_keep_tic_dir"      @95     NONAME\r
+       "_nc_key_names" @96     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_make_oldhash"      @97     NONAME\r
        "_nc_makenew"   @1025   NONAME\r
-       "_nc_memmove"   @106    NONAME\r
+       "_nc_memmove"   @98     NONAME\r
        "_nc_merge_entry"       @704    NONAME\r
-       "_nc_msec_cost" @116    NONAME\r
+       "_nc_msec_cost" @103    NONAME\r
        "_nc_mvcur_init"        @1014   NONAME\r
-       "_nc_mvcur_resume"      @117    NONAME\r
+       "_nc_mvcur_resume"      @106    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_nulls_sent"        @116    NONAME\r
+       "_nc_oldnums"   @117    NONAME\r
+       "_nc_ospeed"    @118    NONAME\r
        "_nc_outch"     @1026   NONAME\r
        "_nc_outstr"    @1033   NONAME\r
-       "_nc_panelhook" @127    NONAME\r
+       "_nc_panelhook" @119    NONAME\r
        "_nc_panic_mode"        @814    NONAME\r
        "_nc_parse_entry"       @706    NONAME\r
-       "_nc_printf_string"     @129    NONAME\r
+       "_nc_printf_string"     @120    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_read_termcap"      @127    NONAME\r
+       "_nc_remove_key"        @129    NONAME\r
+       "_nc_remove_string"     @130    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_ripoffline"        @132    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_screen_chain"      @137    NONAME\r
+       "_nc_screen_init"       @142    NONAME\r
+       "_nc_screen_resume"     @143    NONAME\r
+       "_nc_screen_wrap"       @144    NONAME\r
+       "_nc_scroll_oldhash"    @145    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_scrolln"   @146    NONAME\r
+       "_nc_set_buffer"        @147    NONAME\r
        "_nc_set_source"        @822    NONAME\r
-       "_nc_set_tty_mode"      @158    NONAME\r
+       "_nc_set_tty_mode"      @148    NONAME\r
        "_nc_set_type"  @824    NONAME\r
-       "_nc_set_writedir"      @159    NONAME\r
+       "_nc_set_writedir"      @152    NONAME\r
        "_nc_setupscreen"       @1031   NONAME\r
-       "_nc_sigaction" @160    NONAME\r
+       "_nc_sigaction" @158    NONAME\r
        "_nc_signal_handler"    @1034   NONAME\r
-       "_nc_slk_format"        @161    NONAME\r
-       "_nc_slk_initialize"    @162    NONAME\r
+       "_nc_slk_format"        @159    NONAME\r
+       "_nc_slk_initialize"    @160    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_tic_dir"   @161    NONAME\r
+       "_nc_tic_expand"        @162    NONAME\r
+       "_nc_tic_written"       @167    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_tinfo_fkeys"       @169    NONAME\r
        "_nc_tracing"   @1010   NONAME\r
-       "_nc_trans_string"      @186    NONAME\r
-       "_nc_user_definable"    @187    NONAME\r
+       "_nc_trans_string"      @170    NONAME\r
+       "_nc_user_definable"    @172    NONAME\r
        "_nc_visbuf"    @1012   NONAME\r
-       "_nc_visbuf2"   @188    NONAME\r
-       "_nc_vsscanf"   @189    NONAME\r
+       "_nc_visbuf2"   @178    NONAME\r
+       "_nc_vsscanf"   @183    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
+       "assume_default_colors" @184    NONAME\r
        "attr_get"      @14     NONAME\r
-       "attr_off"      @193    NONAME\r
-       "attr_on"       @211    NONAME\r
+       "attr_off"      @185    NONAME\r
+       "attr_on"       @186    NONAME\r
        "attr_set"      @17     NONAME\r
        "attroff"       @11     NONAME\r
        "attron"        @12     NONAME\r
@@ -174,14 +168,15 @@ EXPORTS
        "clrtobot"      @33     NONAME\r
        "clrtoeol"      @34     NONAME\r
        "color_content" @35     NONAME\r
-       "color_set"     @234    NONAME\r
+       "color_set"     @187    NONAME\r
        "copywin"       @37     NONAME\r
        "cur_term"      @515    NONAME\r
        "curs_set"      @38     NONAME\r
        "curscr"        @501    NONAME\r
+       "curses_version"        @188    NONAME\r
        "def_prog_mode" @39     NONAME\r
        "def_shell_mode"        @40     NONAME\r
-       "define_key"    @238    NONAME\r
+       "define_key"    @189    NONAME\r
        "del_curterm"   @641    NONAME\r
        "delay_output"  @41     NONAME\r
        "delch" @42     NONAME\r
@@ -194,11 +189,12 @@ EXPORTS
        "echo"  @49     NONAME\r
        "echochar"      @50     NONAME\r
        "endwin"        @52     NONAME\r
+       "erase" @193    NONAME\r
        "erasechar"     @53     NONAME\r
        "filter"        @55     NONAME\r
        "flash" @56     NONAME\r
        "flushinp"      @57     NONAME\r
-       "getbkgd"       @240    NONAME\r
+       "getbkgd"       @211    NONAME\r
        "getch" @61     NONAME\r
        "getmouse"      @356    NONAME\r
        "getnstr"       @62     NONAME\r
@@ -208,7 +204,7 @@ EXPORTS
        "has_colors"    @69     NONAME\r
        "has_ic"        @70     NONAME\r
        "has_il"        @71     NONAME\r
-       "has_key"       @242    NONAME\r
+       "has_key"       @234    NONAME\r
        "hline" @72     NONAME\r
        "idcok" @74     NONAME\r
        "idlok" @75     NONAME\r
@@ -230,16 +226,16 @@ EXPORTS
        "is_linetouched"        @100    NONAME\r
        "is_wintouched" @101    NONAME\r
        "isendwin"      @99     NONAME\r
-       "keybound"      @251    NONAME\r
+       "keybound"      @238    NONAME\r
        "keyname"       @102    NONAME\r
-       "keyok" @263    NONAME\r
+       "keyok" @240    NONAME\r
        "keypad"        @104    NONAME\r
        "killchar"      @105    NONAME\r
        "leaveok"       @107    NONAME\r
        "longname"      @108    NONAME\r
-       "mcprint"       @266    NONAME\r
+       "mcprint"       @242    NONAME\r
        "meta"  @109    NONAME\r
-       "mouse_trafo"   @270    NONAME\r
+       "mouse_trafo"   @251    NONAME\r
        "mouseinterval" @360    NONAME\r
        "mousemask"     @358    NONAME\r
        "move"  @110    NONAME\r
@@ -323,7 +319,7 @@ EXPORTS
        "reset_prog_mode"       @222    NONAME\r
        "reset_shell_mode"      @223    NONAME\r
        "resetty"       @221    NONAME\r
-       "resizeterm"    @272    NONAME\r
+       "resizeterm"    @263    NONAME\r
        "restartterm"   @643    NONAME\r
        "ripoffline"    @224    NONAME\r
        "savetty"       @225    NONAME\r
@@ -339,13 +335,13 @@ EXPORTS
        "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_attr"      @266    NONAME\r
+       "slk_attr_set"  @270    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_color"     @272    NONAME\r
        "slk_init"      @244    NONAME\r
        "slk_label"     @245    NONAME\r
        "slk_noutrefresh"       @246    NONAME\r
@@ -373,24 +369,23 @@ EXPORTS
        "tigetflag"     @260    NONAME\r
        "tigetnum"      @261    NONAME\r
        "tigetstr"      @262    NONAME\r
-       "timeout"       @284    NONAME\r
+       "timeout"       @274    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_default_colors"    @276    NONAME\r
        "use_env"       @268    NONAME\r
-       "use_extended_names"    @286    NONAME\r
+       "use_extended_names"    @278    NONAME\r
        "vidattr"       @269    NONAME\r
        "vidputs"       @271    NONAME\r
        "vline" @273    NONAME\r
-       "vw_printw"     @287    NONAME\r
-       "vw_scanw"      @294    NONAME\r
+       "vw_printw"     @284    NONAME\r
+       "vw_scanw"      @285    NONAME\r
        "vwprintw"      @275    NONAME\r
        "vwscanw"       @277    NONAME\r
        "waddch"        @279    NONAME\r
@@ -401,7 +396,7 @@ EXPORTS
        "wattr_get"     @291    NONAME\r
        "wattr_off"     @293    NONAME\r
        "wattr_on"      @292    NONAME\r
-       "wattr_set"     @297    NONAME\r
+       "wattr_set"     @286    NONAME\r
        "wattroff"      @289    NONAME\r
        "wattron"       @288    NONAME\r
        "wattrset"      @290    NONAME\r
@@ -412,7 +407,7 @@ EXPORTS
        "wclear"        @302    NONAME\r
        "wclrtobot"     @303    NONAME\r
        "wclrtoeol"     @304    NONAME\r
-       "wcolor_set"    @298    NONAME\r
+       "wcolor_set"    @287    NONAME\r
        "wcursyncup"    @305    NONAME\r
        "wdelch"        @306    NONAME\r
        "wdeleteln"     @307    NONAME\r
@@ -433,7 +428,7 @@ EXPORTS
        "winsnstr"      @328    NONAME\r
        "winsstr"       @329    NONAME\r
        "winstr"        @330    NONAME\r
-       "wmouse_trafo"  @300    NONAME\r
+       "wmouse_trafo"  @294    NONAME\r
        "wmove" @338    NONAME\r
        "wnoutrefresh"  @339    NONAME\r
        "wprintw"       @340    NONAME\r
index 3d7dc9cab80c1b69f15b57d491bd44e6d46eaf4b..30ce1d65ac807524bfb87c35dbf2ec1e05a8f9a0 100644 (file)
@@ -1,13 +1,8 @@
 LIBRARY panel5 INITINSTANCE TERMINSTANCE\r
-DESCRIPTION "NCurses-5-0-990828, module panel"\r
+DESCRIPTION "NCurses-5-1-20000704, 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
index a5170773b09c1d63e57d79d19b0680b2b76250ad..cdb6a5ea24bcfad6746c07c236cb8025101c782f 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 ##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc.                          #
+# Copyright (c) 1998,2000 Free Software Foundation, Inc.                     #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -29,7 +29,7 @@
 #
 # Author: Thomas E. Dickey <dickey@clark.net> 1996
 #
-# $Id: run_tic.sh,v 1.10 1998/05/31 00:29:34 mooney Exp $
+# $Id: run_tic.sh,v 1.12 2000/07/01 19:25:13 tom 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.
 #
@@ -118,6 +118,17 @@ if test "x$TABSET" != "x/usr/share/tabset" ; then
        SRC=$TMP
 fi
 
+cat <<EOF
+Running tic to install $TERMINFO ...
+
+       You may see messages regarding unknown capabilities, e.g., AX.
+       These are extended terminal capabilities which can be compiled
+       using
+               tic -x
+       Read the INSTALL document before doing this - it can cause
+       problems for older ncurses applications.
+
+EOF
 if ( $srcdir/shlib tic -s $SRC )
 then
        echo '** built new '$TERMINFO
index ee55062283f749322a209cb21c73cd43a2fb5a24..6817a0d70eafee0f0249bd878aa4a6081a1c61ef 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 ##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc.                          #
+# Copyright (c) 1998,2000 Free Software Foundation, Inc.                     #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -29,7 +29,7 @@
 #
 # Author: Thomas E. Dickey <dickey@clark.net> 1996
 #
-# $Id: shlib,v 1.5 1998/05/31 00:29:38 mooney Exp $
+# $Id: shlib,v 1.6 2000/05/20 23:01:17 tom 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,
@@ -55,6 +55,9 @@
 # Using a conventional link, with -L and -l options on Linux results in a
 # statically linked executable, which we don't want at all.
 #
+# Special cases:
+#
+#      BeOS R4.5 uses $LIBRARY_PATH rather than $LD_LIBRARY_PATH.
 
 #
 # Make sure that we use the PATH that was set in run_tic.sh
@@ -74,6 +77,8 @@ done
 if test -n "$q" ; then
        if test -n "$LD_LIBRARY_PATH"; then
                LD_LIBRARY_PATH="$q:$LD_LIBRARY_PATH"
+       elif test -n "$LIBRARY_PATH" ; then
+               LIBRARY_PATH="$q:$LIBRARY_PATH"
        else
                LD_LIBRARY_PATH="$q"
        fi
index ee3db89d8a1ad31464bf7857e576aa21bde69233..c99b21325af569d6f7c5c7f3c5b279d823935baf 100644 (file)
@@ -1,18 +1,20 @@
 ######## TERMINAL TYPE DESCRIPTIONS SOURCE FILE
 #
 # This version of terminfo.src is distributed with ncurses.
+# Report bugs to
+#      bug-ncurses@gnu.org
 #
 #      Version 10.2.1
-#      $Date: 1999/10/24 00:28:48 $
+#      $Date: 2000/07/01 21:23:58 $
 #      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
+# Please e-mail changes to terminfo@thyrsus.com; the old termcap@berkeley.edu
 # address is no longer valid.  The latest version can always be found at
-# <http://earthspace.net/terminfo>.
+# <http://www.tuxedo.org/terminfo>.
 #
 # PURPOSE OF THIS FILE:
 #
@@ -28,7 +30,7 @@
 # termcap/terminfo versions.
 #
 # Pointers to related resources (including the ncurses distribution) may
-# be found at <http://earthspace.net/terminfo>.
+# be found at <http://www.tuxedo.org/terminfo>.
 #
 # INTERNATIONALIZATION:
 #
 # the inverse sense from the cup string).  The typical CPR value is
 # \E[%i%d;%dR (on VT100/ANSI/ECMA-48-compatible terminals).
 #
-# These capabilities are used by tac(1m), the terminfo action checker soon
-# to be distributed with ncurses.
+# These capabilities are used by tack(1m), the terminfo action checker
+# (distributed with ncurses 5.0).
 #
 # TABSET FILES
 #
 # As the ANSI/ECMA-48 standard and variants take firmer hold, and as
 # character-cell terminals are increasingly replaced by X displays, much of
 # this file is becoming a historical document (this is part of the reason for
-# the new organization, which puts ANSI types, xterm, free-Unix consoles,
+# the new organization, which puts ANSI types, xterm, Unix consoles,
 # and vt100 up front in confidence that this will catch 95% of new hardware).
 #
 # For the terminal types still alive, I'd like to have manufacturer's
 
 ######## ANSI, UNIX CONSOLE, AND SPECIAL TYPES
 #
-# This section describes terminal classes and maker brands that are still
+# This section describes terminal classes and brands that are still
 # quite common.
 #
 
@@ -273,20 +275,71 @@ dumb|80-column dumb tty,
 unknown|unknown terminal type, 
        gn, use=dumb, 
 lpr|printer|line printer, 
-       hc, os, 
+       OTbs, hc, os, 
        cols#132, lines#66, 
        bel=^G, cr=^M, cub1=^H, cud1=^J, ff=^L, ind=^J, 
 glasstty|classic glass tty interpreting ASCII control characters, 
-       am, 
+       OTbs, am, 
        cols#80, 
-       bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, ht=^I, kbs=^H, 
-       kcub1=^H, kcud1=^J, nel=^M^J, 
+       bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, ht=^I, kcub1=^H, 
+       kcud1=^J, nel=^M^J, .kbs=^H, 
+
+vanilla, 
+       OTbs, 
+       bel=^G, cr=^M, cud1=^J, ind=^J, 
 
 #### ANSI.SYS/ISO 6429/ECMA-48 Capabilities
 #
 # See the end-of-file comment for more on these.
 #
 
+# ANSI capabilities are broken up into pieces, so that a terminal
+# implementing some ANSI subset can use many of them.
+ansi+local1, 
+       cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A, 
+ansi+local, 
+       cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC, 
+       cuu=\E[%p1%dA, use=ansi+local1, 
+ansi+tabs, 
+       cbt=\E[Z, ht=^I, hts=\EH, tbc=\E[2g, 
+ansi+inittabs, 
+       it#8, use=ansi+tabs, 
+ansi+erase, 
+       clear=\E[H\E[J, ed=\E[J, el=\E[K, 
+ansi+rca, 
+       hpa=\E[%p1%{1}%+%dG, vpa=\E[%p1%{1}%+%dd, 
+ansi+cup, 
+       cup=\E[%i%p1%d;%p2%dH, home=\E[H, 
+ansi+rep, 
+       rep=%p1%c\E[%p2%{1}%-%db, 
+ansi+idl1, 
+       dl1=\E[M, il1=\E[L, 
+ansi+idl, 
+       dl=\E[%p1%dM, il=\E[%p1%dL, use=ansi+idl1, 
+ansi+idc, 
+       dch1=\E[P, ich=\E[%p1%d@, ich1=\E[@, rmir=\E6, smir=\E6, 
+ansi+arrows, 
+       kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
+       khome=\E[H, 
+ansi+sgr|ansi graphic renditions, 
+       blink=\E[5m, invis=\E[8m, rev=\E[7m, sgr0=\E[0m, 
+ansi+sgrso|ansi standout only, 
+       rmso=\E[m, smso=\E[7m, 
+ansi+sgrul|ansi underline only, 
+       rmul=\E[m, smul=\E[4m, 
+ansi+sgrbold|ansi graphic renditions; assuming terminal has bold; not dim, 
+       bold=\E[1m, 
+       sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m, 
+       use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul, 
+ansi+sgrdim|ansi graphic renditions; assuming terminal has dim; not bold, 
+       dim=\E[2m, 
+       sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p5%t2;%;m, 
+       use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul, 
+ansi+pp|ansi printer port, 
+       mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, 
+ansi+csr|ansi scroll-region plus cursor save & restore, 
+       csr=\E[%i%p1%d;%p2%dr, rc=\E8, sc=\E7, 
+
 # The IBM PC alternate character set.  Plug this into any Intel console entry.
 # We use \E[11m for rmacs rather than \E[12m so the <acsc> string can use the
 # ROM graphics for control characters such as the diamond, up- and down-arrow.
@@ -339,13 +392,13 @@ klone+color|color control for ansi.sys and ISO6429-compatible displays,
 # This is better than klone+color, it doesn't assume white-on-black as the
 # default color pair,  but many `ANSI' terminals don't grok the <op> cap.
 ecma+color|color control for ECMA-48-compatible terminals, 
+       AX, 
        colors#8, ncv#3, pairs#64, 
        op=\E[39;49m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, 
 
 # Attribute control for ECMA-48-compatible terminals
 ecma+sgr|attribute capabilities for true ECMA-48 terminals, 
-       rmso=\E[27m, rmul=\E[24m, 
-       use=klone+sgr, 
+       rmso=\E[27m, rmul=\E[24m, use=klone+sgr, 
 
 # For comparison, here are all the capabilities implied by the Intel
 # Binary Compatibility Standard (level 2) that fit within terminfo.
@@ -368,12 +421,26 @@ ibcs2|Intel Binary Compatibility Standard prescriptions,
 # if you're in doubt about what `ANSI' matches yours, try them in that
 # order and back off from the first that breaks.
 
+# ansi-mr is for ANSI terminals with ONLY relative cursor addressing
+# and more than one page of memory.  It uses local motions instead of
+# direct cursor addressing, and makes almost no assumptions. It does
+# assume auto margins, no padding and/or xon/xoff, and a 24x80 screen.
+ansi-mr|mem rel cup ansi, 
+       am, xon, 
+       cols#80, lines#24, use=vanilla, use=ansi+erase, 
+       use=ansi+local1, 
+
+# ansi-mini is a bare minimum ANSI terminal. This should work on anything, but 
+# beware of screen size problems and memory relative cursor addressing.
 ansi-mini|any ansi terminal with pessimistic assumptions, 
-       am, 
-       cols#80, it#8, lines#24, 
-       clear=\E[H\E[2J$<50>, cub1=\E[D, cud1=\E[B, cuf1=\E[C, 
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H, 
-       ht=^I, 
+       am, xon, 
+       cols#80, lines#24, use=vanilla, use=ansi+cup, 
+       use=ansi+erase, 
+
+# ansi-mtabs adds relative addressing and minimal tab support 
+ansi-mtabs|any ansi terminal with pessimistic assumptions, 
+       it#8, 
+       ht=^I, use=ansi+local1, use=ansi-mini, 
 
 # ANSI X3.64 from emory!mlhhh (Hugh Hansard) via BRL
 #
@@ -401,17 +468,18 @@ ansi-mini|any ansi terminal with pessimistic assumptions,
 #
 # USENET {akgua,msdc,sb1,sb6,gatech}!emory!mlhhh.
 #
+# (Added vt100 <rc>,<sc> to quiet a tic warning --esr)
 ansi77|ansi 3.64 standard 1977 version, 
-       am, mir, 
+       OTbs, am, mir, 
        cols#80, it#8, lines#24, 
        bel=^G, clear=\E[;H\E[2J, cr=^M, csr=\E[%i%p1%d;%p2%dr, 
        cub1=^H, cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
        cuu1=\E[A, dch1=\E[P, dl1=\E[M$<5*/>, ed=\E[J, el=\E[K, 
        home=\E[H, ht=^I, il1=\E[L$<5*/>, ind=\ED, kbs=^H, 
        kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, 
-       kf2=\EOR, kf4=\EOS, khome=\E[H, nel=^M\ED, ri=\EM, 
-       rmir=\E[4l, rmso=\E[m, rmul=\E[m, smir=\E[4h, smso=\E[7m
-       smul=\E[4m, 
+       kf2=\EOR, kf4=\EOS, khome=\E[H, nel=^M\ED, rc=\E8, ri=\EM, 
+       rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, smir=\E[4h
+       smso=\E[7m, smul=\E[4m, 
 
 # Procomm and some other ANSI emulations don't recognize all of the ANSI-
 # standard capabilities.  This entry deletes <cuu>, <cuf>, <cud>, <cub>, and 
@@ -424,7 +492,7 @@ ansi77|ansi 3.64 standard 1977 version,
 # ANSI.SYS influence.
 # From: Eric S. Raymond <esr@snark.thyrsus.com> Oct 30 1995
 pcansi-m|pcansi-mono|ibm-pc terminal programs claiming to be ansi (mono mode), 
-       am, mir, msgr, 
+       OTbs, am, mir, msgr, 
        cols#80, it#8, lines#24, 
        bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=^M, cub1=\E[D, 
        cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 
@@ -469,8 +537,21 @@ ansi-m|ansi-mono|ANSI X3.64-1979 terminal with ANSI.SYS compatible attributes,
 # From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 6 1995
 ansi|ansi/pc-term compatible with color, 
        u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?%[;0123456789]c, 
-       u9=\E[c, 
-       use=ecma+color, use=klone+sgr, use=ansi-m, 
+       u9=\E[c, use=ecma+color, use=klone+sgr, use=ansi-m, 
+
+# ansi-generic is a vanilla ANSI terminal. This is assumed to implement 
+# all the normal ANSI stuff with no extensions. It assumes 
+# insert/delete line/char is there, so it won't work with 
+# vt100 clones. It assumes video attributes for bold, blink, 
+# underline, and reverse, which won't matter much if the terminal 
+# can't do some of those. Padding is assumed to be zero, which 
+# shouldn't hurt since xon/xoff is assumed.
+ansi-generic|generic ansi standard terminal, 
+       am, xon, 
+       cols#80, lines#24, use=vanilla, use=ansi+csr, use=ansi+cup, 
+       use=ansi+rca, use=ansi+erase, use=ansi+tabs, 
+       use=ansi+local, use=ansi+idc, use=ansi+idl, use=ansi+rep, 
+       use=ansi+sgrbold, use=ansi+arrows, 
 
 #### DOS ANSI.SYS variants
 #
@@ -481,15 +562,14 @@ ansi|ansi/pc-term compatible with color,
 # keys F1-F10 (%p1 values outside this range will yield unpredictable results).
 # From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 7 1995
 ansi.sys-old|ANSI.SYS under PC-DOS 2.1, 
-       am, mir, msgr, xon, 
+       OTbs, am, mir, msgr, xon, 
        cols#80, lines#25, 
        clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C, 
        cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[k, home=\E[H, 
        is2=\E[m\E[?7h, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, 
        khome=^^, pfkey=\E[0;%p1%{58}%+%d;%p2"%s", rc=\E[u, 
        rmam=\E[?7l, sc=\E[s, smam=\E[?7h, u6=\E[%i%d;%dR, 
-       u7=\E[6n, 
-       use=klone+color, use=klone+sgr, 
+       u7=\E[6n, use=klone+color, use=klone+sgr, 
 ansi.sys|ANSI.SYS 3.1 and later versions, 
        el=\E[K, use=ansi.sys-old, 
 
@@ -515,7 +595,8 @@ ansi.sysk|ansisysk|PC-DOS 3.1 ANSI.SYS with keypad redefined for vi,
 # Adds ins/del line/character, hence vi reverse scrolls/inserts/deletes nicer.
 nansi.sys|nansisys|PC-DOS Public Domain NANSI.SYS, 
        dch1=\E[1P, dl1=\E[1M, ich1=\E[1@, il1=\E[1L, 
-       is2=U3 PC-DOS Public Domain NANSI.SYS 9-23-86\n, use=ansi.sys, 
+       is2=U3 PC-DOS Public Domain NANSI.SYS 9-23-86\n, 
+       use=ansi.sys, 
 #
 # See ansi.sysk and nansi.sys above.
 nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi, 
@@ -533,26 +614,55 @@ beterm|BeOS Terminal,
        am, eo, mir, msgr, xenl, xon, 
        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, 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, 
+       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, 
+       ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, 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, 
+       rmkx=\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, 
+       sgr0=\E[0;10m, smir=\E[4h, smkx=\E[?4h, smso=\E[7m, 
+       smul=\E[4m, u6=\E[%i%p1%d;%p2%dR, u7=\E[6n, 
+       vpa=\E[%i%p1%dd, 
 
 #### Linux consoles
 #
 
+# This entry is good for the 1.2.13 or later version of the Linux console.
+#
+# ***************************************************************************
+# *                                                                         *
+# *                           WARNING:                                      *
+# * Linuxes come with a default keyboard mapping kcbt=^I.  This entry, in   *
+# * response to user requests, assumes kcbt=\E[Z, the ANSI/ECMA reverse-tab *
+# * character. Here are the keymap replacement lines that will set this up: *
+# *                                                                         *
+#      keycode  15 = Tab             Tab
+#              alt     keycode  15 = Meta_Tab
+#              shift   keycode  15 = F26
+#      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      *
+# * into the kernel tables.                                                 *
+# *                                                                         *
+# ***************************************************************************
+#
+# The 1.3.x kernels add color-change capabilities; if yours doesn't have this
+# and it matters, turn off <ccc>.  The %02x escape used to implement this is
+# not back-portable to SV curses and not supported in ncurses versions before
+# 1.9.9. All linux kernels since 1.2.13 (at least) set the screen size
+# themselves; this entry assumes that capability.
+#
 # This entry is good for the 1.2.13 or later version of the Linux console.
 #
 # ***************************************************************************
@@ -584,7 +694,7 @@ beterm|BeOS Terminal,
 # reported by Frank Heckenbach <frank@g-n-u.de>.
 linux|linux console, 
        am, bce, eo, mir, msgr, xenl, xon, 
-       it#8, ncv#2
+       it#8, ncv#18
        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\E[?1c, clear=\E[H\E[J, 
        cnorm=\E[?25h\E[?0c, cr=^M, csr=\E[%i%p1%d;%p2%dr, 
@@ -600,9 +710,9 @@ linux|linux console,
        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\E]R, sc=\E7, 
+       khome=\E[1~, kich1=\E[2~, kmous=\E[M, 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\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, 
@@ -613,20 +723,17 @@ linux-m|Linux console no color,
 linux-c-nc|linux console 1.3.x hack for ncurses only, 
        ccc, 
        initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x, 
-       oc=\E]R, 
-       use=linux, 
+       oc=\E]R, use=linux, 
 # From: Dennis Henriksen <opus@osrl.dk>, 9 July 1996
 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}%-%'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, 
+       oc=\E]R, use=linux, 
 
 # See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file
 linux-nic|linux with ich/ich1 suppressed for non-curses programs, 
-       ich@, ich1@, 
-       use=linux, 
+       ich@, ich1@, use=linux, 
 
 # This assumes you have used setfont(8) to load one of the Linux koi8-r fonts.
 # acsc entry from Pavel Roskin" <pavel@absolute.spb.su>, 29 Sep 1997.
@@ -637,10 +744,17 @@ linux-koi8|linux with koi8 alternate character set,
 # 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>
+# 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, 
+
+#### Mach
+#
+
+# From: Matthew Vernon <mcv21@pick.sel.cam.ac.uk>
 mach|Mach Console, 
        am, km, 
        cols#80, it#8, lines#25, 
@@ -653,16 +767,25 @@ mach|Mach Console,
        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, 
+       kpp=\E[V, rev=\E[7m, rmso=\E[0m, rmul=\E[24m, sgr0=\E[0m, 
+       smso=\E[7m, smul=\E[4m, 
 mach-bold|Mach Console with bold instead of underline, 
-       rmul=\E[0m, smul=\E[1m, 
-       use=mach, 
+       rmul=\E[0m, smul=\E[1m, use=mach, 
+mach-color|Mach Console with ANSI color, 
+       colors#8, pairs#64, 
+       dim=\E[2m, invis=\E[8m, op=\E[37;40m, rmso=\E[27m, 
+       setab=\E[4%p1%dm, setaf=\E[3%p1%dm, 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, 
+#### OSF Unix
+#
+
+# OSF/1 1.1 Snapshot 2
+pmcons|pmconsole|PMAX console, 
+       am, 
+       cols#128, lines#57, 
+       bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuu1=^K, ht=^I, 
+       ind=^J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
+       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, 
 
 # SCO console and SOS-Syscons console for 386bsd
 # (scoansi: had unknown capabilities
@@ -682,7 +805,7 @@ linux-lat|linux with latin1 or latin2 alternate character set,
 #      F25-F36 are control F1-F12
 #      F37-F48 are shift+control F1-F12
 scoansi|SCO Extended ANSI standard crt, 
-       am, eo, xon, 
+       OTbs, am, eo, xon, 
        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, 
@@ -731,11 +854,10 @@ att6386|at386|386at|AT&T WGS 6386 console,
        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, 
        sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m, 
-       tbc=\E[2g, vpa=\E[%i%p1%dd, 
-       use=klone+color, 
+       tbc=\E[2g, vpa=\E[%i%p1%dd, use=klone+color, 
 # (pc6300plus: removed ":KM=/usr/lib/ua/kmap.s5:"; renamed BO/EE/CI/CV -- esr)
 pc6300plus|AT&T 6300 plus, 
-       am, xon, 
+       OTbs, am, xon, 
        cols#80, lines#24, 
        bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[=C, 
        clear=\E[2J\E[H, cnorm=\E[=1C, cr=^M, cub1=^H, cud1=\E[B, 
@@ -950,8 +1072,7 @@ iris-ansi|iris-ansi-net|IRIS emulating 40 line ANSI terminal (almost VT100),
        tbc=\E[3g, 
 iris-ansi-ap|IRIS ANSI in application-keypad mode, 
        is2=\E[?1l\E=\E[?7h, kent=\EOM, kf10=\E[010q, 
-       kf11=\E[011q, kf12=\E[012q, kf9=\E[009q, 
-       use=iris-ansi, 
+       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
 # (T.Dickey 98/1/24)
@@ -991,16 +1112,17 @@ pcix|PC/IX console,
 # ":kh=\E[Y:".  Added IBM-PC forms characters and highlights, they match
 # what was there before. -- esr)
 ibmpcx|xenix|ibmx|IBM PC xenix console display, 
-       am, msgr, 
+       OTbs, am, msgr, 
        cols#80, lines#25, 
        clear=^L, cub1=^H, cud1=\E[B, cuf1=\E[C, 
        cup=\E[%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, 
        ed=\E[J, el=\E[K, home=\E[H, ich1=\E[@, il1=\E[L, kbs=^H, 
        kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[d, 
        kf1=\E[K, kf2=\E[L, kf3=\E[M, kf4=\E[N, khome=\E[Y, knp=\E[e, 
-       kpp=\E[Z, 
-       use=klone+acs, use=klone+sgr, 
+       kpp=\E[Z, use=klone+acs, use=klone+sgr, 
 
+#### QNX
+#
 
 # QNX 4.0 Console
 # Michael's original version of this entry had <am@>, <smcup=\Ei>,
@@ -1070,8 +1192,7 @@ qnx|qnx4|qnx console,
 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, 
+       rep@, rmcup@, rmso=\E>, setb@, setf@, smcup@, smso=\E<, use=qnx4, 
 
 #### NetBSD consoles
 #
@@ -1180,8 +1301,8 @@ arm100|arm100-am|Arm(RiscPC) ncurses compatible (for 640x480),
        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, 
+       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, 
@@ -1233,6 +1354,30 @@ rcons-color|BSD rasterconsole with ANSI color,
        colors#8, pairs#64, 
        op=\E[m, setab=\E[4%dm, setaf=\E[3%dm, use=rcons, 
 
+# mgterm -- MGL/MGL2, MobileGear Graphic Library
+# for PocketBSD,PocketLinux,NetBSD/{hpcmips,mac68k}
+# -- the setf/setb are probably incorrect, more likely setaf/setab -TD
+# -- compare with cons25w
+mgterm, 
+       OTbs, OTpt, am, bce, bw, eo, km, msgr, npc, 
+       colors#8, cols#80, it#8, lines#18, pairs#64, 
+       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, 
+       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, 
+       dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, dl=\E[%p1%dM, 
+       dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, 
+       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, rc=\E8, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, 
+       rmso=\E[m, rs2=\E[x\E[m\Ec, sc=\E7, setb=\E[4%p1%dm, 
+       setf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd, 
+
 #### FreeBSD console entries
 #
 # From: Andrey Chernov <ache@astral.msk.su> 29 Mar 1996
@@ -1272,7 +1417,7 @@ cons25w|ansiw|ansi80x25-raw|freebsd console (25-line raw mode),
        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, 
+       ri=\E[T, rin=\E[%p1%dT, rmso=\E[m, rs2=\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), 
@@ -1280,7 +1425,8 @@ cons25|ansis|ansi80x25|freebsd console (25-line ansi mode),
        use=cons25w, 
 cons25-m|ansis-mono|ansi80x25-mono|freebsd console (25-line mono ansi mode), 
        colors@, pairs@, 
-       bold@, dim@, op@, rmul=\E[m, setab@, setaf@, smul=\E[4m, use=cons25, 
+       bold@, dim@, op@, rmul=\E[m, setab@, setaf@, smul=\E[4m, 
+       use=cons25, 
 cons30|ansi80x30|freebsd console (30-line ansi mode), 
        lines#30, use=cons25, 
 cons30-m|ansi80x30-mono|freebsd console (30-line mono ansi mode), 
@@ -1317,7 +1463,8 @@ cons25l1|cons25-iso8859|freebsd console w/iso 8859-1 chars,
        use=cons25w, 
 cons25l1-m|cons25-iso-m|freebsd console w/iso 8859-1 chars (mono), 
        colors@, pairs@, 
-       bold@, dim@, op@, rmul=\E[m, setab@, setaf@, smul=\E[4m, use=cons25l1, 
+       bold@, dim@, op@, rmul=\E[m, setab@, setaf@, smul=\E[4m, 
+       use=cons25l1, 
 cons50l1|cons50-iso8859|freebsd console w/iso 8859-1 chars (50 lines), 
        lines#50, use=cons25l1, 
 cons50l1-m|cons50-iso-m|freebsd console w/iso 8859-1 chars (50-line mono), 
@@ -1334,7 +1481,7 @@ cons60l1-m|cons60-iso-m|freebsd console w/iso 8859-1 chars (60-line mono),
 # Some places it's named oldpc3|oldibmpc3.
 # From: Alex R.N. Wetmore <aw2t@andrew.cmu.edu>
 origpc3|origibmpc3|IBM PC 386BSD Console, 
-       am, bw, eo, xon, 
+       OTbs, am, bw, eo, xon, 
        cols#80, lines#25, 
        acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263, 
        bold=\E[7m, clear=\Ec, cub1=^H, cud1=\E[B, cuf1=\E[C, 
@@ -1346,7 +1493,7 @@ origpc3|origibmpc3|IBM PC 386BSD Console,
 
 # description of BSD/386 console emulator in version 1.0 (supplied by BSDI)
 oldpc3|oldibmpc3|old IBM PC BSD/386 Console, 
-       km, 
+       OTbs, km, 
        lines#25, 
        bel=^G, bold=\E[=15F, cr=^M, cud1=^J, dim=\E[=8F, dl1=\E[M, 
        ht=^I, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D, kcud1=\E[B, 
@@ -1361,8 +1508,15 @@ 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-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, 
+
 bsdos-pc-nobold|BSD/OS PC console w/o bold, 
-       am, eo, km, xon, 
+       use=klone+color, use=bsdos-pc-m, 
+
+bsdos-pc-m|bsdos-pc-mono|BSD/OS PC console mono, 
+       OTbs, 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, 
@@ -1372,9 +1526,7 @@ bsdos-pc-nobold|BSD/OS PC console w/o bold,
        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, 
+       use=klone+sgr, 
 
 # Old names for BSD/OS PC console used in releases before 4.1. 
 pc3|BSD/OS on the PC Console, 
@@ -1390,11 +1542,21 @@ bsdos-sparc|Sun SPARC BSD/OS Console,
 bsdos-ppc|PowerPC BSD/OS Console, 
        use=bsdos-pc, 
 
+#### DEC VT52
+# (<acsc>/<rmacs>/<smacs> capabilities aren't in DEC's official entry -- esr)
+vt52|dec vt52, 
+       OTbs, 
+       cols#80, it#8, lines#24, 
+       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
+       bel=^G, clear=\EH\EJ, cr=^M, cub1=\ED, cud1=\EB, cuf1=\EC, 
+       cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, 
+       el=\EK, home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, 
+       kcuf1=\EC, kcuu1=\EA, nel=^M^J, ri=\EI, rmacs=\EG, smacs=\EF, 
+
 #### DEC VT100 and compatibles
 #
-# DEC terminals from the vt100 forward (and the vt52, way obsolete but still
-# the basis of some emulations) are collected here. Older DEC terminals and
-# micro consoles can be found in the `obsolete' section.  More details on
+# DEC terminals from the vt100 forward are collected here. Older DEC terminals
+# and micro consoles can be found in the `obsolete' section.  More details on
 # the relationship between the VT100 and ANSI X3.64/ISO 6429/ECMA-48 may be
 # found near the end of this file.
 #
@@ -1408,15 +1570,6 @@ bsdos-ppc|PowerPC BSD/OS Console,
 # its name to Boundless Technologies; see http://www.boundless.com.
 #
 
-# (<acsc>/<rmacs>/<smacs> capabilities aren't in DEC's official entry -- esr)
-vt52|dec vt52, 
-       cols#80, it#8, lines#24, 
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
-       bel=^G, clear=\EH\EJ, cr=^M, cub1=\ED, cud1=\EB, cuf1=\EC, 
-       cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, 
-       el=\EK, home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, 
-       kcuf1=\EC, kcuu1=\EA, nel=^M^J, ri=\EI, rmacs=\EG, smacs=\EF, 
-
 # NOTE:  Any VT100 emulation, whether in hardware or software, almost
 # certainly includes what DEC called the `Level 1 editing extension' codes;
 # only the very oldest VT100s lacked these and there probably aren't any of
@@ -1444,6 +1597,45 @@ vt52|dec vt52,
 # reset upon login. Also setting the number of columns glitches 
 # the screen annoyingly. You can type "reset" to get them set.
 #
+# The VT100 series terminals have cursor ("arrows") keys which can operate
+# in two different modes: Cursor Mode and Application Mode.  Cursor Mode
+# is the reset state, and is assumed to be the normal state.  Application
+# Mode is the "set" state.  In Cursor Mode, the cursor keys transmit
+# "Esc [ {code}" sequences, conforming to ANSI standards.  In Application
+# Mode, the cursor keys transmit "Esc O <code>" sequences.  Application Mode
+# was provided primarily as an aid to the porting of VT52 applications.  It is
+# assumed that the cursor keys are normally in Cursor Mode, and expected that
+# applications such as vi will always transmit the <smkx> string.  Therefore,
+# the definitions for the cursor keys are made to match what the terminal
+# transmits after the <smkx> string is transmitted.  If the <smkx> string
+# is a null string or is not defined, then cursor keys are assumed to be in
+# "Cursor Mode", and the cursor keys definitions should match that assumption,
+# else the application may fail.  It is also expected that applications will
+# always transmit the <rmkx> string to the terminal before they exit.
+#
+# The VT100 series terminals have an auxiliary keypad, commonly referred to as
+# the "Numeric Keypad", because it is a cluster of numeric and function keys.
+# The Numeric Keypad which can operate in two different modes: Numeric Mode and
+# Application Mode.  Numeric Mode is the reset state, and is assumed to be
+# the normal state.  Application Mode is the "set" state.  In Numeric Mode,
+# the numeric and punctuation keys transmit ASCII 7-bit characters, and the 
+# Enter key transmits the same as the Return key (Note: the Return key
+# can be configured to send either LF (\015) or CR LF).  In Application Mode,
+# all the keypad keys transmit "Esc O {code}" sequences.  The PF1 - PF4 keys
+# always send the same "Esc O {code}" sequences.  It is assumed that the keypad
+# is normally in Numeric Mode.  If an application requires that the keypad be
+# in Application Mode then it is expected that the user, or the application,
+# will set the TERM environment variable to point to a terminfo entry which has
+# defined the <smkx> string to include the codes that switch the keypad into
+# Application Mode, and the terminfo entry will also define function key
+# fields to match the Application Mode control codes.  If the <smkx> string
+# is a null string or is not defined, then the keypad is assumed to be in
+# Numeric Mode.  If the <smkx> string switches the keypad into Application
+# Mode, it is expected that the <rmkx> string will contain the control codes
+# necessary to reset the keypad to "Normal" mode, and it is also expected that
+# applications which transmit the <smkx> string will also always transmit the
+# <rmkx> string to the terminal before they exit.
+#
 # Here's a diagram of the VT100 keypad keys with their bindings.
 # The top line is the name of the key (some DEC keyboards have the keys
 # labelled somewhat differently, like GOLD instead of PF1, but this is
@@ -1503,7 +1695,7 @@ vt52|dec vt52,
 #
 # (vt100: I added <rmam>/<smam> based on the init string, also <OTbs>. -- esr)
 vt100|vt100-am|dec vt100 (w/advanced video), 
-       am, msgr, xenl, xon, 
+       OTbs, am, msgr, xenl, xon, 
        cols#80, it#8, lines#24, vt#3, 
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
        bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, 
@@ -1540,8 +1732,7 @@ vt100-w-nam|vt100-nam-w|dec vt100 132 cols (w/advanced video no automargin),
 vt100-nav|vt100 without advanced video option, 
        xmc#1, 
        blink@, bold@, rev@, rmso=\E[m, rmul@, sgr@, sgr0@, smso=\E[7m, 
-       smul@, 
-       use=vt100, 
+       smul@, use=vt100, 
 vt100-nav-w|vt100-w-nav|dec vt100 132 cols 14 lines (no advanced video option), 
        cols#132, lines#14, use=vt100-nav, 
 
@@ -1561,15 +1752,15 @@ vt100-s-bot|vt100-bot-s|vt100 for use with bottom sysline,
        eslok, hs, 
        lines#23, 
        dsl=\E7\E[1;24r\E8, fsl=\E8, is2=\E[1;23r\E[23;1H, 
-       tsl=\E7\E[24;%p1%dH\E[1K, 
-       use=vt100-am, 
+       tsl=\E7\E[24;%p1%dH\E[1K, use=vt100-am, 
 
 # Most of the `vt100' emulators out there actually emulate a vt102
 # This entry (or vt102-nsgr) is probably the right thing to use for
 # these.  
 vt102|dec vt102, 
        mir, 
-       dch1=\E[P, dl1=\E[M, il1=\E[L, rmir=\E[4l, smir=\E[4h, use=vt100, 
+       dch1=\E[P, dl1=\E[M, il1=\E[L, rmir=\E[4l, smir=\E[4h, 
+       use=vt100, 
 vt102-w|dec vt102 in wide mode, 
        cols#132, 
        rs3=\E[?3h, use=vt102, 
@@ -1583,8 +1774,7 @@ vt102-w|dec vt102 in wide mode,
 # slightly more expensive.
 # From: Eric S. Raymond <esr@snark.thyrsus.com> July 22 1995
 vt102-nsgr|vt102 no sgr (use if you see snowflakes after highlight changes), 
-       sgr@, sgr0=\E[m, 
-       use=vt102, 
+       sgr@, sgr0=\E[m, use=vt102, 
 
 # VT125 Graphics CRT.  Clear screen also erases graphics
 vt125|vt125 graphics terminal, 
@@ -1593,7 +1783,7 @@ vt125|vt125 graphics terminal,
 # This isn't a DEC entry, it came from University of Wisconsin.
 # (vt131: I added <rmam>/<smam> based on the init string, also <OTbs> -- esr)
 vt131|dec vt131, 
-       am, xenl, 
+       OTbs, am, xenl, 
        cols#80, it#8, lines#24, vt#3, 
        bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>, 
        clear=\E[;H\E[2J$<50/>, cr=^M, csr=\E[%i%p1%d;%p2%dr, 
@@ -1618,18 +1808,17 @@ vt131|dec vt131,
 vt132|DEC vt132, 
        xenl, 
        dch1=\E[P$<7>, dl1=\E[M$<99>, il1=\E[L$<99>, ind=\n$<30>, 
-       ip=$<7>, rmir=\E[4h, smir=\E[4l, 
-       use=vt100, 
+       ip=$<7>, rmir=\E[4h, smir=\E[4l, use=vt100, 
 
-# vt220:
 # This vt220 description maps F5--F9 to the second block of function keys
 # at the top of the keyboard.  The "DO" key is used as F10 to avoid conflict
 # with the key marked (ESC) on the vt220.  See vt220d for an alternate mapping.
 # PF1--PF4 are used as F1--F4.
 #
-vt220|vt200|DEC VT220 in vt100 emulation mode, 
-       am, mir, xenl, xon, 
+vt220-old|vt200-old|DEC VT220 in vt100 emulation mode, 
+       OTbs, OTpt, am, mir, xenl, xon, 
        cols#80, lines#24, vt#3, 
+       OTnl=^J, 
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
        bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, civis=\E[?25l, 
        clear=\E[H\E[2J$<50>, cnorm=\E[?25h, cr=^M, 
@@ -1649,33 +1838,13 @@ vt220|vt200|DEC VT220 in vt100 emulation mode,
        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$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h, 
        smso=\E[7m, smul=\E[4m, 
-vt220-w|vt200-w|DEC vt220 in wide mode, 
-       cols#132, 
-       rs3=\E[?3h, use=vt220, 
-
-#
-# vt220d:
-# This vt220 description regards F6--F10 as the second block of function keys
-# at the top of the keyboard.  This mapping follows the description given
-# in the VT220 Programmer Reference Manual and agrees with the labeling
-# on some terminals that emulate the vt220.  There is no support for an F5.
-# See vt220 for an alternate mapping. 
-#
-vt220d|DEC VT220 in vt100 mode with DEC function key labeling, 
-       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~, kf20=\E[34~, kf5@, kf6=\E[17~, 
-       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
-       use=vt220, 
-
-vt220-nam|v200-nam|VT220 in vt100 mode with no auto margins, 
-       am@, 
-       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt220, 
 
-# This is misnamed (see xterm-8bit for an example of 8-bit controls)
-vt220-8|dec vt220 8 bit terminal, 
-       am, mc5i, mir, msgr, xenl, xon, 
-       cols#80, it#8, lines#24, 
+# A much better description of the VT200/220; used to be vt220-8
+# changed rmacs/smacs from shift-in/shift-out to vt200-old's explicit G0/G1
+# designation to accommodate bug in pcvt -TD
+vt220|vt200|dec vt220, 
+       OTbs, am, mc5i, mir, msgr, xenl, xon, 
+       cols#80, it#8, lines#24, vt#3, 
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
        bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, 
        csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, 
@@ -1695,9 +1864,56 @@ vt220-8|dec vt220 8 bit terminal,
        khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, 
        kslt=\E[4~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, mc0=\E[i, 
        mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, 
-       rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmso=\E[27m, 
-       rmul=\E[24m, rs1=\E[?3l, sc=\E7, sgr0=\E[m, smacs=^N
+       rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, rmso=\E[27m, 
+       rmul=\E[24m, rs1=\E[?3l, sc=\E7, sgr0=\E[m, smacs=\E(0$<2>
        smam=\E[?7h, smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g, 
+vt220-w|vt200-w|DEC vt220 in wide mode, 
+       cols#132, 
+       rs3=\E[?3h, use=vt220, 
+vt220-8bit|vt220-8|vt200-8bit|vt200-8|dec vt220/200 in 8-bit mode, 
+       OTbs, am, mc5i, mir, msgr, xenl, xon, 
+       cols#80, it#8, lines#24, vt#3, 
+       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
+       bel=^G, blink=\2335m, bold=\2331m, clear=\233H\233J, 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, 
+       dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M, 
+       ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K, enacs=\E)0, 
+       flash=\233?5h$<200/>\233?5l, home=\233H, ht=^I, hts=\EH, 
+       ich=\233%p1%d@, if=/usr/share/tabset/vt100, 
+       il=\233%p1%dL, il1=\233L, ind=\ED, 
+       is2=\233?7h\233>\233?1h\E F\233?4l, kbs=^H, 
+       kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A, 
+       kf1=\EOP, kf10=\23321~, kf11=\23323~, kf12=\23324~, 
+       kf13=\23325~, kf14=\23326~, kf17=\23331~, kf18=\23332~, 
+       kf19=\23333~, kf2=\EOQ, kf20=\23334~, kf3=\EOR, kf4=\EOS, 
+       kf6=\23317~, kf7=\23318~, kf8=\23319~, kf9=\23320~, 
+       kfnd=\2331~, khlp=\23328~, khome=\233H, kich1=\2332~, 
+       knp=\2336~, kpp=\2335~, krdo=\23329~, kslt=\2334~, lf1=pf1, 
+       lf2=pf2, lf3=pf3, lf4=pf4, mc0=\233i, mc4=\2334i, mc5=\2335i, 
+       nel=\EE, rc=\E8, rev=\2337m, ri=\EM, rmacs=^O, rmam=\233?7l, 
+       rmir=\2334l, rmso=\23327m, rmul=\23324m, rs1=\233?3l, 
+       sc=\E7, sgr0=\233m, smacs=^N, smam=\233?7h, smir=\2334h, 
+       smso=\2337m, smul=\2334m, tbc=\2333g, 
+
+#
+# vt220d:
+# This vt220 description regards F6--F10 as the second block of function keys
+# at the top of the keyboard.  This mapping follows the description given
+# in the VT220 Programmer Reference Manual and agrees with the labeling
+# on some terminals that emulate the vt220.  There is no support for an F5.
+# See vt220 for an alternate mapping. 
+#
+vt220d|DEC VT220 in vt100 mode with DEC function key labeling, 
+       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~, kf20=\E[34~, kf5@, kf6=\E[17~, 
+       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, use=vt220-old, 
+
+vt220-nam|v200-nam|VT220 in vt100 mode with no auto margins, 
+       am@, 
+       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt220, 
 
 # vt220 termcap written Tue Oct 25 20:41:10 1988 by Alex Latzko
 # (not an official DEC entry!)
@@ -1713,6 +1929,7 @@ vt220-8|dec vt220 8 bit terminal,
 # it has a vt220 and will get fouled up coming out of emacs
 #
 # From: Alexander Latzko <latzko@marsenius.rutgers.edu>, 30 Dec 1996
+# (Added vt100 <rc>,<sc> to quiet a tic warning -- esr)
 vt200-js|vt220-js|dec vt200 series with jump scroll, 
        am, 
        cols#80, 
@@ -1722,10 +1939,10 @@ vt200-js|vt220-js|dec vt200 series with jump scroll,
        il1=\E[L, ind=\ED, 
        is2=\E[61"p\E[H\E[?3l\E[?4l\E[?1l\E[?5l\E[?6l\E[?7h\E[?8h\E[?25h\E>\E[m, 
        kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
-       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=^M\ED, 
+       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=^M\ED, rc=\E8, 
        rf=/usr/lib/tabset/vt100, ri=\EM, rmdc=, rmir=\E[4l, 
        rmkx=\E[?1l\E>, rmso=\E[27m$<5/>, rmul=\E[24m, 
-       rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, smdc=, 
+       rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, smdc=, 
        smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m$<5/>, smul=\E[4m, 
  
 # This was DEC's vt320.  Use the purpose-built one below instead 
@@ -1750,7 +1967,7 @@ vt320nam|v320n|DEC VT320 in vt100 emul. mode with NO AUTO WRAP mode,
 # I left out <sgr> because of its RIDICULOUS complexity,
 # and the resulting fact that it causes the termcap translation of the entry
 # to SMASH the 1k-barrier...
-# From: Adam Thompson <thompson@xanth.magic.mb.ca> Sept 10 1995
+# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
 # (vt320: uncommented <fsl> --esr) 
 vt320|vt300|dec vt320 7 bit terminal, 
        am, eslok, hs, mir, msgr, xenl, 
@@ -1949,15 +2166,15 @@ vt420pc|DEC VT420 w/PC keyboard,
        kf48=\E[36;2~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, 
        kf8=\E[19~, kf9=\E[20~, khome=\E[H, 
        pctrm=USR_TERM\:vt420pcdos\:, 
-       pfx=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\\, use=vt420, 
+       pfx=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\\, 
+       use=vt420, 
 
 vt420pcdos|DEC VT420 w/PC for DOS Merge, 
        lines#25, 
        dispc=%?%p2%{19}%=%t\E\023\021%e%p2%{32}%<%t\E%p2%c%e%p2%{127}%=%t\E\177%e%p2%c%;, 
        pctrm@, 
        rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr@, 
-       sgr0=\E[m, smsc=\E[?1;2r\E[34h, 
-       use=vt420pc, 
+       sgr0=\E[m, smsc=\E[?1;2r\E[34h, use=vt420pc, 
 
 vt420f|DEC VT420 with VT kbd; VT400 mode; F1-F5 used as Fkeys, 
        kdch1=\177, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, 
@@ -2001,10 +2218,10 @@ vt520|DEC VT520,
        if=/usr/share/tabset/vt300, il1=\E[L, ind=\ED, 
        is2=\E[1;24r\E[24;1H, is3=\E[?67h\E[64;1"p, kbs=^H, 
        kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
-       kdch1=\E[3~, kf0=\E[29~, kf1=\EOP, kf10=\E[29~, kf2=\EOQ
-       kf3=\EOR, kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, 
-       kf8=\E[20~, kf9=\E[21~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, 
-       kpp=\E[5~, kslt=\E[4~, 
+       kdch1=\E[3~, kf1=\EOP, kf10=\E[29~, kf2=\EOQ, kf3=\EOR
+       kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, 
+       kf9=\E[21~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, 
+       kslt=\E[4~, 
        pfx=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\\, 
        rc=\E8, rev=\E[7m$<2>, rf=/usr/share/tabset/vt300, 
        ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, 
@@ -2028,10 +2245,10 @@ vt525|DEC VT525,
        if=/usr/share/tabset/vt300, il1=\E[L, ind=\ED, 
        is2=\E[1;24r\E[24;1H, is3=\E[?67h\E[64;1"p, kbs=^H, 
        kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
-       kdch1=\E[3~, kf0=\E[29~, kf1=\EOP, kf10=\E[29~, kf2=\EOQ
-       kf3=\EOR, kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, 
-       kf8=\E[20~, kf9=\E[21~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, 
-       kpp=\E[5~, kslt=\E[4~, 
+       kdch1=\E[3~, kf1=\EOP, kf10=\E[29~, kf2=\EOQ, kf3=\EOR
+       kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, 
+       kf9=\E[21~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, 
+       kslt=\E[4~, 
        pfx=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\\, 
        rc=\E8, rev=\E[7m$<2>, rf=/usr/share/tabset/vt300, 
        ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, 
@@ -2061,7 +2278,7 @@ dec-vt220|DOS tnvt200 terminal emulator,
 # RDBM systems, it includes ReGIS and SiXel support!  I'm impressed...
 # I can send the address if requested.
 # (z340: changed garbled \E[5?l to \E[?5l, DEC smooth scroll off -- esr)
-# From: Adam Thompson <thompson@xanth.magic.mb.ca> Sept 10 1995
+# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
 z340|zstem vt340 terminal emulator 132col 42line, 
        lines#42, 
        is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;42r\E[42;1H, 
@@ -2076,11 +2293,9 @@ z340-nam|zstem vt340 terminal emulator 132col 42line (no automatic margins),
 # 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, 
+       ncv@, 
+       hts=\EH, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c, 
+       use=vt220, use=ecma+color, 
 
 # 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
@@ -2139,8 +2354,7 @@ teraterm|Tera Term Pro,
        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, 
+       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.
@@ -2168,7 +2382,7 @@ ms-vt100|MS telnet imitating dec vt100,
 # removed (hs, eslok, tsl=\E[?E\E[?%i%dT, fsl=\E[?F, dsl=\E[?E)
 # as these seem not to work -- esr)
 x10term|vs100-x10|xterm terminal emulator (X10 window system), 
-       am, km, mir, msgr, xenl, xon, 
+       OTbs, am, km, mir, msgr, xenl, xon, 
        cols#80, it#8, lines#65, 
        bold=\E[1m, clear=\E[H\E[2J, csr=\E[%i%p1%d;%p2%dr, 
        cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
@@ -2182,10 +2396,11 @@ 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
+# added khome/kend, rmir/smir, rmul/smul, hts based on the R5 xterm code - TD
 # corrected typos in rs2 string - TD
+# added u6-u9 -TD
 xterm-r5|xterm R5 version, 
-       am, km, msgr, xenl, 
+       OTbs, am, km, msgr, xenl, 
        cols#80, it#8, lines#24, 
        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, 
@@ -2206,12 +2421,15 @@ xterm-r5|xterm R5 version,
        sc=\E7, 
        sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m, 
        sgr0=\E[m, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, 
-       smul=\E[4m, tbc=\E[3g, 
+       smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, 
+       u8=\E[?1;2c, u9=\E[c, 
 # Compatible with the R6 xterm
 # (from XFree86 3.2 distribution, <acsc> and <it> added, <blink@> removed)
-# added khome/kend - TD
+# added khome/kend, hts based on the R6 xterm code - TD
+# (khome/kend do not actually work in X11R5 or X11R6, but many people use this
+# for compatibility with other emulators).
 xterm-r6|xterm-old|xterm X11R6 version, 
-       am, km, mir, msgr, xenl, 
+       OTbs, am, km, mir, msgr, xenl, 
        cols#80, it#8, lines#24, 
        acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
        bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M, 
@@ -2219,19 +2437,19 @@ xterm-r6|xterm-old|xterm X11R6 version,
        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, enacs=\E)0, home=\E[H, ht=^I, il=\E[%p1%dL, 
+       el=\E[K, enacs=\E)0, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, 
        il1=\E[L, ind=^J, 
        is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^H, 
        kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
-       kdch1=\E[3~, kf1=\EOP, kf10=\E[21~, kf11=\E[23~, 
+       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=\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~, 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, 
+       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~, 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, 
@@ -2239,19 +2457,19 @@ xterm-r6|xterm-old|xterm X11R6 version,
 # 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
+       OTbs, am, bce, km, mir, msgr, xenl, 
+       cols#80, it#8, lines#24, ncv@
        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, 
        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, 
-       cvvis=\E[?25h, 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
-       enacs=\E(B\E)0, flash=\E[?5h\E[?5l, 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, 
+       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, enacs=\E(B\E)0
+       flash=\E[?5h$<100/>\E[?5l, 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, 
        is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, 
        ka1=\EOw, ka3=\EOu, kb2=\EOy, kbeg=\EOE, kbs=^H, kc1=\EOq, 
        kc3=\EOs, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
@@ -2262,63 +2480,83 @@ xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System),
        kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, 
        kf9=\E[20~, kfnd=\E[1~, khome=\EOH, kich1=\E[2~, 
        kmous=\E[M, knp=\E[6~, kpp=\E[5~, kslt=\E[4~, meml=\El, 
-       memu=\Em, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O
-       rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l
-       rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, rs1=^O, 
+       memu=\Em, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l
+       rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>
+       rmso=\E[27m, rmul=\E[24m, rs1=^O, 
        rs2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, sc=\E7, 
-       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%?%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, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c, 
-       vpa=\E[%i%p1%dd, 
+       vpa=\E[%i%p1%dd, use=ecma+color, 
 
 # This is the stock xterm entry supplied with XFree86 3.3, which uses VT100
 # codes for F1-F4 except while in VT220 mode.
 xterm-xf86-v33|xterm terminal emulator (XFree86 3.3 Window System), 
-       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, 
-       use=xterm-xf86-v32, 
+       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, use=xterm-xf86-v32, 
 
 # 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.
+# -- the distribution contained incorrect khome/kend values -TD
 xterm-xf86-v333|xterm terminal emulator (XFree86 3.3.3 Window System), 
        mc5i, 
        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>, 
+       is2=\E[!p\E[?3;4l\E[4l\E>, kdch1=\E[3~, kfnd@, 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, 
+       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, 
+       npc, 
+       kDC=\E[3;5~, kEND=\EO5F, kHOM=\EO5H, kIC=\E[2;5~, 
+       kLFT=\EO5D, kNXT=\E[6;5~, kPRV=\E[5;5~, kRIT=\EO5C, ka1@, 
+       ka3@, kb2=\EOE, kc1@, kc3@, kcbt=\E[Z, kdch1=\E[3~, kend=\EOF, 
+       kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, kf16=\EO2S, 
+       kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~, 
+       kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~, 
+       kf23=\E[23;2~, kf24=\E[24;2~, kf25=\EO5P, kf26=\EO5Q, 
+       kf27=\EO5R, kf28=\EO5S, kf29=\E[15;5~, kf30=\E[17;5~, 
+       kf31=\E[18;5~, kf32=\E[19;5~, kf33=\E[20;5~, 
+       kf34=\E[21;5~, kf35=\E[23;5~, kf36=\E[24;5~, kf37=\EO6P, 
+       kf38=\EO6Q, kf39=\EO6R, kf40=\EO6S, kf41=\E[15;6~, 
+       kf42=\E[17;6~, kf43=\E[18;6~, kf44=\E[19;6~, 
+       kf45=\E[20;6~, kf46=\E[21;6~, kf47=\E[23;6~, 
+       kf48=\E[24;6~, khome=\EOH, rmcup=\E[?1049l, 
+       sgr=\E[0%?%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;, 
+       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, 
+       rmso=\E[m, rmul=\E[m, use=xterm-xf86-v33, 
 
 # 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, 
+       colors#16, pairs#256, 
        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, 
 
+# These variants of XFree86 3.9.16 xterm are built as a configure option.
+xterm-256color|xterm with 256 colors, 
+       ccc, 
+       colors#256, pairs#256, 
+       initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\, 
+       setab=\E[48;5;%p1%dm, setaf=\E[38;5;%p1%dm, 
+       setb=\E[48;5;%p1%dm, setf=\E[38;5;%p1%dm, 
+       use=xterm-xfree86, 
+xterm-88color|xterm with 88 colors, 
+       colors#88, pairs#88, use=xterm-256color, 
+
 # This is another variant, for XFree86 4.0 xterm (T.Dickey)
 # This is an 8-bit version of xterm, which emulates DEC vt220 with ANSI color.
 # To use it, your decTerminalID resource must be set to 200 or above.
@@ -2329,7 +2567,7 @@ xterm-16color|xterm with 16 colors like aixterm,
 #      CSI     \E [    \233
 #
 xterm-8bit|xterm terminal emulator 8-bit controls (X Window System), 
-       am, bce, km, mc5i, mir, msgr, xenl, 
+       OTbs, am, bce, km, mc5i, mir, msgr, npc, xenl, 
        colors#8, cols#80, it#8, lines#24, pairs#64, 
        acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
        bel=^G, blink=\2335m, bold=\2331m, cbt=\233Z, 
@@ -2337,12 +2575,12 @@ xterm-8bit|xterm terminal emulator 8-bit controls (X Window System),
        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, 
-       cvvis=\233?25h, dch=\233%p1%dP, dch1=\233P
-       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@, il=\233%p1%dL, il1=\233L
-       ind=^J, invis=\2338m, 
+       dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M
+       ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K
+       enacs=\E(B\E)0, flash=\233?5h$<100/>\233?5l
+       home=\233H, hpa=\233%i%p1%dG, 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, 
@@ -2368,14 +2606,42 @@ xterm-8bit|xterm terminal emulator 8-bit controls (X Window System),
        tbc=\2333g, u6=\233[%i%d;%dR, u7=\E[6n, u8=\233[?1;2c, 
        u9=\E[c, vpa=\233%i%p1%dd, 
 
+xterm-hp|XFree86 xterm with hpterm function keys, 
+       kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, 
+       kdch1=\EP, kend=\EF, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, 
+       kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, kich1=\EQ, 
+       knp=\ES, kpp=\ET, use=xterm-xfree86, 
+
+xterm-vt220|XFree86 xterm emulating vt220, 
+       ka1=\EOw, ka3=\EOy, kbeg=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs, 
+       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
+       kdch1=\E[3~, kend=\E[4~, kent=\EOM, 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, 
+       kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
+       khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, 
+       use=xterm-xfree86, 
+
+xterm-vt52|XFree86 xterm emulating dec vt52, 
+       cols#80, it#8, lines#24, 
+       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
+       bel=^G, clear=\EH\EJ, cr=^M, cub1=\ED, cud1=\EB, cuf1=\EC, 
+       cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, ed=\EJ, el=\EK, 
+       home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, 
+       kcuf1=\EC, kcuu1=\EA, nel=^M^J, ri=\EI, rmacs=\EG, smacs=\EF, 
+
+xterm-noapp|xterm with cursor keys in normal mode, 
+       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, rmcup@, 
+       rmkx=\E>, smcup@, smkx=\E=, use=xterm, 
+
 xterm-24|vs100|xterms|xterm terminal emulator (X Window System), 
-       lines#24, use=xterm, 
+       lines#24, use=xterm-r6
 
 # 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, 
+#      use=xterm-xfree86, 
 
 # These entries allow access to the X titlebar and icon name as a status line. 
 # Note that twm (and possibly window managers descended from it such as tvtwm, 
@@ -2395,25 +2661,21 @@ xterm+sl-twm|access X title line (pacify twm-descended window managers),
 #
 # xterm with bold instead of underline
 xterm-bold|xterm terminal emulator (X11R6 Window System) standout w/bold, 
-       smso=\E[7m, smul=\E[1m, 
-       use=xterm, 
+       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
 #  -- Kenji Rikitake)
 kterm|kterm kanji terminal emulator (X window system), 
        eslok, hs, 
        acsc@, csr=\E[%i%p1%d;%p2%dr, dsl=\E[?H, enacs@, fsl=\E[?F, 
-       kmous=\E[M, op=\E[39;49m, rc=\E8, rmacs@, sc=\E7, smacs@, 
-       tsl=\E[?E\E[?%i%dT, 
-       use=xterm-r6, use=klone+color, 
+       kmous=\E[M, rc=\E8, rmacs@, sc=\E7, smacs@, 
+       tsl=\E[?E\E[?%i%dT, use=xterm-r6, use=ecma+color, 
 # See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file
 xterm-nic|xterm with ich/ich1 suppressed for non-curses programs, 
-       ich@, ich1@, 
-       use=xterm, 
+       ich@, ich1@, use=xterm, 
 # From: Mark Sheppard <kimble@mistral.co.uk>, 4 May 1996 
 xterm1|xterm terminal emulator ignoring the alternate screen buffer, 
-       rmcup@, smcup@, 
-       use=xterm, 
+       rmcup@, smcup@, use=xterm, 
 
 # This describes the capabilities of color_xterm, an xterm variant from
 # before ECMA-64 color support was folded into the main-line xterm release.
@@ -2422,8 +2684,8 @@ xterm1|xterm terminal emulator ignoring the alternate screen buffer,
 # 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
+       OTbs, am, km, mir, msgr, xenl, 
+       cols#80, it#8, lines#65, ncv@
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
        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, 
@@ -2438,25 +2700,40 @@ color_xterm|cx|cx100|color_xterm color terminal emulator for X,
        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~, 
-       kmous=\E[M, knp=\E[6~, kpp=\E[5~, op=\E[39;49m, rc=\E8
-       rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, 
-       rmcup=\E>\E[?41;1r, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, 
+       kmous=\E[M, knp=\E[6~, kpp=\E[5~, rc=\E8, rev=\E[7m, ri=\EM
+       rmacs=^O, rmam=\E[?7l, rmcup=\E>\E[?41;1r, rmir=\E[4l, 
+       rmso=\E[27m, rmul=\E[24m, 
        rs1=\E(B\017\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E<, 
-       sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, 
+       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, smacs=^N, smam=\E[?7h, 
        smcup=\E[?1;41s\E[?1;41h\E=, smir=\E[4h, smso=\E[7m, 
-       smul=\E[4m, 
+       smul=\E[4m, use=ecma+color, 
 
-# The 'nxterm' distributed with Redhat Linux is a slight rehack of
+# The 'nxterm' distributed with Redhat Linux 5.2 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.
+#
+# Redhat Linux 6.x distributes XFree86 xterm as "nxterm", which uses bce
+# colors; note that this is not compatible with the 5.2 version.
 nxterm|xterm-color|generic color xterm, 
        ncv@, 
        op=\E[m, use=xterm-r6, use=klone+color, 
 
+# this describes the alpha-version of Gnome terminal shipped with Redhat 6.0
+gnome|Gnome terminal, 
+       bce, 
+       kdch1=\177, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, 
+       use=xterm-color, 
+
+# This is kvt 0-18.7, shipped with Redhat 6.0 (though whether it supports bce
+# or not is debatable).
+kvt|KDE terminal, 
+       bce, km@, 
+       kdch1=\177, kend=\E[F, khome=\E[H, use=xterm-color, 
+
 # From: Thomas Dickey <dickey@clark.net> 04 Oct 1997
 # Updated: Oezguer Kesim <kesim@math.fu-berlin.de> 02 Nov 1997
 # Notes:
@@ -2476,7 +2753,7 @@ nxterm|xterm-color|generic color xterm,
 # Since rxvt is not really compatible with xterm, it should be configured as
 # "rxvt" (monochrome) and "rxvt-color". 
 rxvt-basic|rxvt terminal base (X Window System), 
-       am, bce, eo, km, mir, msgr, xenl, xon, 
+       OTbs, am, bce, eo, km, mir, msgr, xenl, xon, 
        cols#80, it#8, lines#24, 
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
        bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, 
@@ -2484,17 +2761,16 @@ rxvt-basic|rxvt terminal base (X Window System),
        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, 
-       cvvis=\E[?25h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, 
-       dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0, 
-       flash=\E[?5h\E[?5l, home=\E[H, ht=^I, hts=\EH, 
-       ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, 
-       is1=\E[?47l\E=\E[?1l, 
+       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, 
+       el=\E[K, el1=\E[1K, enacs=\E(B\E)0, flash=\E[?5h\E[?5l, 
+       home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, 
+       il=\E[%p1%dL, il1=\E[L, ind=^J, is1=\E[?47l\E=\E[?1l, 
        is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, 
        kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kLFT=\E[d, kNXT=\E[6$, 
        kPRV=\E[5$, kRIT=\E[c, ka1=\EOw, ka3=\EOy, kb2=\EOu, kbs=^H, 
        kc1=\EOq, kc3=\EOs, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, 
        kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kel=\E[8\^, 
-       kend=\E[8~, kent=\EOM, kf0=\E[21~, kf1=\E[11~, kf10=\E[21~, 
+       kend=\E[8~, kent=\EOM, 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~, 
@@ -2509,15 +2785,56 @@ rxvt-basic|rxvt terminal base (X Window System),
        smcup=\E7\E[?47h, smir=\E[4h, smkx=\E=, smso=\E[7m, 
        smul=\E[4m, tbc=\E[3g, 
 rxvt|rxvt terminal emulator (X Window System), 
-       colors#8, pairs#64, 
-       op=\E[39;49m, setab=\E[%p1%{40}%+%dm, 
-       setaf=\E[%p1%{30}%+%dm, sgr0=\E[m\017, use=rxvt-basic, 
+       ncv@, 
+       sgr0=\E[m\017, use=rxvt-basic, use=ecma+color, 
+
+# From: Michael Jennings <mej@valinux.com>
+# removed kf0 which conflicts with kf10 -TD
+# remove cvvis which conflicts with cnorm -TD
+# There's no u6 because Eterm appears to lack CPR (cursor position report).
+Eterm|Eterm-color|Eterm with xterm-style color support (X Window System), 
+       am, bce, bw, eo, km, mc5i, mir, msgr, xenl, xon, 
+       btns#5, cols#80, it#8, lines#24, lm#0, ncv@, 
+       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
+       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=\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, dl=\E[%p1%dM, dl1=\E[M, 
+       ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, 
+       flash=\E[?5h\E[?5l, 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, is1=\E[?47l\E>\E[?1l, 
+       is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, 
+       kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kLFT=\E[d, kNXT=\E[6$, 
+       kPRV=\E[5$, kRIT=\E[c, ka1=\E[7~, ka3=\E[5~, kb2=\EOu, 
+       kbeg=\EOu, kbs=^H, kc1=\E[8~, kc3=\E[6~, kcbt=\E[Z, 
+       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
+       kdch1=\E[3~, kel=\E[8\^, kend=\E[8~, kent=\EOM, 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~, khlp=\E[28~, 
+       khome=\E[7~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, 
+       kslt=\E[4~, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM, 
+       rmacs=^O, rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, 
+       rmkx=, 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>, 
+       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, smam=\E[?7h, smcup=\E7\E[?47h, 
+       smir=\E[4h, smkx=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, 
+       u7=\E[6n, u8=\E[?1;2c, u9=\E[c, vpa=\E[%i%p1%dd, 
+       use=ecma+color, 
 
 # 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, 
+       OTbs, 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, 
@@ -2555,8 +2872,7 @@ xtermc|xterm terminal emulator (color),
 # title bar. [I have translated it to terminfo -- ESR]
 xterm-pcolor|xterm with color used for highlights and status line, 
        bold=\E[1m\E[43m, rev=\E[7m\E[34m, smso=\E[7m\E[31m, 
-       smul=\E[4m\E[42m, 
-       use=xterm+sl, use=xterm-r6, 
+       smul=\E[4m\E[42m, use=xterm+sl, use=xterm-r6, 
 
 # HP ships this, except for the pb#9600 which was merged in from BSD termcap.
 # (hpterm: added empty <acsc>, we have no idea what ACS chars look like --esr)
@@ -2600,8 +2916,7 @@ xterm-sun|xterm with sunFunctionKeys true,
        kf40=\E[217z, kf42=\E[219z, kf44=\E[221z, kf5=\E[228z, 
        kf6=\E[229z, kf7=\E[230z, kf8=\E[231z, kf9=\E[232z, 
        kfnd=\E[200z, khlp=\E[196z, khome=\E[214z, kich1=\E[2z, 
-       knp=\E[222z, kpp=\E[216z, kund=\E[195z, 
-       use=xterm, 
+       knp=\E[222z, kpp=\E[216z, kund=\E[195z, use=xterm, 
 xterms-sun|small (80x24) xterm with sunFunctionKeys true, 
        cols#80, lines#24, use=xterm-sun, 
 
@@ -2614,9 +2929,9 @@ emu|emu native mode,
        clear=\EP\EE0;0;, cnorm=\Ea, cr=^M, csr=\Ek%p1%d;%p2%d;, 
        cub=\Eq-%p1%d;, cub1=^H, cud=\Ep%p1%d;, cud1=\EB, 
        cuf=\Eq%p1%d;, cuf1=\ED, cup=\EE%p1%d;%p2%d;, 
-       cuu=\Ep-%p1%d;, cuu1=\EA, cvvis=\Ea, dch=\EI%p1%d;, 
-       dch1=\EI1;, dl=\ER%p1%d;, dl1=\ER1;, ech=\Ej%p1%d;, ed=\EN
-       el=\EK, el1=\EL, enacs=\0, home=\EE0;0;, ht=^I, hts=\Eh, 
+       cuu=\Ep-%p1%d;, cuu1=\EA, dch=\EI%p1%d;, dch1=\EI1;, 
+       dl=\ER%p1%d;, dl1=\ER1;, ech=\Ej%p1%d;, ed=\EN, el=\EK
+       el1=\EL, enacs=\0, home=\EE0;0;, ht=^I, hts=\Eh, 
        il=\EQ%p1%d;, il1=\EQ1;, ind=\EG, is2=\ES\Er0;\Es0;, 
        kbs=^H, kcub1=\EC, kcud1=\EB, kcuf1=\ED, kcuu1=\EA, 
        kdch1=\177, kent=^M, kf0=\EF00, kf1=\EF01, kf10=\EF10, 
@@ -2651,20 +2966,18 @@ mgr|Bellcore MGR (non X) window system terminal emulation,
        smul=\E4n, 
 mgr-sun|Mgr window with Sun keyboard, 
        ka1=\E[214z, ka3=\E[216z, kb2=\E[218z, kc1=\E[220z, 
-       kc3=\E[222z, kcpy=\E197z, kend=\E[220z, kent=\E[250z, 
+       kc3=\E[222z, kcpy=\E[197z, kend=\E[220z, kent=\E[250z, 
        kf1=\E[224z, kf10=\E[233z, kf11=\E[234z, kf12=\E[235z, 
        kf2=\E[225z, kf3=\E[226z, kf4=\E[227z, kf5=\E[228z, 
        kf6=\E[229z, kf7=\E[230z, kf8=\E[231z, kf9=\E[232z, 
        kfnd=\E[200z, khlp=\E[207z, khome=\E[214z, knp=\E[222z, 
-       kopn=\E[198z, kpp=\E[216z, kund=\E[195z, 
-       use=mgr, 
+       kopn=\E[198z, kpp=\E[216z, kund=\E[195z, use=mgr, 
 mgr-linux|Mgr window with Linux keyboard, 
        ka1=\E[H, ka3=\E[5~, kb2=\E[G, kc1=\E[Y, kc3=\E[6~, 
        kdch1=\E[3~, kend=\E[4~, kf0=\E[[J, kf1=\E[[A, kf10=\E[21~, 
        kf11=\E[23~, kf12=\E[24~, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D, 
        kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
-       khome=\E[1~, knp=\E[6~, kpp=\E[5~, 
-       use=mgr, 
+       khome=\E[1~, knp=\E[6~, kpp=\E[5~, use=mgr, 
 
 ######## UNIX VIRTUAL TERMINALS, VIRTUAL CONSOLES, AND TELNET CLIENTS
 #
@@ -2673,7 +2986,7 @@ mgr-linux|Mgr window with Linux keyboard,
 # UNIX 4.0 and successors as line discipline 1 (?), but is 
 # undocumented and does not really work quite right.
 cbunix|cb unix virtual terminal, 
-       am, da, db, 
+       OTbs, am, da, db, 
        cols#80, lines#24, lm#0, 
        bel=^G, clear=\EL, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, 
        cup=\EG%p2%c%p1%c, cuu1=\EA, dch1=\EM, dl1=\EN, ed=\EL, 
@@ -2687,8 +3000,7 @@ vremote|virtual remote terminal,
 
 pty|4bsd pseudo teletype, 
        cup=\EG%p1%{32}%+%c%p2%{32}%+%c, rmso=\Eb$, rmul=\Eb!, 
-       smso=\Ea$, smul=\Ea!, 
-       use=cbunix, 
+       smso=\Ea$, smul=\Ea!, use=cbunix, 
 
 # The codes supported by the term.el terminal emulation in GNU Emacs 19.30 
 eterm|gnu emacs term.el terminal emulation, 
@@ -2705,13 +3017,19 @@ eterm|gnu emacs term.el terminal emulation,
        sgr0=\E[m, smcup=\E7\E[?47h, smir=\E[4h, smso=\E[7m, 
        smul=\E[4m, 
 
-# Entries for use by the FSF's `screen' program.  The screen and
+# Entries for use by the `screen' program by Juergen Weigert, 
+# Michael Schroeder, Oliver Laumann.  The screen and
 # screen-w entries came with version 3.7.1.  The screen2 and screen3 entries
 # come from University of Wisconsin and may be older.
 # (screen: added <cnorm> on ANSI model -- esr)
-
+#
+# 'screen' defines extensions to termcap.  Some are used in its terminal
+# description:
+#      G0   (bool)  Terminal can deal with ISO 2022  font  selection sequences.
+#      AX   (bool)  Does  understand ANSI set default fg/bg color
+#                   (\E[39m / \E[49m).
 screen|VT 100/ANSI X3.64 virtual terminal, 
-       am, km, mir, msgr, xenl
+       OTbs, OTpt, am, km, mir, msgr, xenl, G0
        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, 
@@ -2818,7 +3136,7 @@ ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in vt220-8 mode,
        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~, 
+       kf6=\E[23~, 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, 
@@ -2847,8 +3165,7 @@ ncsa-vt220|NCSA Telnet using vt220-compatible function keys,
        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, 
+       kf8=\E[19~, kf9=\E[20~, use=ncsa, 
 
 #### Pilot Pro Palm-Top
 #
@@ -2882,7 +3199,7 @@ pccons|pcconsole|ANSI (mostly) Alpha PC console terminal emulation,
 
 # :is1: resets scrolling region in case a previous user had used "tset vt100"
 oldsun|Sun Microsystems Workstation console, 
-       am, km, mir, msgr, 
+       OTbs, am, km, mir, msgr, 
        cols#80, it#8, lines#34, 
        bel=^G, clear=^L, cr=^M, cub1=^H, cud1=\E[B, cuf1=\E[C, 
        cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP, 
@@ -2910,9 +3227,10 @@ sun-il|Sun Microsystems console with working insert-line,
        kund=\E[195z, rev=\E[7m, rmso=\E[m, rmul@, rs2=\E[s, 
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m, 
        sgr0=\E[m, smso=\E[7m, smul@, u8=\E[1t, u9=\E[11t, 
-# On a SparcStation 5, <il1>/<il> flake out on the last line.
-# Unfortunately, without them the terminal has no way to scroll.
-sun-ss5|Sun SparcStation 5 console, 
+# On some versions of CGSIX framebuffer firmware (SparcStation 5), <il1>/<il>
+# flake out on the last line.  Unfortunately, without them the terminal has no
+# way to scroll.
+sun-cgsix|sun-ss5|Sun SparcStation 5 console, 
        il@, il1@, use=sun-il, 
 # If you are using an SS5, change the sun definition to use sun-ss5.
 sun|sun1|sun2|Sun Microsystems Inc. workstation console, 
@@ -2940,8 +3258,7 @@ sun-1|Sun 1-line window for sysline,
        cols#80, lines#1, 
        dsl=^L, fsl=\E[K, tsl=^M, use=sun, 
 sun-e|sun-nic|sune|Sun Microsystems Workstation without insert character, 
-       ich1@, rmir@, smir@, 
-       use=sun, 
+       ich1@, rmir@, smir@, use=sun, 
 sun-c|sun-cmd|Sun Microsystems Workstation console with scrollable history, 
        lines#35, 
        rmcup=\E[>4h, smcup=\E[>4l, use=sun, 
@@ -2956,11 +3273,11 @@ sun-c|sun-cmd|Sun Microsystems Workstation console with scrollable history,
 # Finally, removed suboptimal <clear>=\EH\EJ and added <cud1> & 
 # <flash> from BRL -- esr)
 wsiris|iris40|iris emulating a 40 line visual 50 (approximately), 
-       am, 
-       cols#80, it#8, lines#40, 
-       bel=^G, clear=\Ev, cnorm=\E>, cub1=^H, cud1=\EB, cuf1=\EC
-       cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E;
-       dim=\E7F2, dl1=\EM, ed=\EJ, el=\EK, 
+       OTbs, OTnc, OTpt, am, 
+       OTkn#3, cols#80, it#8, lines#40, 
+       OTnl=\EB, bel=^G, clear=\Ev, cnorm=\E>, cub1=^H, cud1=\EB
+       cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA
+       cvvis=\E;, dim=\E7F2, dl1=\EM, ed=\EJ, el=\EK, 
        flash=\E7F4\E7B1\013\E7F7\E7B0, home=\EH, ht=^I, il1=\EL, 
        ind=^J, is2=\E7B0\E7F7\E7C2\E7R3, kcub1=\ED, kcud1=\EB, 
        kcuf1=\EC, kcuu1=\EA, kf0=\E0, kf1=\E1, kf2=\E2, kf3=\E3, 
@@ -2978,7 +3295,7 @@ wsiris|iris40|iris emulating a 40 line visual 50 (approximately),
 # Entry for NeWS's psterm from Eric Messick & Hugh Daniel
 # (psterm: unknown ":sl=\EOl:el=\ENl:" removed -- esr)
 psterm|psterm-basic|NeWS psterm-80x34, 
-       am, hs, km, ul, 
+       OTbs, am, hs, km, ul, 
        cols#80, it#8, lines#34, 
        blink=\EOb, bold=\EOd, clear=^L, csr=\EE%p1%d;%p2%d;, 
        cub1=\ET, cud1=\EP, cuf1=\EV, cup=\E%p1%d;%p2%d;, cuu1=\EY, 
@@ -2998,7 +3315,7 @@ psterm-80x24|NeWS psterm 80x24,
 # some control characters you type will do strange things to the screen.
 # (psterm-fast: unknown ":sl=^Ol:el=^Nl:" -- esr)
 psterm-fast|NeWS psterm fast version (flaky ctrl chars), 
-       am, hs, km, ul, 
+       OTbs, am, hs, km, ul, 
        cols#80, it#8, lines#34, 
        blink=^Ob, bold=^Od, clear=^L, csr=\005%p1%d;%p2%d;, 
        cub1=^T, cud1=^P, cuf1=^V, cup=\004%p1%d;%p2%d;, cuu1=^Y, 
@@ -3032,10 +3349,10 @@ nextshell|NeXT Shell application,
 
 # (news-unk: this had :KB=news: -- esr)
 news-unk|SONY NEWS vt100 emulator common entry, 
-       am, xenl, 
+       OTbs, OTpt, am, xenl, 
        cols#80, 
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=^M
-       csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C, 
+       OTnl=^J, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J
+       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, dl=\E[%p1%dM, dl1=\E[M, 
        ed=\E[J, el=\E[K, home=\E[H, ht=^I, 
        if=/usr/lib/tabset/vt100, il=\E[%p1%dL, il1=\E[L, 
@@ -3043,8 +3360,9 @@ news-unk|SONY NEWS vt100 emulator common entry,
        kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOY, kf1=\EOP, 
        kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, 
        kf8=\EOW, kf9=\EOX, rc=\E8, rev=\E[7m, ri=\EM, 
-       rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m, 
-       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, 
+       rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, 
+       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[r, sc=\E7, 
+       sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, 
 #
 # (news-29: this had :TY=ascii: --esr)
 news-29, 
@@ -3080,61 +3398,76 @@ news-42-sjis,
 #
 # (news-old-unk: this had :KB=news:TY=sjis: --esr)
 news-old-unk|SONY NEWS vt100 emulator common entry, 
-       am, xenl, 
+       OTbs, OTpt, am, xenl, 
        cols#80, vt#3, 
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J, cr=^M
-       csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C, 
+       OTnl=^J, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J
+       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, ed=\E[J, el=\E[K, 
        home=\E[H, ht=^I, if=/usr/lib/tabset/vt100, kbs=^H, 
        kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, 
        kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m, ri=\EM, 
-       rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m, 
-       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, 
+       rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, 
+       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, 
+       sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, 
 #
 # (nwp512: this had :DE=^H:, which I think means <OTbs> --esr)
-nwp512|news|nwp514|news40|vt100-bm|sony vt100 emulator 40 lines, 
+nwp512|news|nwp514|news40|vt100-bm|old sony vt100 emulator 40 lines, 
+       OTbs, 
        lines#40, 
-       is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40r\E8, use=news-old-unk, 
+       is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40r\E8, 
+       use=news-old-unk, 
 #
 # (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, 
        lines#42, 
-       is2=\E[?7h\E[?1l\E[?3l\E7\E[1;42r\E8, use=news-old-unk, 
+       is2=\E[?7h\E[?1l\E[?3l\E7\E[1;42r\E8, 
+       use=news-old-unk, 
 #
 # (nwp-512-o: this had :KB=nwp410:DE=^H:  I interpret the latter as <OTbs>. --esr)
 nwp512-o|nwp514-o|news-o|news40-o|vt100-bm-o|sony vt100 emulator 40 lines, 
+       OTbs, 
        lines#40, 
-       is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40r\E8, use=news-old-unk, 
+       is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40r\E8, 
+       use=news-old-unk, 
 #
 # (nwp513: this had :DE=^H: and the alias vt100-bm --esr)
 nwp513|nwp518|nwe501|newscbm|news31|sony vt100 emulator 33 lines, 
+       OTbs, 
        lines#31, 
-       is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31r\E8, use=news-old-unk, 
+       is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31r\E8, 
+       use=news-old-unk, 
 #
 # (nwp513-a: this had :TY=ascii: and :DE=^H:, which I interpret as <OTbs>; --esr)
 # also the alias vt100-bm.
-nwp513-a|nwp518-a|nwe501-a|nwp251-a|newscbm-a|news31-a|newscbm33|news33|sony vt100 emulator 33 lines, 
+nwp513-a|nwp518-a|nwe501-a|nwp251-a|newscbm-a|news31-a|newscbm33|news33|old sony vt100 emulator 33 lines, 
+       OTbs, 
        lines#33, 
-       is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;33r\E8, use=news-old-unk, 
+       is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;33r\E8, 
+       use=news-old-unk, 
 #
 # (nwp513-o: had :DE=^H:, I think that's <OTbs>; also the alias vt100-bm --esr)
-nwp513-o|nwp518-o|nwe501-o|nwp251-o|newscbm-o|news31-o|sony vt100 emulator 33 lines, 
+nwp513-o|nwp518-o|nwe501-o|nwp251-o|newscbm-o|news31-o|old sony vt100 emulator 33 lines, 
+       OTbs, 
        lines#31, 
-       is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31r\E8, use=news-old-unk, 
+       is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31r\E8, 
+       use=news-old-unk, 
 #
 # (news28: this had :DE=^H:, I think that's <OTbs>, and :KB=nws1200: --esr)
 news28|sony vt100 emulator 28 lines, 
+       OTbs, 
        lines#28, 
-       is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;28r\E8, use=news-old-unk, 
+       is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;28r\E8, 
+       use=news-old-unk, 
 #
 # (news29: this had :TY=ascii:KB=nws1200:\ --esr)
 news29|news28-a|sony vt100 emulator 29 lines, 
        lines#29, 
-       is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;29r\E8, use=news-old-unk, 
+       is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;29r\E8, 
+       use=news-old-unk, 
 #
 # (news511: this had :TY=sjis: --esr)
 nwp511|nwp-511|nwp-511 vt100, 
-       am, xenl, 
+       OTbs, OTpt, am, xenl, 
        cols#80, lines#24, 
        clear=\E[;H\E[2J$<20/>, cuf1=\E[C, 
        cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A$<2/>, dl1=\E[M, 
@@ -3144,23 +3477,23 @@ nwp511|nwp-511|nwp-511 vt100,
        kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, 
        kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\E#W, khome=\E[H, 
        ri=\EM$<5/>, rmso=\E[m$<2/>, rmul=\E[m$<2/>, 
+       rs2=\E7\E[r\E8\E[?5l\E[?1l\E>\E[?7h\E[?8h, 
        smso=\E[7m$<2/>, smul=\E[4m$<2/>, 
 # (news517: this had :TY=sjis:. --esr)
 nwp517|nwp-517|nwp-517 vt200 80 cols 30 rows, 
        eslok, hs, 
        cols#80, lines#30, 
-       dsl=\E[1$~, fsl=\E[0$}, 
+       OTi2=\E[2$~\n, dsl=\E[1$~, fsl=\E[0$}, 
        is2=\E7\E[r\E8\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, 
-       tsl=\E[1$}\E[;%df, 
-       use=vt200, 
+       tsl=\E[1$}\E[;%df, use=vt200, 
 # (news517-w: this had :TY=sjis:. --esr)
 nwp517-w|nwp-517-w|nwp-517 vt200 132 cols 50 rows, 
        eslok, hs, 
        cols#132, lines#50, 
-       dsl=\E[1$~, fsl=\E[0$}, 
+       OTi2=\E[2$~\n, dsl=\E[1$~, fsl=\E[0$}, 
        is2=\E7\E[r\E8\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h, 
-       tsl=\E[1$}\E[;%df
-       use=vt200, 
+       rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h
+       tsl=\E[1$}\E[;%df, use=vt200, 
 
 #### Common Desktop Environment
 #
@@ -3169,7 +3502,7 @@ nwp517-w|nwp-517-w|nwp-517 vt200 132 cols 50 rows,
 # 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
+       cols#80, it#8, lines#24, lm#0, ncv@
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
        bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, 
        clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, 
@@ -3188,13 +3521,12 @@ dtterm|CDE desktop terminal,
        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~, khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, 
-       kslt=\E[4~, nel=\EE, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, 
-       rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmso=\E[22;27m, 
-       rmul=\E[24m, sc=\E7, setab=\E[%p1%{40}%+%dm, 
-       setaf=\E[%p1%{30}%+%dm, 
+       kslt=\E[4~, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, 
+       rmam=\E[?7l, rmir=\E[4l, rmso=\E[22;27m, rmul=\E[24m, 
+       sc=\E7, 
        sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, 
        sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h, 
-       smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, 
+       smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, use=ecma+color, 
 
 #### Non-Unix Consoles
 #
@@ -3317,6 +3649,26 @@ ansi-nt|psx_ansi|Microsoft Windows NT console POSIX ANSI mode,
        home=\E[H, ht=^I, ind=\E[S, kbs=^H, kcub1=\E[D, kcud1=\E[V, 
        kcuf1=\E[C, kcuu1=\E[A, nel=\r\E[S, rc=\E[u, rev=\E[7m, 
        ri=\E[T, rmso=\E[m, sc=\E[s, sgr0=\E[0m, smso=\E[7m, 
+# From: jew@venus.sunquest.com
+# Date: 19 Feb 93 23:41:07 GMT
+# Here's  a  combination of  ansi and  vt100 termcap
+# entries   that  works  nearly   perfectly  for  me
+# (Gateway 2000 Handbook and Microsoft Works 3.0):
+pcmw|PC running Microsoft Works, 
+       am, xenl, 
+       cols#80, it#8, lines#24, vt#3, 
+       bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>, 
+       clear=\E[;H\E[2J$<50/>, cr=^M, cub1=^H, cud1=^J, 
+       cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>, 
+       cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H, 
+       ht=^I, hts=\EH$<2/>, ind=\ED$<5/>, is2=\E[1;24r\E[24;1H, 
+       kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
+       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\r\ED$<5/>, 
+       rc=\E8, rev=\E[7m$<2/>, rf=/usr/share/lib/tabset/vt100, 
+       ri=\EM$<5/>, rmso=\E[m$<2/>, rmul=\E[m$<2/>, 
+       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, 
+       sgr0=\E[m$<2/>, smso=\E[7m$<2/>, smul=\E[4m$<2/>, 
+       tbc=\E[3g$<2/>, 
 
 ######## COMMON TERMINAL TYPES
 #
@@ -3372,8 +3724,7 @@ altos2|alt2|altos-2|altos II,
 #      :HL=^AP\r:SP=\E[i:\
 #      :IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T:\
 altos3|altos5|alt3|alt5|altos-3|altos-5|altos III or V, 
-       blink=\E[5p, ri=\EM, sgr0=\E[p, 
-       use=altos2, 
+       blink=\E[5p, ri=\EM, sgr0=\E[p, use=altos2, 
 altos4|alt4|altos-4|altos IV, 
        use=wy50, 
 # (altos7: had extension capabilities:
@@ -3403,8 +3754,7 @@ altos7|alt7|altos VII,
        kf42=^Aj\r, kf43=^Ak\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, 
        kf8=^AG\r, kf9=^AH\r, khome=^^, kil1=^AJ\r, kind=^AO\r, 
        knp=\EK, kpp=\EJ, mc4=\EJ, mc5=\Ed#, nel=^M^J, ri=\Ej, 
-       rmir=\Er, smir=\Eq, 
-       use=adm+sgr, 
+       rmir=\Er, smir=\Eq, use=adm+sgr, 
 altos7pc|alt7pc|altos PC VII, 
        kend=\ET, use=altos7, 
 
@@ -3416,10 +3766,16 @@ altos7pc|alt7pc|altos PC VII,
 #      Vox: 1-(916)-785-4363   (Technical response line for VDTs)
 #           1-(800)-633-3600   (General customer support)
 #
+#
+# As of March 1998, HP no longer has any terminals in production.
+# The 700 series (22, 32, 41, 44, 92, 94, 96, 98) is still being 
+# supported (they still have parts). So are the 2392a and 2394a.
+# See the WORKSTATION CONSOLES section for the 700s.
+#
 
 # Generic HP terminal - this should (hopefully) work on any HP terminal.
 hpgeneric|hp|hewlett-packard generic terminal, 
-       am, da, db, mir, xhp, 
+       OTbs, OTpt, am, da, db, mir, xhp, 
        cols#80, lines#24, lm#0, vt#6, 
        bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, 
        cup=\E&a%p2%dc%p1%dY$<6>, cuu1=\EA, dch1=\EP, dl1=\EM, 
@@ -3481,15 +3837,13 @@ hp262x|HP 262x terminals,
 # sequence, we don't use it in the default.
 # If you like, you can use 2621-ba (brain-damaged arrow keys).
 hp2621-ba|2621 w/new rom and strap A set, 
-       rmkx@, smkx@, use=hp+arrows, 
-       use=hp2621, 
+       rmkx@, smkx@, use=hp+arrows, use=hp2621, 
 
 # hp2621 with function labels. Most of the time they are off,
 # but inside vi, the function key labels appear. You have to
 # hold down shift to get them to xmit.
 hp2621|hp2621a|hp2621A|2621|2621a|2621A|hp2621-wl|2621-wl|hp 2621 w/labels, 
-       is2=\E&jA\r, rmkx=\E&jA, 
-       use=hp2621-fl, 
+       is2=\E&jA\r, rmkx=\E&jA, use=hp2621-fl, 
 hp2621-fl|hp 2621, 
        xhp@, xon, 
        pb#19200, 
@@ -3508,17 +3862,18 @@ hp2621p-a|hp2621p with fn as arrows,
 # hp2621 with k45 keyboard
 hp2621-k45|hp2621k45|k45|hp 2621 with 45 keyboard, 
        kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, 
-       khome=\Eh, rmkx=\E&s0A, smkx=\E&s1A, 
-       use=hp2621, 
+       khome=\Eh, rmkx=\E&s0A, smkx=\E&s1A, use=hp2621, 
 
 # 2621 using all 48 lines of memory, only 24 visible at any time.  
 hp2621-48|48 line 2621, 
        lines#48, 
-       cup=\E&a%p2%dc%p1%dR, home=\EH, vpa=\E&a%p1%dR, use=hp2621, 
+       cup=\E&a%p2%dc%p1%dR, home=\EH, vpa=\E&a%p1%dR, 
+       use=hp2621, 
 
 # 2621 with no labels ever. Also prevents vi delays on escape.
 hp2621-nl|hp 2621 with no labels, 
-       kcub1@, kcud1@, kcuf1@, kcuu1@, khome@, rmkx@, smkx@, use=hp2621-fl, 
+       kcub1@, kcud1@, kcuf1@, kcuu1@, khome@, rmkx@, smkx@, 
+       use=hp2621-fl, 
 
 # Needed for UCB ARPAVAX console, since lsi-11 expands tabs 
 # (wrong).
@@ -3558,7 +3913,8 @@ hp2621-nt|hp 2621 w/no tabs,
 hp2624|hp2624a|hp2624b|hp2624b-4p|Hewlett Packard 2624 B, 
        da, db, 
        lm#96, 
-       flash=\E&w13F$<66/>\E&w12F$<66/>\E&w13F$<66/>\E&w12F, use=hp+labels, use=scrhp, 
+       flash=\E&w13F$<66/>\E&w12F$<66/>\E&w13F$<66/>\E&w12F, 
+       use=hp+labels, use=scrhp, 
 
 # This hp2626 entry does not use any of the fancy windowing stuff 
 # of the 2626.
@@ -3581,8 +3937,8 @@ hp2626|hp2626a|hp2626p|hp 2626,
        da, db, 
        lm#0, pb#19200, 
        ed=\ED\EJ$<500>\EC, indn=\E&r%p1%dD, ip=$<4>, 
-       is2=\E&j@\r, rin=\E&r%p1%dU, 
-       use=hp+pfk+cr, use=hp+labels, use=scrhp, 
+       is2=\E&j@\r, rin=\E&r%p1%dU, use=hp+pfk+cr, 
+       use=hp+labels, use=scrhp, 
 
 # This entry is for sysline. It allocates a 23 line window with 
 # a 115 line workspace for regular use, and a 1 line window for 
@@ -3600,11 +3956,11 @@ hp2626-s|hp 2626 using only 23 lines,
        lines#23, 
        fsl=\E&d@\E&w7f2p1I\E&w4f1I, 
        is1=\E&q3t0{0H \E&w0f115n1I \E&w0f1n2I \E&w2f1i0d0u22l0S \E&w2f2i0d23u23l0S \E&w7f2p1I \r, 
-       tsl=\E&w7f2p2I\E&w4f2I\r\EK\E&a%p1%dC, 
-       use=hp2626, 
+       tsl=\E&w7f2p2I\E&w4f2I\r\EK\E&a%p1%dC, use=hp2626, 
 # Force terminal back to 24 lines after being 23.
 hp2626-ns|hp 2626 using all 24 lines, 
-       is1=\E&q3t0{0H \E&w0f118n1I \E&w0f1n2I \E&w2f1i0d0u23l0S \E&w3f2I \E&w7f2p1I \r, use=hp2626, 
+       is1=\E&q3t0{0H \E&w0f118n1I \E&w0f1n2I \E&w2f1i0d0u23l0S \E&w3f2I \E&w7f2p1I \r, 
+       use=hp2626, 
 # Various entries useful for small windows on 2626.
 hp2626-12|hewlett-packard 2626 12 lines, 
        lines#12, use=hp2626, 
@@ -3622,8 +3978,7 @@ hp2627a-rev|hp 2627 with reverse video colors,
        cr=^M, cud1=^J, ht=^I, ind=^J, 
        is2=\E&v0m1a0b0c1x1y1z1i0a0b1c1x1y1z0i0S\E&j@\r\E3\r, 
        kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, rmul=\E&v0S\E&d@, 
-       smul=\E&dD\E&v1S, 
-       use=hp2621-nl, 
+       smul=\E&dD\E&v1S, use=hp2621-nl, 
 hp2627a|hp 2627 color terminal with no labels, 
        cr=^M, cud1=^J, ht=^I, ind=^J, 
        is2=\E&v0m1a1b0c1i0a1b1c2i1a0b0c0i0S\E&j@\r\E3\r, 
@@ -3633,8 +3988,7 @@ hp2627a|hp 2627 color terminal with no labels,
 hp2627c|hp 2627 color (cyan) terminal with no labels, 
        cr=^M, cud1=^J, ht=^I, ind=^J, 
        is2=\E&v0m1a0b0c2i1a1b0c1i0a1b1c0i0S\E&j@\r\E3\r, 
-       kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, 
-       use=hp2627a, 
+       kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, use=hp2627a, 
 
 # hp2640a doesn't have the Y cursor addressing feature, and C is 
 # memory relative instead of screen relative, as we need.
@@ -3669,19 +4023,17 @@ hp2645|hp45|HP 2645 series,
        kind=\ES, knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, rev=\E&dB, 
        rmkx=\E&s0A, 
        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, 
+       sgr0=\E&d@, smkx=\E&s1A, smul=\E&dD, use=hpgeneric, 
 # You should use this terminal at 4800 baud or less.
 hp2648|hp2648a|HP 2648a graphics terminal, 
        clear=\EH\EJ$<50>, cup=\E&a%p2%dc%p1%dY$<20>, 
-       dch1=\EP$<7>, ip=$<5>, 
-       use=hp2645, 
+       dch1=\EP$<7>, ip=$<5>, use=hp2645, 
 
 # The HP 150 terminal is a fairly vanilla HP terminal, with the 
 # clreol standout problem. It also has graphics capabilities and 
 # a touch screen, which we don't describe here.
 hp150|hewlett packard Model 150, 
-       use=hp2622, 
+       OTbs, use=hp2622, 
 
 # HP 2382a terminals, "the little ones." They don't have any 
 # alternate character set support and sending out ^N/^O will 
@@ -3693,8 +4045,7 @@ hp2382a|hp2382|hewlett packard 2382a,
        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%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}%+%e%{64}%;%;%c, 
-       sgr0=\E&d@, smacs@, 
-       use=hp+labels, use=scrhp, 
+       sgr0=\E&d@, smacs@, use=hp+labels, use=scrhp, 
 
 hp2621-a|hp2621a-a|hp2621 with fn as arrows, 
        use=hp+pfk+arrows, use=hp2621-fl, 
@@ -3722,8 +4073,7 @@ newhp|generic entry for new hewlett packard terminals,
        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%{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, 
+       tbc=\E3, use=newhpkeyboard, 
 
 memhp|memory relative addressing for new HP ttys, 
        vt#6, 
@@ -3759,8 +4109,7 @@ hp2621b|hp 2621b with old style keyboard,
        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%{111}%p1%+%c\r, 
-       smln=\E&jB, 
-       use=hp2621, 
+       smln=\E&jB, use=hp2621, 
 
 hp2621b-p|hp 2621b with printer, 
        use=hp+printer, use=hp2621b, 
@@ -3815,8 +4164,7 @@ hp+color|hp with colors,
 
 # <is2> sets the screen to be 80 columns wide
 hp2397a|hp2397|hewlett packard 2397A color terminal, 
-       is2=\E&w6f80X, 
-       use=memhp, use=hp+labels, use=hp+color, 
+       is2=\E&w6f80X, use=memhp, use=hp+labels, use=hp+color, 
 
 #  HP 700/44 Setup parameters:  
 # Terminal Mode                HP-PCterm
@@ -3883,8 +4231,7 @@ hpsub|hp terminals -- capability subset,
 hpex|hp extended capabilites, 
        cr=^M, cud1=^J, cup=\E&a%p1%dy%p2%dC, ht=^I, ind=^J, kbs=^H, 
        kcub1=^H, kcud1=^J, nel=^M^J, rmir=\ER, rmul=\E&d@, smir=\EQ, 
-       smul=\E&dD, vpa=\E&a%p1%dY, 
-       use=hpsub, 
+       smul=\E&dD, vpa=\E&a%p1%dY, use=hpsub, 
 
 # From: Ville Sulko <Ville.Sulko@bip.atk.tpo.fi>, 05 Aug 1996
 hp2|hpex2|hewlett-packard extended capabilities newer version, 
@@ -3911,7 +4258,7 @@ hp2|hpex2|hewlett-packard extended capabilities newer version,
 # HP 236 console
 # From: <ddavis@ic.berkeley.edu>
 hp236|hp236 internal terminal emulator, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        clear=\EF, cnorm=\EDE, cub1=^H, 
        cup=\EE%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, cvvis=\EDB, 
@@ -3921,7 +4268,7 @@ hp236|hp236 internal terminal emulator,
 # This works on a hp300 console running Utah 4.3 BSD
 # From: Craig Leres <leres@okeeffe.berkeley.edu>
 hp300h|HP Catseye console, 
-       am, da, db, mir, xhp, 
+       OTbs, am, da, db, mir, xhp, 
        cols#128, lines#51, lm#0, xmc#0, 
        bel=^G, 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, 
@@ -3933,7 +4280,7 @@ hp300h|HP Catseye console,
        vpa=\E&a%p1%dY, 
 # From: Greg Couch <gregc@ernie.berkeley.edu>
 hp9837|hp98720|hp98721|HP 9000/300 workstations, 
-       am, da, db, mir, xhp, 
+       OTbs, am, da, db, mir, xhp, 
        cols#128, it#8, lines#46, lm#0, 
        bel=^G, cbt=\Ei, clear=\E&a0y0C\EJ, cub1=^H, cud1=\EB, 
        cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, 
@@ -3947,17 +4294,17 @@ hp9837|hp98720|hp98721|HP 9000/300 workstations,
 # HP 9845 desktop computer from BRL
 # (hp9845: removed unknown capability :gu: -- esr)
 hp9845|HP 9845, 
-       am, da, db, eo, mir, xhp, 
+       OTbs, am, da, db, eo, mir, xhp, 
        cols#80, lines#21, 
-       clear=\EH\EJ, cuf1=\EC, cup=\E&a%p2%2dc%p1%2dY, cuu1=\EA
-       dch1=\EP, dl1=\EM, ed=\EJ, el=\EK, 
+       OTbc=\ED, clear=\EH\EJ, cuf1=\EC, cup=\E&a%p2%2dc%p1%2dY
+       cuu1=\EA, dch1=\EP, dl1=\EM, ed=\EJ, el=\EK, 
        if=/usr/share/tabset/std, il1=\EL, rmir=\ER, rmso=\E&d@, 
        smir=\EQ, smso=\E&dB, 
 # From: Charles A. Finnell of MITRE <finnell@mitre.org>, developed 07SEP90
 # (hp98550: replaced /usr/share/tabset/9837 with std because <it#8>,<hts=\E1>;
 # added empty <acsc> to avoid warnings re <smacs>/<rmacs> --esr)
 hp98550|hp98550a|HP 9000 Series 300 color console, 
-       am, da, db, mir, xhp, 
+       OTbs, am, da, db, mir, xhp, 
        cols#128, it#8, lines#49, lm#0, 
        acsc=, bel=^G, blink=\E&dA, bold=\E&dJ, cbt=\Ei, civis=\E*dR, 
        clear=\EH\EJ, cnorm=\E*dQ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, 
@@ -3976,7 +4323,7 @@ hp98550|hp98550a|HP 9000 Series 300 color console,
 # (hp700-wy: removed obsolete ":nl=^J:";
 # replaced /usr/share/tabset/hp700-wy with std because <it#8>,<hts=\E1> -- esr)
 hp700-wy|HP700/41 emulating wyse30, 
-       am, bw, mir, msgr, 
+       OTbs, am, bw, mir, msgr, 
        cols#80, it#8, lines#24, xmc#1, 
        cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^V, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, 
@@ -3988,8 +4335,7 @@ hp700-wy|HP700/41 emulating wyse30,
        ri=\Ej, rmir=\Er, rmso=\EG0$<10/>, rmul=\EG0$<10/>, 
        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|70092|HP 700/92, 
+hp70092|hp70092a|hp70092A|HP 700/92, 
        am, da, db, xhp, 
        cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, 
        acsc=0cjgktlrmfn/q\,t5u6v8w7x., bel=^G, blink=\E&dA, 
@@ -4077,7 +4423,7 @@ adm1a|adm1|lsi adm1a,
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, home=^^, 
        ind=^J, 
 adm2|lsi adm2, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, 
@@ -4085,7 +4431,7 @@ adm2|lsi adm2,
        kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, 
 # (adm3: removed obsolete ":ma=^K^P:" -- esr)
 adm3|lsi adm3, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, ind=^J, 
 # The following ADM-3A switch settings are assumed for normal operation:
@@ -4101,19 +4447,19 @@ adm3|lsi adm3,
 #
 # (adm3a: some capabilities merged in from BRl entry -- esr)
 adm3a|lsi adm3a, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
-       bel=^G, clear=\032$<1/>, cr=^M, cub1=^H, cud1=^J, cuf1=^L, 
-       cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, home=^^, 
-       ind=^J, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, rs1=^N, 
+       OTma=^K^P, OTnl=^J, bel=^G, clear=\032$<1/>, cr=^M, cub1=^H, 
+       cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, 
+       cuu1=^K, home=^^, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^L, 
+       kcuu1=^K, rs2=^N, 
 adm3a+|adm3a plus, 
        kbs=^H, use=adm3a, 
 # (adm5: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" & duplicate ":do=^J:" -- esr)
 adm5|lsi adm5, 
        xmc#1, 
        bel=^G, cr=^M, cud1=^J, ed=\EY, el=\ET, kbs=^H, khome=^^, 
-       rmso=\EG, smso=\EG, 
-       use=adm3a+, 
+       rmso=\EG, smso=\EG, use=adm3a+, 
 # A lot of terminals other than adm11s use these.  Wherever you see
 # use=adm+sgr with some of its capabilities disabled, try the
 # disabled ones.  They may well work but not have been documented or
@@ -4129,14 +4475,14 @@ adm+sgr|adm style highlight capabilities,
 # (adm11: <smul>=\EG4 was obviously erroneous because it also said
 # <rev>=\EG4.  Looking at other ADMs confirms this -- esr)
 adm11|LSI ADM-11, 
-       am, hs, 
-       cols#80, lines#24, 
-       bel=^G, blink=\EG2, clear=\E*, cr=^M, cub1=^H, cud1=^J
-       cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K
-       dsl=\Eh, ed=\EY, el=\ET, fsl=\E(\r, home=^^, ht=^I, kbs=^H
-       kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, 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=^^, nel=^M^J, tsl=\EF\E), 
+       OTbs, am, hs, 
+       OTkn#8, cols#80, lines#24, 
+       OTnl=^J, bel=^G, blink=\EG2, clear=\E*, cr=^M, cub1=^H
+       cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c
+       cuu1=^K, dsl=\Eh, ed=\EY, el=\ET, fsl=\E(\r, home=^^, ht=^I
+       kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, 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=^^, nel=^M^J, tsl=\EF\E), 
        use=adm+sgr, 
 # From: Andrew Scott Beals <bandy@lll-crg.ARPA>
 # Corrected by Olaf Siebert <rhialto@polder.ubc.kun.nl>, 11 May 1995
@@ -4184,8 +4530,8 @@ adm11|LSI ADM-11,
 #        20 - 6,8
 #
 adm12|lsi adm12, 
-       am, mir, 
-       cols#80, it#8, lines#24, 
+       OTbs, OTpt, am, mir, 
+       OTug#1, cols#80, it#8, lines#24, 
        bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, 
        dl1=\ER, ed=\EY, el=\ET, home=^^, hts=\E1, ich1=\EQ, il1=\EE, 
@@ -4196,7 +4542,7 @@ adm12|lsi adm12,
        use=adm+sgr, 
 # (adm20: removed obsolete ":kn#7:" -- esr)
 adm20|lear siegler adm20, 
-       am, 
+       OTbs, am, 
        cols#80, it#8, lines#24, 
        bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cuf1=^L, 
        cup=\E=%i%p2%{31}%+%c%p1%{31}%+%c, cuu1=^K, dch1=\EW, 
@@ -4207,13 +4553,13 @@ adm21|lear siegler adm21,
        xmc#1, 
        bel=^G, cr=^M, cud1=^J, dch1=\EW, dl1=30*\ER, ed=\EY, el=\ET, 
        ich1=\EQ, il1=30*\EE, ind=^J, invis@, kbs=^H, kcub1=^H, 
-       kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, 
-       use=adm+sgr, use=adm3a, 
+       kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, use=adm+sgr, 
+       use=adm3a, 
 # (adm22: ":em=:" was an obvious typo for ":ei=:"; also,
 # removed obsolete ":kn#7:ma=j^Jk^P^K^Pl ^R^L^L :";
 # removed bogus-looking \200 from before <cup>. -- esr)
 adm22|lsi adm22, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, 
@@ -4367,7 +4713,7 @@ adm22|lsi adm22,
 # OFF.  If there is no such switch, you have an old adm31 and must use oadm31.
 # (adm31: removed obsolete ":ma=j^Jk^P^K^Pl ^R^L^L :" -- esr)
 adm31|lsi adm31 with sw6 set for underline mode, 
-       am, mir, 
+       OTbs, am, mir, 
        cols#80, lines#24, 
        bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, 
@@ -4380,19 +4726,21 @@ adm31-old|o31|old adm31,
        rmul@, smso=\EG4, smul@, use=adm31, 
 # LSI ADM-36 from Col. George L. Sicherman <gloria!colonel> via BRL
 adm36|LSI ADM36, 
+       OTbs, OTpt, 
+       OTkn#4, 
        if=/usr/lib/tabset/vt100, 
-       is2=\E<\E>\E[6;?2;?7;?8h\E[4;20;?1;?3;?4;?5;?6;?18;?19l, use=vt100, 
+       is2=\E<\E>\E[6;?2;?7;?8h\E[4;20;?1;?3;?4;?5;?6;?18;?19l, 
+       use=vt100, 
 # (adm42: removed obsolete ":ma=^K^P:" -- esr)
 adm42|lsi adm42, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, cbt=\EI, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, 
        cvvis=\EC\E3 \E3(, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, ht=^I, 
        il1=\EE$<270>, ind=^J, invis@, ip=$<6*>, kcub1=^H, kcud1=^J, 
        kcuf1=^L, kcuu1=^K, khome=^^, pad=\177, rmir=\Er, rmul@, 
-       smir=\Eq, smul@, 
-       use=adm+sgr, 
+       smir=\Eq, smul@, use=adm+sgr, 
 # The following termcap for the Lear Siegler ADM-42 leaves the 
 # "system line" at the bottom of the screen blank (for those who 
 # find it distracting otherwise)
@@ -4401,8 +4749,7 @@ adm42-ns|lsi adm-42 with no system line,
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<6>\EF \011, 
        dch1=\EW\EF \011, dl1=\ER\EF \011, ed=\EY\EF \011, 
        el=\ET\EF \011, il1=\EE\EF \011, rmir=\Er\EF \011, 
-       smir=\Eq\EF \011, 
-       use=adm42, 
+       smir=\Eq\EF \011, use=adm42, 
 # ADM 1178 terminal -- rather like an ADM-42.  Manual is dated March 1 1985.
 # The insert mode of this terminal is commented out because it's broken for our
 # purposes in that it will shift the position of every character on the page,
@@ -4507,8 +4854,7 @@ qvt101+|qvt101p|qume qvt 101 PLUS product,
        kf1=^A@\r, kf10=^AI\r, 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=^^, kich1=\EQ, kil1=\EE, mc4=\EA, mc5=\E@, rmso=\E(, 
-       smso=\E0P\E), tbc=\E3, tsl=\Eg\Ef, 
-       use=adm+sgr, 
+       smso=\E0P\E), tbc=\E3, tsl=\Eg\Ef, use=adm+sgr, 
 qvt102|qume qvt 102, 
        cnorm=\E., use=qvt101, 
 # (qvt103: added <rmam>/<smam> based on init string -- esr)
@@ -4544,8 +4890,7 @@ qvt119+|qvt119p|qvt119|qume qvt 119 and 119PLUS terminals,
        kf1=^A@\r, 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=^^, 
        mc4=\EA, mc5=\E@, ri=\EJ, rmir=\Er, smir=\Eq, smul=\EG8, 
-       tbc=\E3, tsl=\Eg\Ef, 
-       use=adm+sgr, 
+       tbc=\E3, tsl=\Eg\Ef, use=adm+sgr, 
 qvt119+-25|qvt119p-25|QVT 119 PLUS with 25 data lines, 
        lines#25, use=qvt119+, 
 qvt119+-w|qvt119p-w|qvt119-w|QVT 119 and 119 PLUS in 132 column mode, 
@@ -4557,8 +4902,7 @@ qvt203|qvt203+|qume qvt 203 Plus,
        dch1=\E[P$<7>, dl1=\E[M$<99>, il1=\E[L$<99>, ind=\n$<30>, 
        ip=$<7>, kf0=\E[29~, kf1=\E[17~, kf2=\E[18~, kf3=\E[19~, 
        kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, 
-       kf9=\E[28~, rmir=\E[4l, smir=\E[4h, 
-       use=qvt103, 
+       kf9=\E[28~, rmir=\E[4l, smir=\E[4h, use=qvt103, 
 qvt203-w|qvt203-w-am|qume qvt 203 PLUS in 132 cols (w/advanced video), 
        cols#132, lines#24, 
        rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt203, 
@@ -4678,7 +5022,7 @@ tvi803|televideo 803,
 # (tvi910: removed obsolete ":ma=^Kk^Ll^R^L:"; added <khome>, <cub1>, <cud1>,
 # <ind>, <hpa>, <vpa>, <am>, <msgr> from SCO entry -- esr)
 tvi910|televideo model 910, 
-       am, msgr, 
+       OTbs, am, msgr, 
        cols#80, it#8, lines#24, xmc#1, 
        bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EY, el=\ET, 
@@ -4722,13 +5066,12 @@ tvi910+|televideo 910+,
        dch1=\EW, dl1=\ER$<33*>, home=^^, ich1=\EQ, il1=\EE$<33*>, 
        kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r, kf4=^AD\r, 
        kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r, 
-       ll=\E=7\s, 
-       use=tvi910, 
+       ll=\E=7\s, use=tvi910, 
 
 # (tvi912: removed obsolete ":ma=^K^P^L :", added  <flash> and
 # <khome> from BRL entry -- esr)
 tvi912|tvi914|tvi920|old televideo 912/914/920, 
-       am, msgr, 
+       OTbs, OTpt, am, msgr, 
        cols#80, it#8, lines#24, xmc#1, 
        bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, 
@@ -4809,15 +5152,14 @@ tvi912cc|tvi912 at cowell college,
 tvi920b|tvi920c|new televideo 920, 
        dl1=\ER$<5*>, il1=\EE$<5*>, kf0=^AI\r, kf1=^A@\r, 
        kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, 
-       kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, 
-       use=tvi912, 
+       kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, use=tvi912, 
 
 # Televideo 921 and variants
 # From: Tim Theisen <tim@cs.wisc.edu> 22 Sept 1995
 # (tvi921: removed :ko=bt: before translation, I see no backtab cap;
 # also added empty <acsc> to suppress tic warning -- esr)
 tvi921|televideo model 921 with sysline same as page & real vi function, 
-       am, hs, xenl, xhp, 
+       OTbs, OTpt, am, hs, xenl, xhp, 
        cols#80, lines#24, xmc#0, 
        acsc=, clear=^Z, cnorm=\E.3, cr=^M, cub1=^H, cud1=^V, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<3/>, cuu1=^K, 
@@ -4827,8 +5169,7 @@ tvi921|televideo model 921 with sysline same as page & real vi function,
        is2=\El\E"\EF1\E.3\017\EA\E<, kbs=^H, kclr=^Z, kcub1=^H, 
        kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER$<1*/>, 
        ked=\EY, kel=\ET, kich1=\EQ, kil1=\EE, nel=^M^J, rmacs=\E%, 
-       rmir=, smacs=\E$, smir=, tsl=\Ef\EG0, 
-       use=adm+sgr, 
+       rmir=, smacs=\E$, smir=, tsl=\Ef\EG0, use=adm+sgr, 
 # without the beeper
 # (tvi92B: removed :ko=bt: before translation, I see no backtab cap;
 # also added empty <acsc> to suppress tic warning -- esr)
@@ -4843,14 +5184,12 @@ tvi92B|televideo model 921 with sysline same as page & real vi function & no bee
        invis@, is2=\El\E"\EF1\E.3\017\EA\E<, kbs=^H, kclr=^Z, 
        kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, 
        kdl1=\ER$<1*/>, ked=\EY, kel=\ET, kich1=\EQ, kil1=\EE, 
-       nel=^M^J, rmacs=\E%, smacs=\E$, tsl=\Ef\EG0, 
-       use=adm+sgr, 
+       nel=^M^J, rmacs=\E%, smacs=\E$, tsl=\Ef\EG0, use=adm+sgr, 
 # (tvi92D: removed :ko=bt: before translation, I see no backtab cap -- esr)
 tvi92D|tvi92B with DTR instead of XON/XOFF & better padding, 
        dl1=\ER$<2*/>, il1=\EE$<2*/>, 
        is2=\El\E"\EF1\E.3\016\EA\E<, kdl1=\ER$<2*/>, 
-       kil1=\EE$<2*/>, 
-       use=tvi92B, 
+       kil1=\EE$<2*/>, use=tvi92B, 
 
 # (tvi924: This used to have <dsl=\Es0>, <fsl=\031>.  I put the new strings
 # in from a BSD termcap file because it looks like they do something the
@@ -4873,7 +5212,8 @@ 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%{49}%+%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,
 #
@@ -5009,7 +5349,7 @@ tvi924|televideo tvi924,
 #
 # (tvi925: BSD has <clear=\E*>.  I got <is2> and <ri> from there -- esr)
 tvi925|televideo 925, 
-       am, bw, hs, ul, 
+       OTbs, am, bw, hs, ul, 
        cols#80, lines#24, xmc#1, 
        bel=^G, cbt=\EI, clear=^Z, cnorm=\E.4, cr=^M, cub1=^H, cud1=^V, 
        cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, 
@@ -5020,8 +5360,7 @@ tvi925|televideo 925,
        ked=\EY, kel=\ET, kf0=^AI\r, kf1=^A@\r, 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=^^, kich1=\EQ, kil1=\EE, ri=\Ej, tbc=\E3, 
-       tsl=\Eh\Ef, 
-       use=adm+sgr, 
+       tsl=\Eh\Ef, use=adm+sgr, 
 # TeleVideo 925 from Mitch Bradley <sun!wmb> via BRL
 # to avoid "magic cookie" standout glitch:
 tvi925-hi|TeleVideo Model 925 with half intensity standout mode, 
@@ -5126,7 +5465,7 @@ tvi925-hi|TeleVideo Model 925 with half intensity standout mode,
 # should be present and all tvi native modes use the same string for this.
 # Finally, note that BSD has cud1=^V. -- esr) 
 tvi950|televideo 950, 
-       am, hs, mir, msgr, xenl, xon, 
+       OTbs, am, hs, mir, msgr, xenl, xon, 
        cols#80, it#8, lines#24, xmc#1, 
        acsc=b\011c\014d\re\ni\013, bel=^G, cbt=\EI, clear=\E*, 
        cr=^M, cub1=^H, cud1=^J, cuf1=^L, 
@@ -5158,8 +5497,7 @@ tvi950|televideo 950,
 tvi950-2p|televideo950 w/2 pages, 
        is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\2\E-07 \011, 
        rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s, 
-       smkx=\El, 
-       use=tvi950, 
+       smkx=\El, use=tvi950, 
 #
 # is for 950 with four pages adds the following:
 #      set 96 line page (\E\\3)
@@ -5173,8 +5511,7 @@ tvi950-2p|televideo950 w/2 pages,
 tvi950-4p|televideo950 w/4 pages, 
        is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\3\E-07 \011, 
        rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s, 
-       smkx=\El, 
-       use=tvi950, 
+       smkx=\El, use=tvi950, 
 #
 # <is2> for reverse video 950 changes the following:
 #      set reverse video (\Ed)
@@ -5183,23 +5520,22 @@ tvi950-4p|televideo950 w/4 pages,
 #
 tvi950-rv|televideo950 rev video, 
        flash=\Ed$<200/>\Eb, 
-       is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\El\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0, use=tvi950, 
+       is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\El\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0, 
+       use=tvi950, 
 
 # tvi950-rv-2p uses the appropriate entries from 950-2p and 950-rv
 tvi950-rv-2p|televideo950 rev video w/2 pages, 
        flash=\Ed$<200/>\Eb, 
        is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\2\E-07\s, 
        rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s, 
-       smkx=\El, 
-       use=tvi950, 
+       smkx=\El, use=tvi950, 
 
 # tvi950-rv uses the appropriate entries from 950-4p and 950-rv
 tvi950-rv-4p|televideo950 rev video w/4 pages, 
        flash=\Ed$<200/>\Eb, 
        is2=\EDF\EC\Eb\EG0\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\3\E-07\s, 
        rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s, 
-       smkx=\El, 
-       use=tvi950, 
+       smkx=\El, use=tvi950, 
 # From: Andreas Stolcke <stolcke@icsi.berkeley.edu>
 # (tvi955: removed obsolete ":ma:=^Vj^Kk^Hh^Ll^^H";
 # removed incorrect (and overridden) ":do=^J:"; fixed broken continuations in
@@ -5211,7 +5547,7 @@ tvi950-rv-4p|televideo950 rev video w/4 pages,
 # If the BSD termcap file was right, <cup=\E=%p1%{32}%+%c%p2%{32}%+%c> would
 # also work.
 tvi955|televideo 955, 
-       mc5i, msgr@, 
+       OTbs, mc5i, msgr@, 
        it#8, xmc@, 
        acsc=0_`RjHkGlFmEnIoPqKsQtMuLvOwNxJ, blink=\EG2, 
        civis=\E.0, cnorm=\E.2, cud1=^V, cup=\E[%i%p1%d;%p2%dH, 
@@ -5228,8 +5564,7 @@ tvi955-w|955-w|televideo955 w/132 cols,
 # use half-intensity as normal mode, full intensity as <bold>
 tvi955-hb|955-hb|televideo955 half-bright, 
        bold=\E[=5l, dim@, is2=\E[=3l\EF1\Ed\EG0\E[=5h\E%\El, 
-       sgr0=\EG0\E[=5h, 
-       use=tvi955, 
+       sgr0=\EG0\E[=5h, use=tvi955, 
 # From: Humberto Appleton <beto@cs.utexas.edu>, 880521 UT Austin
 # (tvi970: removed ":sg#0:"; removed <rmso>=\E[m, <rmul>=\E[m;
 # added <am>/<csr>/<home>/<hpa>/<vpa>/<smcup>/<rmcup> from BRL.
@@ -5237,7 +5572,7 @@ tvi955-hb|955-hb|televideo955 half-bright,
 # it does to the function keys.  I deduced <rmam>/<smam>.
 # also added empty <acsc> to suppress tic warning,  -- esr)
 tvi970|televideo 970, 
-       am, da, db, mir, msgr, 
+       OTbs, OTpt, am, da, db, mir, msgr, 
        cols#80, it#8, lines#24, 
        acsc=, cbt=\E[Z, clear=\E[H\E[2J, csr=\E[%i%p1%d;%p2%dr, 
        cub1=^H, cud1=\ED, cuf1=\E[C, cup=\E[%i%p1%d;%p2%df, 
@@ -5253,7 +5588,8 @@ tvi970|televideo 970,
        smcup=\E[?20l\E[?7h\E[1Q, smir=\E[4h, smso=\E[7m, 
        smul=\E[4m, vpa=\E[%i%p1%dd, 
 tvi970-vb|televideo 970 with visual bell, 
-       flash=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l, use=tvi970, 
+       flash=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l, 
+       use=tvi970, 
 tvi970-2p|televideo 970 with using 2 pages of memory, 
        rmcup=\E[H\E[J\E[V, smcup=\E[U\E[?20l\E[?7h\E[1Q, 
        use=tvi970, 
@@ -5267,7 +5603,7 @@ tvi970-2p|televideo 970 with using 2 pages of memory,
 # 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.
 tvipt|televideo personal terminal, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        cbt=\EI, clear=^Z, cub1=^H, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER$<5*>, 
@@ -5338,15 +5674,15 @@ tvi9065|televideo 9065,
 # Note especially the <il1> function.  <kf4>-<kf6> are really l4-l6 in
 # disguise; <kf7>-<kf9> are really l1-l3.
 vi50|visual 50, 
-       am, da, db, msgr, 
+       OTbs, OTpt, am, da, db, msgr, 
        cols#80, it#8, lines#24, 
-       bel=^G, cbt=\Ez$<4/>, clear=\EH\EJ, cr=^M, cub1=^H, cud1=\EB
-       cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA
-       dl1=\EM$<3*/>, ed=\EJ, el=\EK$<16/>, home=\EH, ht=^I
-       il1=\EL, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC
-       kcuu1=\EA, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\EV, kf5=\EE
-       kf6=\E], kf7=\EL, kf8=\Ev, kf9=\EM, khome=\EH, nel=^M^J
-       ri=\EI, rmso=\ET, rmul=\EW, smso=\EU, smul=\ES, 
+       OTnl=^J, bel=^G, cbt=\Ez$<4/>, clear=\EH\EJ, cr=^M, cub1=^H
+       cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c
+       cuu1=\EA, dl1=\EM$<3*/>, ed=\EJ, el=\EK$<16/>, home=\EH
+       ht=^I, il1=\EL, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB
+       kcuf1=\EC, kcuu1=\EA, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\EV
+       kf5=\EE, kf6=\E], kf7=\EL, kf8=\Ev, kf9=\EM, khome=\EH
+       nel=^M^J, ri=\EI, rmso=\ET, rmul=\EW, smso=\EU, smul=\ES, 
 # this one was BSD & SCO's vi50
 vi50adm|visual 50 in adm3a mode, 
        am, msgr, 
@@ -5356,9 +5692,9 @@ vi50adm|visual 50 in adm3a mode,
        ed=\Ek, el=\EK, home=\EH, ht=^I, il1=\EL, ind=^J, kbs=^H, 
        kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, 
        rmso=\ET, smso=\EU, 
-# From: Jeff Siegal <jbs@athena.mit.edu>
+# From: Jeff Siegal <jbs@quiotix.com>
 vi55|Visual 55, 
-       am, mir, msgr, 
+       OTbs, am, mir, msgr, 
        cols#80, it#8, lines#24, 
        clear=\Ev, csr=\E_%p1%{65}%+%c%p2%{65}%+%c, cub1=^H, 
        cud1=^J, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, 
@@ -5378,8 +5714,8 @@ vi55|Visual 55,
 # Supposedly "4*" delays should be used for <il1>, <ed>, <clear>, <dch1>,
 # and <dl1> strings, but we seem to get along fine without them.
 vi200|visual 200, 
-       am, mir, msgr, 
-       cols#80, it#8, lines#24, 
+       OTbs, OTpt, am, mir, msgr, 
+       OTkn#10, cols#80, it#8, lines#24, 
        acsc=, bel=^G, cbt=\Ez, clear=\Ev, cnorm=\Ec, cr=^M, cub1=^H, 
        cud1=^J, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, 
        cuu1=\EA, cvvis=\Ed, dch1=\EO, dim=\E4, dl1=\EM, ed=\Ey, 
@@ -5536,8 +5872,7 @@ wy30-mc|wyse30-mc|wyse 30 with magic cookies,
        rmcup=\EG0, rmso=\EG0, 
        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, 
+       smso=\EG4, use=wy30, use=adm+sgr, 
 #      The mandatory pause used by <flash> does not work with
 #      older versions of terminfo.  If you see this effect then
 #      unset xon and delete the / from the delay.
@@ -5593,16 +5928,15 @@ wy50-mc|wyse50-mc|wyse 50 with magic cookies,
        rmacs=\EG0\EH\003, rmcup=\EG0, rmso=\EG0, 
        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, 
+       smso=\EGt, use=wy50, use=adm+sgr, 
 wy50-vb|wyse50-vb|wyse 50 visible bell, 
        bel@, use=wy50, 
 wy50-w|wyse50-w|wyse 50 132-column, 
        cols#132, lw#7, nlab#16, wsl#97, 
-       cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>, use=wy50, 
+       cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>, 
+       use=wy50, 
 wy50-wvb|wyse50-wvb|wyse 50 132-column visible bell, 
-       bel@, 
-       use=wy50-w, 
+       bel@, use=wy50-w, 
 
 #
 #      The Wyse 350 is a Wyse 50 with color.
@@ -5652,16 +5986,15 @@ wy350|wyse350|Wyse 350,
        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, 
+       smir=\Eq, smln=\EA10, tbc=\E0, tsl=\EF, use=adm+sgr, 
 wy350-vb|wyse350-vb|wyse 350 visible bell, 
        bel@, use=wy350, 
 wy350-w|wyse350-w|wyse 350 132-column, 
        cols#132, lw#7, nlab#16, wsl#97, 
-       cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>, use=wy350, 
+       cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>, 
+       use=wy350, 
 wy350-wvb|wyse350-wvb|wyse 350 132-column visible bell, 
-       bel@, 
-       use=wy350-w, 
+       bel@, use=wy350-w, 
 #
 #      This terminfo description is untested.
 #      The wyse100 emulates an adm31, so the adm31 entry should work.
@@ -5675,8 +6008,7 @@ wy100|wyse 100,
        invis@, is2=\Eu\E0, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, 
        kcuu1=^K, 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=\E{, 
-       rmir=\Er, smir=\Eq, tsl=\EF, 
-       use=adm+sgr, 
+       rmir=\Er, smir=\Eq, tsl=\EF, use=adm+sgr, 
 #
 #      The Wyse 120/150 has most of the features of the Wyse 60.
 #      This terminal does not need padding up to 9600 baud!
@@ -5712,8 +6044,7 @@ wy120|wyse120|wy150|wyse150|Wyse 120/150,
        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, 
-       use=adm+sgr, 
+       tbc=\E0, tsl=\EF, use=adm+sgr, 
 #
 wy120-w|wyse120-w|wy150-w|wyse150-w|wyse 120/150 132-column, 
        cols#132, lw#7, nlab#16, wsl#97, 
@@ -5729,12 +6060,10 @@ wy120-25-w|wyse120-25-w|wy150-25-w|wyse150-25-w|wyse 120/150 132-column 25-lines
        pln@, rs3=\EwG\Ee)$<100>, use=wy120-w, 
 #
 wy120-vb|wyse120-vb|wy150-vb|wyse150-vb|Wyse 120/150 visible bell, 
-       bel@, 
-       use=wy120, 
+       bel@, use=wy120, 
 #
 wy120-w-vb|wy120-wvb|wyse120-wvb|wy150-w-vb|wyse150-w-vb|Wyse 120/150 132-column visible bell, 
-       bel@, 
-       use=wy120-w, 
+       bel@, use=wy120-w, 
 #
 #      The Wyse 60 is like the Wyse 50 but with more padding.
 #      The reset strings are slow and the pad times very depending
@@ -5795,8 +6124,7 @@ wy60|wyse60|Wyse 60,
        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, 
-       use=adm+sgr, 
+       tbc=\E0, tsl=\EF, use=adm+sgr, 
 #
 wy60-w|wyse60-w|wyse 60 132-column, 
        cols#132, lw#7, nlab#16, wsl#97, 
@@ -5815,14 +6143,12 @@ wy60-42|wyse60-42|wyse 60 80-column 42-lines,
        clear=\E+$<260>, cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<2>, 
        dch1=\EW$<16>, dl1=\ER$<11>, ed=\Ey$<260>, il1=\EE$<11>, 
        ind=\n$<9>, ip=$<5>, is1=\EcB2\EcC3, nel=\r\n$<6>, 
-       ri=\Ej$<10>, rs3=\Ee*$<150>, 
-       use=wy60, 
+       ri=\Ej$<10>, rs3=\Ee*$<150>, use=wy60, 
 wy60-42-w|wyse60-42-w|wyse 60 132-column 42-lines, 
        cols#132, lw#7, nlab#16, wsl#97, 
        clear=\E+$<260>, cup=\Ea%i%p1%dR%p2%dC$<2>, 
        dch1=\EW$<19>, ed=\Ey$<260>, home=\036$<2>, ip=$<6>, 
-       nel=\r\n$<11>, rs2=\EeF$<150>\E`;$<150>, 
-       use=wy60-42, 
+       nel=\r\n$<11>, rs2=\EeF$<150>\E`;$<150>, use=wy60-42, 
 #
 wy60-43|wyse60-43|wyse 60 80-column 43-lines, 
        lh@, lines#43, lw@, nlab@, 
@@ -5834,8 +6160,7 @@ wy60-43-w|wyse60-43-w|wyse 60 132-column 43-lines,
 wy60-vb|wyse60-vb|Wyse 60 visible bell, 
        bel@, use=wy60, 
 wy60-w-vb|wy60-wvb|wyse60-wvb|Wyse 60 132-column visible bell, 
-       bel@, 
-       use=wy60-w, 
+       bel@, use=wy60-w, 
 
 #      The Wyse-99GT looks at lot like the Wyse 60 except that it
 #      does not have the 42/43 line mode.  In the Wyse-60 the "lines"
@@ -5858,13 +6183,13 @@ wy99gt|wyse99gt|Wyse 99gt,
        el=\Et$<5>, flash=\E`8$<100/>\E`9, ht=\011$<1>, 
        il1=\EE$<4>, ind=\n$<4>, ip=$<2>, is3=\Ew0$<20>, nel@, 
        ri=\Ej$<3>, rmcup=\Ew0, rs2=\E`\:$<150>, smcup=\Ew1, 
-       u0=\E~>\E8, u1=\E[42h, 
-       use=wy60, 
+       u0=\E~>\E8, u1=\E[42h, use=wy60, 
 #
 wy99gt-w|wyse99gt-w|wyse 99gt 132-column, 
        cols#132, lw#7, nlab#16, wsl#97, 
        clear=\E+$<160>, cup=\Ea%i%p1%dR%p2%dC$<2>, 
-       dch1=\EW$<9>, ed=\Ey$<160>, ip=$<4>, rs2=\E`;$<150>, use=wy99gt, 
+       dch1=\EW$<9>, ed=\Ey$<160>, ip=$<4>, rs2=\E`;$<150>, 
+       use=wy99gt, 
 #
 wy99gt-25|wyse99gt-25|wyse 99gt 80-column 25-lines, 
        lh@, lines#25, lw@, nlab@, 
@@ -5878,8 +6203,7 @@ wy99gt-vb|wyse99gt-vb|Wyse 99gt visible bell,
        bel@, use=wy99gt, 
 #
 wy99gt-w-vb|wy99gt-wvb|wyse99gt-wvb|Wyse 99gt 132-column visible bell, 
-       bel@, 
-       use=wy99gt-w, 
+       bel@, use=wy99gt-w, 
 
 # Can't set tabs! Other bugs (ANSI mode only):
 # - can't redefine function keys (anyway, key redefinition in ANSI mode
@@ -5929,8 +6253,7 @@ wy99-ansi|Wyse WY-99GT in ansi mode (int'l PC keyboard),
 #   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, 
+       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;
@@ -5970,8 +6293,7 @@ wy99f|wy99fgt|wy-99fgt|Wyse WY-99GT (int'l PC keyboard),
 # 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, 
+       hts=\E1, tbc=\E0, use=wy99f, 
 
 #
 #      The Wyse 160 is combination of the WY-60 and the WY-99gt.
@@ -6022,8 +6344,7 @@ wy160|wyse160|Wyse 160,
        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, 
-       use=adm+sgr, 
+       tbc=\E0, tsl=\EF, use=adm+sgr, 
 #
 wy160-w|wyse160-w|wyse 160 132-column, 
        cols#132, lw#7, nlab#16, wsl#90, 
@@ -6041,13 +6362,11 @@ wy160-42|wyse160-42|wyse 160 80-column 42-lines,
        lines#42, 
        clear=\E+$<50>, dl1=\ER$<2>, ed=\Ey$<50>, il1=\EE$<2>, 
        ind=\n$<2>, is1=\EcB2\EcC3, nel=\r\n$<2>, ri=\Ej$<2>, 
-       rs3=\Ee*$<150>, 
-       use=wy160, 
+       rs3=\Ee*$<150>, use=wy160, 
 wy160-42-w|wyse160-42-w|wyse 160 132-column 42-lines, 
        cols#132, lw#7, nlab#16, wsl#90, 
        cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<8>, ip=$<3>, 
-       rs2=\EeF$<150>\E`;$<150>, 
-       use=wy160-42, 
+       rs2=\EeF$<150>\E`;$<150>, use=wy160-42, 
 #
 wy160-43|wyse160-43|wyse 160 80-column 43-lines, 
        lh@, lines#43, lw@, nlab@, 
@@ -6059,8 +6378,7 @@ wy160-43-w|wyse160-43-w|wyse 160 132-column 43-lines,
 wy160-vb|wyse160-vb|Wyse 160 visible bell, 
        bel@, use=wy160, 
 wy160-w-vb|wy160-wvb|wyse160-wvb|Wyse 160 132-column visible bell, 
-       bel@, 
-       use=wy160-w, 
+       bel@, use=wy160-w, 
 #
 #      The Wyse 75 is a vt100 lookalike without advanced video.
 #
@@ -6188,8 +6506,53 @@ wy85-w|wyse85-w|wyse 85 in 132-column mode,
 #
 #      Wyse 85 in 132-column mode with visual bell.
 wy85-wvb|wyse85-wvb|wyse 85 with visible bell 132-columns, 
-       bel@, 
-       use=wy85-w, 
+       bel@, use=wy85-w, 
+
+# From: Kevin Turner <kevint@aracnet.com>, 12 Jul 1998
+# This copes with an apparent firmware bug in the wy85.  He writes:
+# "What I did was change leave the terminal cursor keys set to Normal
+# (instead of application), and change \E[ to \233 for all the keys in
+# terminfo. At one point, I found some reference indicating that this
+# terminal bug (not sending \E[) was acknowledged by Wyse (so it's not just
+# me), but I can't find that and the server under my bookmark to "Wyse 
+# Technical" isn't responding.  So there's the question of wether the wy85
+# terminfo should reflect the manufactuer's intended behaviour of the terminal
+# or the actual."
+wy85-8bit|wyse85-8bit|wyse 85 in 8-bit mode, 
+       am, hs, mc5i, mir, msgr, xenl, xon, 
+       cols#80, it#8, lines#24, wsl#80, 
+       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
+       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, 
+       clear=\E[H\E[J$<110>, 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$<1>, cuu=\E[%p1%dA, cuu1=\E[A, 
+       dch=\E[%p1%dP$<3*>, dch1=\E[P$<3>, dim=\E[2m, 
+       dl=\E[%p1%dM$<3*>, dl1=\E[M$<3>, dsl=\E[40l, 
+       ech=\E[%p1%dX, ed=\E[J$<110>, el=\E[K$<1>, el1=\E[1K, 
+       enacs=\E)0, flash=\E[30h\E\,\E[30l$<300>, 
+       fsl=\E[1;24r\E8, home=\E[H, ht=\011$<1>, hts=\EH, 
+       ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>, il1=\E[L$<5>, 
+       ind=\n$<3>, invis=\E[8m, ip=$<3>, is1=\E[62;1"p\E[?5W, 
+       is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h$<16>, 
+       is3=\E>\E(B\E)0\017\E[m, ka1=\EOw, ka3=\EOy, kb2=\EOu, 
+       kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\233D, kcud1=\233B, 
+       kcuf1=\233C, kcuu1=\233A, kdch1=\2333~, kent=\EOM, 
+       kf1=\EOP, kf10=\23321~, kf11=\23323~, kf12=\23324~, 
+       kf13=\23325~, kf14=\23326~, kf15=\23328~, kf16=\23329~, 
+       kf17=\23331~, kf18=\23332~, kf19=\23333~, kf2=\EOQ, 
+       kf20=\23334~, kf3=\EOR, kf4=\EOS, kf6=\23317~, kf7=\23318~, 
+       kf8=\23319~, kf9=\23320~, kfnd=\2331~, khlp=\23328~, 
+       khome=\23326~, kich1=\2332~, knp=\2336~, kpp=\2335~, 
+       kslt=\2334~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, 
+       mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM$<3>, 
+       rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[m, 
+       rmul=\E[m, rs1=\E[13l\E[3l\E!p, rs2=\E[35h\E[?3l$<70>, 
+       rs3=\E[?5l, sc=\E7, 
+       sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;+m%?%p9%t\016%e\017%;, 
+       sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h, 
+       smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, 
+       tsl=\E[40h\E7\E[25;%i%p1%dH, 
 #
 #      Wyse 185 emulating a vt320 7 bit mode.
 #
@@ -6242,7 +6605,8 @@ wy185|wyse185|wyse 185,
 #      Wyse 185 with 24 data lines and top status (terminal status)
 wy185-24|wyse185-24|wyse 185 with 24 data lines, 
        hs@, 
-       dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@, use=wy185, 
+       dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@, 
+       use=wy185, 
 #
 #      Wyse 185 with visual bell.
 wy185-vb|wyse185-vb|wyse 185+flash, 
@@ -6252,8 +6616,7 @@ wy185-vb|wyse185-vb|wyse 185+flash,
 wy185-w|wyse185-w|wyse 185 in 132-column mode, 
        cols#132, wsl#132, 
        dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>, 
-       ip=$<7>, rs2=\E[35h\E[?3h, 
-       use=wy185, 
+       ip=$<7>, rs2=\E[35h\E[?3h, use=wy185, 
 #
 #      Wyse 185 in 132-column mode with visual bell.
 wy185-wvb|wyse185-wvb|wyse 185+flash+132 cols, 
@@ -6292,8 +6655,7 @@ wy325|wyse325|Wyse epc,
        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, 
-       use=adm+sgr, 
+       tsl=\EF, use=adm+sgr, 
 
 #
 # lines 24  columns 80  vb 
@@ -6324,8 +6686,7 @@ wy325-25w|wyse325-25w|wy325 132 columns,
 # lines 25  columns 132  vb 
 #
 wy325-w-vb|wy325-wvb|wyse325-wvb|wyse-325 wide mode reverse video, 
-       bel@, 
-       use=wy325-w, 
+       bel@, use=wy325-w, 
 
 #
 # lines 42  columns 80
@@ -6343,8 +6704,7 @@ wy325-42w|wyse325-42w|wyse-325 42 lines wide mode,
 # lines 42  columns 132  vb 
 #
 wy325-42w-vb|wy325-42wvb|wyse-325 42 lines wide mode visual bell, 
-       bel@, 
-       use=wy325-w, 
+       bel@, use=wy325-w, 
 #
 # lines 43  columns 80
 #
@@ -6361,8 +6721,7 @@ wy325-43w|wyse325-43w|wyse-325 43 lines wide mode,
 # lines 43  columns 132  vb 
 #
 wy325-43w-vb|wy325-43wvb|wyse-325 43 lines wide mode visual bell, 
-       bel@, 
-       use=wy325-w, 
+       bel@, use=wy325-w, 
 
 #      Wyse 370 -- 24 line screen with status line.
 #
@@ -6427,8 +6786,7 @@ wy370|wyse370|wy370-101k|Wyse 370 with 101 key keyboard,
        kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf2=\E[?3i, 
        kf3=\E[2i, kf4=\E[@, kf5=\E[M, kf6=\E[17~, kf7=\E[18~, 
        kf8=\E[19~, kf9=\E[20~, khome=\E[H, kich1=\EOP, kil1=\EOP, 
-       knp=\E[U, kpp=\E[V, 
-       use=wy370-nk, 
+       knp=\E[U, kpp=\E[V, use=wy370-nk, 
 #
 #      Function key set for the VT-320 (and wy85) compatible keyboard
 #
@@ -6451,8 +6809,7 @@ wy370-EPC|Wyse 370 with 102 key keyboard,
        kcuu1=\E[A, kend=\E[1~, kent=\EOM, kf1=\EOP, kf10=\E[21~, 
        kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, 
        kf5=\E[M, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
-       khome=\E[H, kich1=\E[2~, knp=\E[U, kpp=\E[V, 
-       use=wy370-nk, 
+       khome=\E[H, kich1=\E[2~, knp=\E[U, kpp=\E[V, use=wy370-nk, 
 #
 #      Wyse 370 with visual bell.
 wy370-vb|Wyse 370 with visible bell, 
@@ -6465,8 +6822,7 @@ wy370-w|Wyse 370 in 132-column mode,
 #
 #      Wyse 370 in 132-column mode with visual bell.
 wy370-wvb|Wyse 370 with visible bell 132-columns, 
-       flash=\E[30h\E\,\E[30l$<300>, 
-       use=wy370-w, 
+       flash=\E[30h\E\,\E[30l$<300>, use=wy370-w, 
 wy370-rv|Wyse 370 reverse video, 
        rs3=\E[32h\E[?5h, use=wy370, 
 #
@@ -6487,8 +6843,7 @@ wy99gt-tek|Wyse 99gt Tektronix 4010/4014 emulator,
 #
 wy160-tek|Wyse 160 Tektronix 4010/4014 emulator, 
        cup=\035%{3103}%{91}%p1%*%-%Py%p2%{55}%*%Px%gy%{128}%/%{31}%&%{32}%+%c%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c%gy%{004}%/%{31}%&%{96}%+%c%gx%{128}%/%{31}%&%{32}%+%c%gx%{004}%/%{31}%&%{64}%+%c\037, 
-       home=^]8`g @\037, 
-       use=wy99gt-tek, 
+       home=^]8`g @\037, use=wy99gt-tek, 
 #
 #      Wyse 370 Tektronix 4010/4014 emulator,
 #
@@ -6573,7 +6928,8 @@ wy520|wyse520|wyse 520,
 #       Wyse 520 with 24 data lines and status (terminal status)
 wy520-24|wyse520-24|wyse 520 with 24 data lines, 
        hs@, 
-       dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@, use=wy520, 
+       dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@, 
+       use=wy520, 
 #
 #       Wyse 520 with visual bell.
 wy520-vb|wyse520-vb|wyse 520 with visible bell, 
@@ -6583,13 +6939,11 @@ wy520-vb|wyse520-vb|wyse 520 with visible bell,
 wy520-w|wyse520-w|wyse 520 in 132-column mode, 
        cols#132, wsl#132, 
        dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>, 
-       ip=$<7>, rs2=\E[35h\E[?3h, 
-       use=wy520, 
+       ip=$<7>, rs2=\E[35h\E[?3h, use=wy520, 
 #
 #       Wyse 520 in 132-column mode with visual bell.
 wy520-wvb|wyse520-wvb|wyse 520 with visible bell 132-columns, 
-       flash=\E[30h\E\,\E[30l$<100>, 
-       use=wy520-w, 
+       flash=\E[30h\E\,\E[30l$<100>, use=wy520-w, 
 #
 #
 #       Wyse 520 emulating a vt420 7 bit mode.
@@ -6608,81 +6962,87 @@ wy520-epc|wyse520-epc|wyse 520 with EPC keyboard,
 #
 #       Wyse 520 with 24 data lines and status (terminal status)
 #       with EPC keyboard.
-wy520-epc-24|wyse520-pc-24|wyse 520 with 24 data lines, 
+wy520-epc-24|wyse520-pc-24|wyse 520 with 24 data lines and EPC keyboard
        hs@, 
-       dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@, use=wy520-epc, 
+       dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@, 
+       use=wy520-epc, 
 #
 #       Wyse 520 with visual bell.
-wy520-epc-vb|wyse520-pc-vb|wyse 520 with visible bell, 
-       flash=\E[30h\E\,\E[30l$<100>, 
-       use=wy520-epc, 
+wy520-epc-vb|wyse520-pc-vb|wyse 520 with visible bell and EPC keyboard, 
+       flash=\E[30h\E\,\E[30l$<100>, use=wy520-epc, 
 #
 #       Wyse 520 in 132-column mode.
 wy520-epc-w|wyse520-epc-w|wyse 520 in 132-column mode with EPC keyboard, 
        cols#132, wsl#132, 
        dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>, 
-       ip=$<7>, rs2=\E[35h\E[?3h, 
-       use=wy520-epc, 
+       ip=$<7>, rs2=\E[35h\E[?3h, use=wy520-epc, 
 #
 #       Wyse 520 in 132-column mode with visual bell.
-wy520-epc-wvb|wyse520-p-wvb|wyse 520 with visible bell 132-columns, 
-       flash=\E[30h\E\,\E[30l$<100>, 
-       use=wy520-epc-w, 
+wy520-epc-wvb|wyse520-p-wvb|wyse 520 with visible bell 132-columns and EPC keyboard, 
+       flash=\E[30h\E\,\E[30l$<100>, use=wy520-epc-w, 
 #
 #       Wyse 520 in 80-column, 36 lines
 wy520-36|wyse520-36|wyse 520 with 36 data lines, 
        hs@, 
        lines#36, 
-       dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@, use=wy520, 
+       dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@, 
+       use=wy520, 
 #
 #       Wyse 520 in 80-column, 48 lines
 wy520-48|wyse520-48|wyse 520 with 48 data lines, 
        hs@, 
        lines#48, 
-       dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@, use=wy520, 
+       dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@, 
+       use=wy520, 
 #
 #       Wyse 520 in 132-column, 36 lines
 wy520-36w|wyse520-36w|wyse 520 with 132 columns and 36 data lines, 
        cols#132, wsl#132, 
        rs2=\E[?3h, 
-       rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|, use=wy520-36, 
+       rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|, 
+       use=wy520-36, 
 #
 #       Wyse 520 in 132-column, 48 lines
 wy520-48w|wyse520-48w|wyse 520 with 48 data lines, 
        cols#132, wsl#132, 
        rs2=\E[?3h, 
-       rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|, use=wy520-48, 
+       rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|, 
+       use=wy520-48, 
 #
 #
 #       Wyse 520 in 80-column, 36 lines with EPC keyboard
 wy520-36pc|wyse520-36pc|wyse 520 with 36 data lines and EPC keyboard, 
        hs@, 
        lines#36, 
-       dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@, use=wy520-epc, 
+       dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@, 
+       use=wy520-epc, 
 #
 #       Wyse 520 in 80-column, 48 lines with EPC keyboard
 wy520-48pc|wyse520-48pc|wyse 520 with 48 data lines and EPC keyboard, 
        hs@, 
        lines#48, 
-       dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@, use=wy520-epc, 
+       dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@, 
+       use=wy520-epc, 
 #
 #       Wyse 520 in 132-column, 36 lines with EPC keyboard
 wy520-36wpc|wyse520-36wpc|wyse 520 with 36 data lines and EPC keyboard, 
        cols#132, wsl#132, 
        rs2=\E[?3h, 
-       rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|, use=wy520-36pc, 
+       rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|, 
+       use=wy520-36pc, 
 #
 #       Wyse 520 in 132-column, 48 lines with EPC keyboard
-wy520-48wpc|wyse520-48wpc|wyse 520 with 48 data lines, 
+wy520-48wpc|wyse520-48wpc|wyse 520 with 48 data lines and EPC keyboard
        cols#132, wsl#132, 
        rs2=\E[?3h, 
-       rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|, use=wy520-48pc, 
+       rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|, 
+       use=wy520-48pc, 
 
 # From: John Gilmore <hoptoad!gnu@lll-crg.arpa>
 # (wyse-vp: removed <if=/usr/share/tabset/wyse-adds>, there's no such
 # file and we don't know what <hts> is -- esr)
 wyse-vp|Wyse 50 in ADDS Viewpoint emulation mode with "enhance" on, 
-       am, 
+       OTbs, am, 
        cols#80, it#8, lines#24, 
        bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EW, 
@@ -6700,13 +7060,13 @@ wy75ap|wyse75ap|wy-75ap|wyse-75ap|Wyse WY-75 Applications and Cursor keypad,
 
 # From: Eric Freudenthal <freudent@eric.ultra.nyu.edu>
 wy100q|Wyse 100 for Quotron, 
+       OTbs, 
        cols#80, lines#24, xmc#1, 
        cbt=\EI, clear=^Z, cub1=^H, cud1=^J, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, 
        dl1=\ER, ed=\EY, el=\ET, home=^^, il1=\EE, invis@, 
        is2=\E`\:\0\EC\EDF\E0\E'\E(\EA21, kcub1=^H, kcud1=^J, 
-       kcuf1=^L, kcuu1=^K, ri=\Ej, rmir=\Er, smir=\Eq, 
-       use=adm+sgr, 
+       kcuf1=^L, kcuu1=^K, ri=\Ej, rmir=\Er, smir=\Eq, use=adm+sgr, 
 
 #### Kermit terminal emulations
 #
@@ -6719,6 +7079,7 @@ wy100q|Wyse 100 for Quotron,
 # (kermit: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr)
 # From: greg small <gts@populi.berkeley.edu> 9-25-84
 kermit|standard kermit, 
+       OTbs, 
        cols#80, lines#24, 
        clear=\EE, cub1=^H, cuf1=\EC, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, 
@@ -6726,7 +7087,8 @@ kermit|standard kermit,
        kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, 
 kermit-am|standard kermit plus auto-margin, 
        am, 
-       is2=K1 Standard Kermit plus Automatic Margins\n, use=kermit, 
+       is2=K1 Standard Kermit plus Automatic Margins\n, 
+       use=kermit, 
 # IBMPC Kermit 1.2.
 # Bugs: <ed>, <el>: do not work except at beginning of line!  <clear> does
 # not work, but fake with :cl=\EH\EJ (since :cd=\EJ: works at beginning of
@@ -6748,8 +7110,7 @@ pckermit120|UCB IBMPC Kermit 1.20,
        cud1=\EB, cvvis=\EO\Eq\EEK3, dch1=\EN, dl1=\EM, ht=^I, 
        il1=\EL, 
        is2=\EO\Eq\EJ\EY7 K3 UCB IBMPC Kermit 1.20  12-19-84\n, 
-       rmir@, rmso=\Eq, smir@, smso=\Ep, 
-       use=kermit, 
+       rmir@, rmso=\Eq, smir@, smso=\Ep, use=kermit, 
 # MS-DOS Kermit 2.27 for the IBMPC
 # Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi.
 # Cannot use line 25, now acts funny like ansi special scrolling region.
@@ -6759,7 +7120,7 @@ pckermit120|UCB IBMPC Kermit 1.20,
 # (msk227: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr)
 # From: greg small <gts@populi.berkeley.edu> 3-17-85
 msk227|mskermit227|MS-DOS Kermit 2.27 for the IBMPC, 
-       am@, 
+       OTbs, am@, 
        cols#80, it#8, lines#24, 
        clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, 
@@ -6773,7 +7134,8 @@ msk227|mskermit227|MS-DOS Kermit 2.27 for the IBMPC,
 msk227am|mskermit227am|UCB MS-DOS Kermit 2.27 with automatic margins, 
        am, 
        cvvis=\EO\Eq\EG\EvK5, 
-       is2=\EO\Eq\EG\Ev\EJ\EY7 K5 MS Kermit 2.27 +automatic margins 3-17-85\n, use=msk227, 
+       is2=\EO\Eq\EG\Ev\EJ\EY7 K5 MS Kermit 2.27 +automatic margins 3-17-85\n, 
+       use=msk227, 
 # MS-DOS Kermit 2.27 UCB 227.14 for the IBM PC
 # Automatic margins now default.  Use ansi <sgr> for highlights.
 # Define function keys.
@@ -6785,8 +7147,7 @@ msk22714|mskermit22714|UCB MS-DOS Kermit 2.27 UCB 227.14 IBM PC,
        is2=\EO\Eq\EG\Ev\EJ\EY7 K6 MS Kermit 2.27 UCB 227.14 IBM PC 3-17-85\n, 
        kf0=\E0, kf1=\E1, kf2=\E2, kf3=\E3, kf4=\E4, kf5=\E5, kf6=\E6, 
        kf7=\E7, kf8=\E8, kf9=\E9, rev=\E[7m, rmso=\E[m, rmul=\E[m, 
-       sgr0=\E[m, smso=\E[1m, smul=\E[4m, 
-       use=mskermit227, 
+       sgr0=\E[m, smso=\E[1m, smul=\E[4m, use=mskermit227, 
 # This was designed for a VT320 emulator, but it is probably a good start
 # at support for the VT320 itself.
 # Please send changes with explanations to bug-gnu-emacs@prep.ai.mit.edu.
@@ -6812,7 +7173,7 @@ vt320-k3|MS-Kermit 3.00's vt320 emulation,
        kpp=\E[5~, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, nel=^M^J, rc=\E8, 
        rev=\E[7m, ri=\EM, rin=\E[%p1%dL, rmacs=\E(B, rmam=\E[?7l, 
        rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, 
-       rs1=\E(B\E)B\E>\E F\E[4;20l\E[12h\E[?1;5;6;38;42l\E[?7;25h\E4i\E?4i\E[m\E[r\E[2$~, 
+       rs1=\E(B\E)B\E>\E F\E[4;20l\E[12h\E[?1;5;6;38;42l\E[?7;25h\E[4i\E[?4i\E[m\E[r\E[2$~, 
        sc=\E7, sgr0=\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h, 
        smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, 
        tsl=\E[1$}\r\E[K, vpa=\E[%i%p1%dd, 
@@ -6910,16 +7271,14 @@ avatar0|avatar terminal emulator level 0,
        ind=^J, invis=^V^A\0, rep=\031%p1%c%p2%d, rev=^A^Vp, 
        rs2=^L, 
        sgr=\026\001%{0}%?%p1%t%{112}%|%;%?%p2%t%{1}%|%;%?%p3%t%{112}%|%;%?%p4%t{128}%|%;%?%p6%t%{16}%|%;, 
-       sgr0=^V^A^G, smacs=, smso=^A^Vp, smul=^V^A, 
-       use=klone+acs, 
+       sgr0=^V^A^G, smacs=, smso=^A^Vp, smul=^V^A, use=klone+acs, 
 # From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995
 avatar0+|avatar terminal emulator level 0+, 
        dch1=^V^N, rmir=\026\n\0\0\0\0, smir=^V^I, use=avatar0, 
 # From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995
 avatar|avatar1|avatar terminal emulator level 1, 
        civis=^V'^B, cnorm=^V'^A, cvvis=^V^C, dl1=^V-, il1=^V+, 
-       rmam=^V", rmir=^V^P, smam=^V$, 
-       use=avatar0+, 
+       rmam=^V", rmir=^V^P, smam=^V$, use=avatar0+, 
 
 #### RBcomm
 #
@@ -6947,14 +7306,12 @@ rbcomm-nam|IBM PC with RBcomm without autowrap,
        am@, 
        bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J, 
        is2=\017\035\E(B\E)0\E[?7l\E[?3l\E[>8g, kbs=^H, 
-       kcub1=^H, kcud1=^J, nel=^M^J, 
-       use=rbcomm, 
+       kcub1=^H, kcud1=^J, nel=^M^J, use=rbcomm, 
 rbcomm-w|IBM PC with RBcomm in 132 column mode, 
        cols#132, 
        bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J, 
        is2=\017\035\E(B\E)0\E[?7h\E[?3h\E[>8g, kbs=^H, 
-       kcub1=^H, kcud1=^J, nel=^M^J, 
-       use=rbcomm, 
+       kcub1=^H, kcud1=^J, nel=^M^J, use=rbcomm, 
 
 ######## OLDER TERMINAL TYPES
 #
@@ -6991,8 +7348,7 @@ att2300|sv80|AT&T 2300 Video Information Terminal 80 column mode,
        rev=\E[7m, rmir=\E[4l, rmso=\E[m, sgr0=\E[m, smir=\E[4h, 
        smso=\E[7m, 
 att2350|AT&T 2350 Video Information Terminal 80 column mode, 
-       mc0@, mc4@, mc5@, 
-       use=att2300, 
+       mc0@, mc4@, mc5@, use=att2300, 
 
 # Must setup RETURN KEY - CR, REC'VD LF - INDEX.
 # Seems upward compatible with vt100, plus ins/del line/char.
@@ -7032,6 +7388,7 @@ att4410v1-w|att5410v1-w|tty5410v1-w|AT&T 4410/5410 132 columns - version 1,
        is1=\E[?3h\E)0, rs2=\Ec\E[?3h\E[2;0y, use=att5410v1, 
 
 att4410|att5410|tty5410|AT&T 4410/5410 80 columns - version 2, 
+       OTbs, 
        pfx=\E[%p1%d;%p2%l%02dq   f%p1%d           %p2%s, 
        use=att5410v1, 
 
@@ -7101,7 +7458,7 @@ v5410|att5410 in terms of a vt100,
 # when pressed in SYS PF mode.
 # (att4415: I added <rmam>/<smam> based on the init string -- esr)
 att4415|tty5420|att5420|AT&T 4415/5420 80 cols, 
-       db, mir, xon, 
+       OTbs, db, mir, xon, 
        lh#2, lm#78, lw#8, nlab#8, wsl#55, 
        cbt=\E[Z, clear=\E[x\E[J, cnorm=\E[11;0j, cub=\E[%p1%dD, 
        cud=\E[%p1%dB, cuf=\E[%p1%dC, cup=\E[%i%p1%d;%p2%dx, 
@@ -7133,12 +7490,12 @@ att4415-w|tty5420-w|att5420-w|AT&T 4415/5420 132 cols,
        is1=\E[?3h$<100>, use=att4415, 
 
 att4415-rv|tty5420-rv|att5420-rv|AT&T 4415/5420 80 cols/rv, 
-       flash=\E[?5l$<200>\E[?5h, is3=\E[?5h, 
-       use=att4415, 
+       flash=\E[?5l$<200>\E[?5h, is3=\E[?5h, use=att4415, 
 
 att4415-w-rv|tty5420-w-rv|att5420-w-rv|AT&T 4415/5420 132 cols/rv, 
        cols#132, lm#54, wsl#97, 
-       flash=\E[?5l$<200>\E[?5h, is1=\E[?3h$<100>, is3=\E[?5h, use=att4415, 
+       flash=\E[?5l$<200>\E[?5h, is1=\E[?3h$<100>, is3=\E[?5h, 
+       use=att4415, 
 
 # Note that this mode permits programming USER PF KEYS and labels
 # However, when you program user pf labels you have to reselect
@@ -7149,20 +7506,20 @@ att4415+nl|tty5420+nl|att5420+nl|generic AT&T 4415/5420 changes for not changing
        pln=\E[%p1%d;0;0;1q%p2%:-16.16s, 
 
 att4415-nl|tty5420-nl|att5420-nl|AT&T 4415/5420 without changing labels, 
-       kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, 
-       use=att4415+nl, use=att4415
+       kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl, 
+       use=att4415, 
 
 att4415-rv-nl|tty5420-rv-nl|att5420-rv-nl|AT&T 4415/5420 reverse video without changing labels, 
-       kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, 
-       use=att4415+nl, use=att4415-rv, 
+       kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl, 
+       use=att4415-rv, 
 
 att4415-w-nl|tty5420-w-nl|att5420-w-nl|AT&T 4415/5420 132 cols without changing labels, 
-       kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, 
-       use=att4415+nl, use=att4415-w, 
+       kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl, 
+       use=att4415-w, 
 
 att4415-w-rv-n|tty5420-w-rv-n|att5420-w-rv-n|AT&T 4415/5420 132 cols reverse without changing labels, 
-       kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, 
-       use=att4415+nl, use=att4415-w-rv, 
+       kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl, 
+       use=att4415-w-rv, 
 
 att5420_2|AT&T 5420 model 2 80 cols, 
        am, db, hs, mir, msgr, xon, 
@@ -7198,7 +7555,8 @@ att5420_2|AT&T 5420 model 2 80 cols,
        tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd, 
 att5420_2-w|AT&T 5420 model 2 in 132 column mode, 
        cols#132, 
-       is1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;1j\E[6;0j\E[7;0j\E[8;0j\E[9;1j\E[10;0j\E[15;0j\E[16;1j\E[19;0j\E[20;1j\E[29;0j\E[1;24r, use=att5420_2, 
+       is1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;1j\E[6;0j\E[7;0j\E[8;0j\E[9;1j\E[10;0j\E[15;0j\E[16;1j\E[19;0j\E[20;1j\E[29;0j\E[1;24r, 
+       use=att5420_2, 
 
 att4418|att5418|AT&T 5418 80 cols, 
        am, xon, 
@@ -7223,7 +7581,7 @@ att4418-w|att5418-w|AT&T 5418 132 cols,
        is1=\E[?3h, use=att5418, 
 
 att4420|tty4420|teletype 4420, 
-       da, db, eo, msgr, ul, xon, 
+       OTbs, da, db, eo, msgr, ul, xon, 
        cols#80, lines#24, lm#72, 
        bel=^G, clear=\EH\EJ, cr=\EG, cub1=\ED, cud1=\EB, cuf1=\EC, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP, 
@@ -7250,7 +7608,7 @@ att4420|tty4420|teletype 4420,
 #
 # (att4424: commented out <smcup>=\E[1m, we don't need bright locked on -- esr)
 att4424|tty4424|teletype 4424, 
-       am, xon, 
+       OTbs, am, xon, 
        cols#80, lines#24, 
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
        bel=^G, blink=\E3, bold=\E3, cbt=\EO, clear=\E[H\E[2J, cr=^M, 
@@ -7334,8 +7692,7 @@ att5425|tty5425|att4425|AT&T 4425/5425,
        vpa=\E[%p1%{1}%+%dd, 
 
 att5425-nl|tty5425-nl|att4425-nl|AT&T 4425/5425 80 columns no labels, 
-       smkx=\E[21;1j\E[25;4j\Eent, 
-       use=att4425, 
+       smkx=\E[21;1j\E[25;4j\Eent, use=att4425, 
 
 att5425-w|att4425-w|tty5425-w|teletype 4425/5425 in 132 column mode, 
        cols#132, lm#54, wsl#97, 
@@ -7539,7 +7896,7 @@ att5620-1|tty5620-1|dmd1|Teletype 5620 with old ROMs,
 # also has <ll>=\E[70H commented out and marked unsafe.
 # For more, see the 5620 FAQ maintained by David Breneman <daveb@dgtl.com>.
 att5620|dmd|tty5620|ttydmd|5620|5620 terminal 88 columns, 
-       am, msgr, npc, xon, 
+       OTbs, am, msgr, npc, xon, 
        cols#88, it#8, lines#70, 
        bel=^G, bold=\E[2m, clear=\E[H\E[J, cr=^M, cub1=^H, 
        cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 
@@ -7557,7 +7914,7 @@ att5620-34|tty5620-34|dmd-34|teletype dmd 5620 in a 34x80 layer,
        lines#34, use=att5620, 
 # 5620 layer running the "S" system's downloaded graphics handler:
 att5620-s|tty5620-s|layer|vitty|5620 S layer, 
-       am, 
+       OTbs, OTpt, am, 
        cols#80, it#8, lines#72, 
        bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, 
        cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=^K, dl1=\ED, 
@@ -7609,11 +7966,11 @@ att605-pc|ATT 605 in pc term mode,
        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[@, knp=\E[G, kpp=\E[I, 
        rmsc=400\E[50;0|, smsc=250\E[?11l\E[50;1|, xoffc=g, 
-       xonc=e, 
-       use=att605, 
+       xonc=e, use=att605, 
 att605-w|AT&T 605-w 132 column 102 key keyboard, 
        cols#132, wsl#132, 
-       is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h\E(B\E)0, use=att605, 
+       is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h\E(B\E)0, 
+       use=att605, 
 # (att610: I added <rmam>/<smam> based on the init string.  I also
 # added <indn> and <rin> because the BSD file says the att615s have them,
 # and the 615 is like a 610 with a big keyboard, and most of their other
@@ -7649,7 +8006,8 @@ att610|AT&T 610; 80 column; 98key keyboard,
        smln=\E[p, smso=\E[7m, smul=\E[4m, tsl=\E7\E[25;%i%p1%dx, 
 att610-w|AT&T 610; 132 column; 98key keyboard, 
        cols#132, wsl#132, 
-       is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, use=att610, 
+       is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, 
+       use=att610, 
 
 att610-103k|AT&T 610; 80 column; 103key keyboard, 
        kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON, 
@@ -7664,11 +8022,11 @@ att610-103k|AT&T 610; 80 column; 103key keyboard,
        knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr, kpp=\E[V, 
        kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb, kres=\EOq, 
        krfr=\ENa, krmir=\ENj, krpl=\EOy, krst=\EOB, ksav=\EOo, 
-       kslt=\ENI, kspd=\EOp, kund=\EOs, 
-       use=att610, 
+       kslt=\ENI, kspd=\EOp, kund=\EOs, use=att610, 
 att610-103k-w|AT&T 610; 132 column; 103key keyboard, 
        cols#132, wsl#132, 
-       is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, use=att610-103k, 
+       is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, 
+       use=att610-103k, 
 att615|AT&T 615; 80 column; 98key keyboard, 
        kLFT=\E[ A, kRIT=\E[ @, kf15=\EOC, kf16=\EOD, kf17=\EOE, 
        kf18=\EOF, kf19=\EOG, kf20=\EOH, kf21=\EOI, kf22=\EOJ, 
@@ -7676,8 +8034,7 @@ att615|AT&T 615; 80 column; 98key keyboard,
        kf28=\ENT, kf29=\EOP, kf30=\EOQ, kf31=\EOR, kf32=\EOS, 
        kf33=\EOw, kf34=\EOx, kf35=\EOy, kf36=\EOm, kf37=\EOt, 
        kf38=\EOu, kf39=\EOv, kf40=\EOl, kf41=\EOq, kf42=\EOr, 
-       kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, 
-       use=att610, 
+       kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, use=att610, 
 att615-w|AT&T 615; 132 column; 98key keyboard, 
        kLFT=\E[ A, kRIT=\E[ @, kf15=\EOC, kf16=\EOD, kf17=\EOE, 
        kf18=\EOF, kf19=\EOG, kf20=\EOH, kf21=\EOI, kf22=\EOJ, 
@@ -7685,14 +8042,11 @@ att615-w|AT&T 615; 132 column; 98key keyboard,
        kf28=\ENT, kf29=\EOP, kf30=\EOQ, kf31=\EOR, kf32=\EOS, 
        kf33=\EOw, kf34=\EOx, kf35=\EOy, kf36=\EOm, kf37=\EOt, 
        kf38=\EOu, kf39=\EOv, kf40=\EOl, kf41=\EOq, kf42=\EOr, 
-       kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, 
-       use=att610-w, 
+       kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, use=att610-w, 
 att615-103k|AT&T 615; 80 column; 103key keyboard, 
-       kLFT=\E[ A, kRIT=\E[ @, 
-       use=att610-103k, 
+       kLFT=\E[ A, kRIT=\E[ @, use=att610-103k, 
 att615-103k-w|AT&T 615; 132 column; 103key keyboard, 
-       kLFT=\E[ A, kRIT=\E[ @, 
-       use=att610-103k-w, 
+       kLFT=\E[ A, kRIT=\E[ @, use=att610-103k-w, 
 # (att620: I added <rmam>/<smam> based on the init string and
 # <rin>/<indn> from a BSD termcap -- esr)
 att620|AT&T 620; 80 column; 98key keyboard, 
@@ -7734,7 +8088,8 @@ att620|AT&T 620; 80 column; 98key keyboard,
        tsl=\E7\E[25;%i%p1%dx, 
 att620-w|AT&T 620; 132 column; 98key keyboard, 
        cols#132, wsl#132, 
-       is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, use=att620, 
+       is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, 
+       use=att620, 
 att620-103k|AT&T 620; 80 column; 103key keyboard, 
        kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON, 
        kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK, 
@@ -7751,12 +8106,12 @@ att620-103k|AT&T 620; 80 column; 103key keyboard,
        kmsg=\EOl, knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr, 
        kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb, 
        kres=\EOq, krfr=\ENa, krmir=\ENj, krpl=\EOy, krst=\EOB, 
-       ksav=\EOo, kslt=\ENI, kspd=\EOp, kund=\EOs, 
-       use=att620, 
+       ksav=\EOo, kslt=\ENI, kspd=\EOp, kund=\EOs, use=att620, 
 
 att620-103k-w|AT&T 620; 132 column; 103key keyboard, 
        cols#132, wsl#132, 
-       is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, use=att620-103k, 
+       is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, 
+       use=att620-103k, 
 
 # AT&T (formerly Teletype) 630 Multi-Tasking Graphics terminal
 # The following SETUP modes are assumed for normal operation:
@@ -7769,7 +8124,7 @@ att620-103k-w|AT&T 620; 132 column; 103key keyboard,
 # delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
 # (att630: added <ich1>, <blink> and <dim> from a BSD termcap file -- esr)
 att630|AT&T 630 windowing terminal, 
-       am, da, db, mir, msgr, npc, xon, 
+       OTbs, am, da, db, mir, msgr, npc, xon, 
        cols#80, it#8, lines#60, lm#0, 
        bel=^G, blink=\E[5m, cbt=\E[Z, clear=\E[H\E[J, cr=^M, 
        cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, 
@@ -7966,7 +8321,8 @@ att730-24|730MTG-24|AT&T 730-24 windowing terminal Version,
        lines#24, use=att730, 
 att730r|730MTGr|AT&T 730 rev video windowing terminal Version, 
        flash=\E[?5l$<200>\E[?5h, 
-       is1=\E[8;0|\E[?3;4;13;15l\E[?5h\E[13;20l\E[?7h\E[12h\E(B\E)B, use=att730, 
+       is1=\E[8;0|\E[?3;4;13;15l\E[?5h\E[13;20l\E[?7h\E[12h\E(B\E)B, 
+       use=att730, 
 att730r-41|730MTG-41r|AT&T 730r-41 rev video windowing terminal Version, 
        lines#41, use=att730r, 
 att730r-24|730MTGr-24|AT&T 730r-24 rev video windowing terminal Version, 
@@ -8143,13 +8499,13 @@ att505|pt505|att5430|gs5430|AT&T Personal Terminal 505 or 5430 GETSET terminal,
        cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, 
        cup=\E[%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
        cvvis=\E[>h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, 
-       dl1=\E[M, ed=\E[0J, el=\E[0K, el1=\E2K, home=\E[H, ht=^I, 
+       dl1=\E[M, ed=\E[0J, el=\E[0K, el1=\E[2K, home=\E[H, ht=^I, 
        il=\E[%p1%dL, il1=\E[L, ind=^J, 
        is1=\EPr\\E[0u\E[2J\E[0;0H\E[m\E[3l\E[<l\E[4l\E[>l\E[=l\E[?l, 
        kbs=^H, kcmd=\E!, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, 
        kcuu1=\E[A, kf0=\E[00s, kf1=\E[01s, kf18=\E[18s, 
        kf19=\E[19s, kf2=\E[02s, kf20=\E[20s, kf21=\E[21s, 
-       kf22=\E[22s, kf23=\E[23s, kf24=\E24s, kf26=\E26s, 
+       kf22=\E[22s, kf23=\E[23s, kf24=\E[24s, kf26=\E[26s, 
        kf3=\E[03s, kf4=\E[04s, kf5=\E[05s, kf6=\E[06s, 
        krfr=\E[27s, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, 
        rmacs=\E[10m, rmam=\E[11;1j, rmir=\E[4l, rmso=\E[m, 
@@ -8180,7 +8536,7 @@ tt505-22|pt505-22|gs5430-22|AT&T PT505 or 5430 GETSET version 1 22 lines,
 # From: <cbosg!ucbvax!SRC:george> Fri Sep 11 22:38:32 1981
 # (ampex80: some capabilities merged in from SCO's entry -- esr)
 ampex80|a80|d80|dialogue|dialogue80|ampex dialogue 80, 
-       am, bw, ul, 
+       OTbs, am, bw, ul, 
        cols#80, it#8, lines#24, 
        bel=^G, cbt=\EI, clear=\E*$<75>, cr=^M, cub1=^H, cud1=^J, 
        cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, 
@@ -8204,12 +8560,11 @@ ampex175|ampex d175,
 # some people and some systems may not, there is another termcap ("ampex175")
 # that suppresses this little eccentricity by omitting the relevant capability.
 ampex175-b|ampex d175 using left arrow for erase, 
-       kbs=^_, 
-       use=ampex175, 
+       kbs=^_, use=ampex175, 
 # From: Richard Bascove <atd!dsd!rcb@ucbvax.berkeley.edu>
 # (ampex210: removed obsolete ":kn#10:" -- esr)
 ampex210|a210|ampex a210, 
-       am, hs, xenl, 
+       OTbs, am, hs, xenl, 
        cols#80, it#8, lines#24, xmc#1, 
        cbt=\EI, clear=\E*, cub1=^H, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, 
@@ -8255,8 +8610,7 @@ ampex232|ampex-232|Ampex Model 232,
        invis@, is2=\Eg\El, kbs=^H, kcub1=^H, kcud1=^V, kcuf1=^L, 
        kcuu1=^K, kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r, 
        kf4=^AD\r, kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, 
-       kf9=^AI\r, khome=^^, 
-       use=adm+sgr, 
+       kf9=^AI\r, khome=^^, use=adm+sgr, 
 # (ampex: removed <if=/usr/share/tabset/amp-132>, no file and no <hts> -- esr) 
 ampex232w|Ampex Model 232 / 132 columns, 
        cols#132, lines#24, 
@@ -8391,7 +8745,7 @@ ampex232w|Ampex Model 232 / 132 columns,
 #
 
 annarbor4080|aa4080|ann arbor 4080, 
-       am, 
+       OTbs, 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}%+%;%{64}%+%c, 
@@ -8416,7 +8770,7 @@ aas1901|Ann Arbor K4080 w/S1901 mod,
 #   4. Total number of lines on the screen, the same as the first parameter.
 # The generic Ann Arbor entry is the only one that uses this.
 aaa+unk|aaa-unk|ann arbor ambassador (internal - don't use this directly), 
-       am, km, mc5i, mir, xon, 
+       OTbs, am, km, mc5i, mir, xon, 
        cols#80, it#8, 
        bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, 
        clear=\E[H\E[J$<156>, cr=^M, cub=\E[%p1%dD, cub1=^H, 
@@ -8459,21 +8813,25 @@ aaa+dec|ann arbor ambassador in dec vt100 mode,
 aaa-18|ann arbor ambassador/18 lines, 
        lines#18, 
        is2=\E7\E[60;0;0;18p\E8, 
-       rmcup=\E[60;0;0;18p\E[60;1H\E[K, smcup=\E[18;0;0;18p, use=aaa+unk, 
+       rmcup=\E[60;0;0;18p\E[60;1H\E[K, smcup=\E[18;0;0;18p, 
+       use=aaa+unk, 
 aaa-18-rv|ann arbor ambassador/18 lines+reverse video, 
        use=aaa+rv, use=aaa-18, 
 aaa-20|ann arbor ambassador/20 lines, 
        lines#20, 
        is2=\E7\E[60;0;0;20p\E8, 
-       rmcup=\E[60;0;0;20p\E[60;1H\E[K, smcup=\E[20;0;0;20p, use=aaa+unk, 
+       rmcup=\E[60;0;0;20p\E[60;1H\E[K, smcup=\E[20;0;0;20p, 
+       use=aaa+unk, 
 aaa-22|ann arbor ambassador/22 lines, 
        lines#22, 
        is2=\E7\E[60;0;0;22p\E8, 
-       rmcup=\E[60;0;0;22p\E[60;1H\E[K, smcup=\E[22;0;0;22p, use=aaa+unk, 
+       rmcup=\E[60;0;0;22p\E[60;1H\E[K, smcup=\E[22;0;0;22p, 
+       use=aaa+unk, 
 aaa-24|ann arbor ambassador/24 lines, 
        lines#24, 
        is2=\E7\E[60;0;0;24p\E8, 
-       rmcup=\E[60;0;0;24p\E[60;1H\E[K, smcup=\E[24;0;0;24p, use=aaa+unk, 
+       rmcup=\E[60;0;0;24p\E[60;1H\E[K, smcup=\E[24;0;0;24p, 
+       use=aaa+unk, 
 aaa-24-rv|ann arbor ambassador/24 lines+reverse video, 
        use=aaa+rv, use=aaa-24, 
 aaa-26|ann arbor ambassador/26 lines, 
@@ -8493,8 +8851,7 @@ aaa-30-s|aaa-s|ann arbor ambassador/30 lines w/status,
        fsl=\E[>51l, is2=\r\n\E[A\E7\E[60;1;0;30p\E8, 
        rmcup=\E[60;1;0;30p\E[29;1H\E[K, 
        smcup=\E[H\E[J$<156>\E[30;1;0;30p\E[30;1H\E[K, 
-       tsl=\E[>51h\E[1;%p1%dH\E[2K, 
-       use=aaa+unk, 
+       tsl=\E[>51h\E[1;%p1%dH\E[2K, use=aaa+unk, 
 aaa-30-s-rv|aaa-s-rv|ann arbor ambassador/30 lines+status+reverse video, 
        use=aaa+rv, use=aaa-30-s, 
 aaa-s-ctxt|aaa-30-s-ctxt|ann arbor ambassador/30 lines+status+save context, 
@@ -8542,27 +8899,26 @@ aaa-60-s|ann arbor ambassador/59 lines+status,
        lines#59, 
        dsl=\E7\E[60;0;0;60p\E[1;1H\E[K\E[H\E8\r\n\E[K, 
        fsl=\E[>51l, is2=\r\n\E[A\E7\E[60;1;0;60p\E8, 
-       tsl=\E[>51h\E[1;%p1%dH\E[2K, 
-       use=aaa+unk, 
+       tsl=\E[>51h\E[1;%p1%dH\E[2K, use=aaa+unk, 
 aaa-60-s-rv|ann arbor ambassador/59 lines+status+reverse video, 
        use=aaa+rv, use=aaa-60-s, 
 aaa-60-dec-rv|ann arbor ambassador/dec mode+59 lines+status+rev video, 
        use=aaa+dec, use=aaa+rv, use=aaa-60-s, 
 aaa-60|ann arbor ambassador/60 lines, 
        lines#60, 
-       is2=\E7\E[60;0;0;60p\E[1Q\E[m\E[>20;30l\E8, use=aaa+unk, 
+       is2=\E7\E[60;0;0;60p\E[1Q\E[m\E[>20;30l\E8, 
+       use=aaa+unk, 
 aaa-60-rv|ann arbor ambassador/60 lines+reverse video, 
        use=aaa+rv, use=aaa-60, 
 aaa-db|ann arbor ambassador 30/destructive backspace, 
-       cub1=\E[D, is3=\E[1Q\E[m\E[>20l\E[>30h
-       use=aaa-30, 
+       OTbs@
+       cub1=\E[D, is3=\E[1Q\E[m\E[>20l\E[>30h, use=aaa-30, 
 
 guru|guru-33|guru+unk|ann arbor guru/33 lines 80 cols, 
        lines#33, 
        flash=\E[>59h$<100>\E[>59l, 
        is2=\E7\E[255;0;0;33;80;80p\E8\E[J, is3=\E[>59l, 
-       rmcup=\E[255p\E[255;1H\E[K, smcup=\E[33p, 
-       use=aaa+unk, 
+       rmcup=\E[255p\E[255;1H\E[K, smcup=\E[33p, use=aaa+unk, 
 guru+rv|guru changes for reverse video, 
        flash=\E[>59l$<100>\E[>59h, is3=\E[>59h, 
 guru-rv|guru-33-rv|ann arbor guru/33 lines+reverse video, 
@@ -8577,41 +8933,43 @@ guru-nctxt|guru with no saved context,
 guru-s|guru-33-s|ann arbor guru/33 lines+status, 
        lines#32, 
        is2=\r\n\E[A\E7\E[255;1;0;33;80;80p\E8\E[J, 
-       smcup=\E[33;1p\E[255;1H\E[K, 
-       use=guru+s, use=guru+unk, 
+       smcup=\E[33;1p\E[255;1H\E[K, use=guru+s, use=guru+unk, 
 guru-24|ann arbor guru 24 lines, 
        cols#80, lines#24, 
-       is2=\E7\E[255;0;0;24;80;80p\E8\E[J, smcup=\E[24p, use=guru+unk, 
+       is2=\E7\E[255;0;0;24;80;80p\E8\E[J, smcup=\E[24p, 
+       use=guru+unk, 
 guru-44|ann arbor guru 44 lines, 
        cols#97, lines#44, 
-       is2=\E7\E[255;0;0;44;97;100p\E8\E[J, smcup=\E[44p, use=guru+unk, 
+       is2=\E7\E[255;0;0;44;97;100p\E8\E[J, smcup=\E[44p, 
+       use=guru+unk, 
 guru-44-s|ann arbor guru/44 lines+status, 
        lines#43, 
        is2=\r\n\E[A\E7\E[255;1;0;44;80;80p\E8\E[J, 
-       smcup=\E[44;1p\E[255;1H\E[K, 
-       use=guru+s, use=guru+unk, 
+       smcup=\E[44;1p\E[255;1H\E[K, use=guru+s, use=guru+unk, 
 guru-76|guru with 76 lines by 89 cols, 
        cols#89, lines#76, 
-       is2=\E7\E[255;0;0;76;89;100p\E8\E[J, smcup=\E[76p, use=guru+unk, 
+       is2=\E7\E[255;0;0;76;89;100p\E8\E[J, smcup=\E[76p, 
+       use=guru+unk, 
 guru-76-s|ann arbor guru/76 lines+status, 
        cols#89, lines#75, 
        is2=\r\n\E[A\E7\E[255;1;0;76;89;100p\E8\E[J, 
-       smcup=\E[76;1p\E[255;1H\E[K, 
-       use=guru+s, use=guru+unk, 
+       smcup=\E[76;1p\E[255;1H\E[K, use=guru+s, use=guru+unk, 
 guru-76-lp|guru-lp|guru with page bigger than line printer, 
        cols#134, lines#76, 
-       is2=\E7\E[255;0;0;76;134;134p\E8\E[J, smcup=\E[76p, use=guru+unk, 
+       is2=\E7\E[255;0;0;76;134;134p\E8\E[J, smcup=\E[76p, 
+       use=guru+unk, 
 guru-76-w|guru 76 lines by 178 cols, 
        cols#178, lines#76, 
-       is2=\E7\E[255;0;0;76;178;178p\E8\E[J, smcup=\E[76p, use=guru+unk, 
+       is2=\E7\E[255;0;0;76;178;178p\E8\E[J, smcup=\E[76p, 
+       use=guru+unk, 
 guru-76-w-s|ann arbor guru/76 lines+status+wide, 
        cols#178, lines#75, 
        is2=\r\n\E[A\E7\E[255;1;0;76;178;178p\E8\E[J, 
-       smcup=\E[76;1p\E[255;1H\E[K, 
-       use=guru+s, use=guru+unk, 
+       smcup=\E[76;1p\E[255;1H\E[K, use=guru+s, use=guru+unk, 
 guru-76-wm|guru 76 lines by 178 cols with 255 cols memory, 
        cols#178, lines#76, 
-       is2=\E7\E[255;0;0;76;178;255p\E8\E[J, smcup=\E[76p, use=guru+unk, 
+       is2=\E7\E[255;0;0;76;178;255p\E8\E[J, smcup=\E[76p, 
+       use=guru+unk, 
 aaa-rv-unk|ann arbor unknown type, 
        lh#0, lw#0, nlab#0, 
        blink=\E[5;7m, bold=\E[1;7m, home=\E[H, invis=\E[7;8m, 
@@ -8643,7 +9001,7 @@ aaa-rv-unk|ann arbor unknown type,
 # Regent: lowest common denominator, works on all regents.
 # (regent: renamed ":bc:" to ":le:" -- esr)
 regent|Adds Regent Series, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, clear=^L, cr=^M, cub1=^U, cud1=^J, cuf1=^F, cuu1=^Z, 
        home=\EY\s\s, ind=^J, ll=^A, 
@@ -8651,24 +9009,25 @@ regent|Adds Regent Series,
 # down shift key it gets confused, so we avoid escape.
 regent100|Adds Regent 100, 
        xmc#1, 
-       bel=^G, cup=\013%p1%{32}%+%c%p2%p2%{6}%*%+\020%c, 
+       bel=^G, 
+       cup=\013%p1%' '%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%c, 
        kf0=^B1\r, kf1=^B2\r, kf2=^B3\r, kf3=^B4\r, kf4=^B5\r, 
        kf5=^B6\r, kf6=^B7\r, kf7=^B8\r, lf0=F1, lf1=F2, lf2=F3, 
        lf3=F4, lf4=F5, lf5=F6, lf6=F7, lf7=F8, rmso=\E0@, rmul=\E0@, 
-       sgr0=\E0@, smso=\E0P, smul=\E0`, 
-       use=regent, 
+       sgr0=\E0@, smso=\E0P, smul=\E0`, use=regent, 
 regent20|Adds Regent 20, 
-       bel=^G, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, ed=\Ek, el=\EK, use=regent, 
+       bel=^G, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, ed=\Ek, el=\EK, 
+       use=regent, 
 regent25|Adds Regent 25, 
-       bel=^G, kcub1=^U, kcud1=^J, kcuf1=^F, kcuu1=^Z, khome=^A, use=regent20, 
+       bel=^G, kcub1=^U, kcud1=^J, kcuf1=^F, kcuu1=^Z, khome=^A, 
+       use=regent20, 
 regent40|Adds Regent 40, 
        xmc#1, 
        bel=^G, dl1=\El$<2*>, il1=\EM$<2*>, kf0=^B1\r, kf1=^B2\r, 
        kf2=^B3\r, kf3=^B4\r, kf4=^B5\r, kf5=^B6\r, kf6=^B7\r, 
        kf7=^B8\r, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, lf5=F6, 
        lf6=F7, lf7=F8, rmso=\E0@, rmul=\E0@, sgr0=\E0@, smso=\E0P, 
-       smul=\E0`, 
-       use=regent25, 
+       smul=\E0`, use=regent25, 
 regent40+|Adds Regent 40+, 
        is2=\EB, use=regent40, 
 regent60|regent200|Adds Regent 60, 
@@ -8678,7 +9037,7 @@ regent60|regent200|Adds Regent 60,
 # From: <edward@onyx.berkeley.edu> Thu Jul  9 09:27:33 1981
 # (viewpoint: added <kcuf1>, function key, and <dl1> capabilities -- esr)
 viewpoint|addsviewpoint|adds viewpoint, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, clear=^L, cnorm=\017\E0`, cr=^M, cub1=^H, cud1=^J, 
        cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, 
@@ -8719,7 +9078,7 @@ vp60|viewpoint60|addsvp60|adds viewpoint60,
 #               the status line
 # Function key and label capabilities merged in from SCO.
 vp90|viewpoint90|adds viewpoint 90, 
-       bw, msgr, xhp, 
+       OTbs, bw, msgr, xhp, 
        cols#80, lines#24, 
        clear=\EG\Ek, cub1=^H, cud1=^J, cuf1=^F, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EE, 
@@ -8734,7 +9093,7 @@ vp90|viewpoint90|adds viewpoint 90,
 # Note: if return acts weird on a980, check internal switch #2
 # on the top chip on the CONTROL pc board.
 adds980|a980|adds consul 980, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, clear=\014$<1>\013@, cr=^M, cub1=^H, cud1=^J, 
        cuf1=\E^E01, cup=\013%p1%{64}%+%c\E\005%p2%2d, 
@@ -8753,7 +9112,7 @@ adds980|a980|adds consul 980,
 #           the delay times and do an auto tab set rather than the indirect
 #           file used in vt100.
 cit80|cit-80|citoh 80, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        clear=\E[H\EJ, cr=^M, cub1=^H, cuf1=\E[C, 
        cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\EJ, el=\EK, ff=^L, 
@@ -8762,7 +9121,7 @@ cit80|cit-80|citoh 80,
 # From: Tim Wood <mtxinu!sybase!tim> Fri Sep 27 09:39:12 PDT 1985
 # (cit101: added <rmam>/<smam> based on init string, merged this with c101 -- esr)
 cit101|citc|C.itoh fast vt100, 
-       am, xenl, 
+       OTbs, am, xenl, 
        cols#80, lines#24, 
        bel=^G, clear=\E[H\E[2J, cnorm=\E[V\E8, cub1=^H, cuf1=\E[C, 
        cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E7\E[U, 
@@ -8781,7 +9140,7 @@ cit101|citc|C.itoh fast vt100,
 # f6=\EOv:f7=\EOw:f8=\EOx:f9=\EOy:AB=\E[0;5m:AL=\E[m:AR=\E[0;7m:AS=\E[0;5;7m:\
 # :NB=\E[0;1;5m:NM=\E[0;1m:NR=\E[0;1;7m:NS=\E[0;1;5;7m: -- esr)
 cit101e|C. Itoh CIT-101e, 
-       am, mir, msgr, 
+       OTbs, OTpt, am, mir, msgr, 
        cols#80, it#8, lines#24, 
        acsc=, clear=\E[H\E[J, cnorm=, csr=\E[%i%p1%2d;%p2%2dr, 
        cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, 
@@ -8812,8 +9171,8 @@ cit101e|C. Itoh CIT-101e,
 cit101e-rv|Citoh CIT-101e (sets reverse video), 
        am, eo, mir, msgr, xenl, xon, 
        cols#80, it#8, lines#24, 
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[1v
-       clear=\E[H\E[J, cnorm=\E[0;3;4v, cr=^M, 
+       OTnl=\EM, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z
+       civis=\E[1v, clear=\E[H\E[J, cnorm=\E[0;3;4v, 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, 
@@ -8831,14 +9190,16 @@ cit101e-rv|Citoh CIT-101e (sets reverse video),
        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, 
+       cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=^J, 
+       use=cit101e, 
 cit101e-132|CIT-101e with 132 cols, 
        cols#132, 
        kbs=^H, kcub1=^H, kcud1=^J, use=cit101e, 
 cit101e-n132|CIT-101e with 132 cols w/o am, 
        am@, 
        cols#132, 
-       cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=^J, use=cit101e, 
+       cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=^J, 
+       use=cit101e, 
 # CIE Terminals CIT-500 from BRL
 # The following SET-UP modes are assumed for normal operation:
 #      GENERATE_XON/XOFF:YES   DUPLEX:FULL             NEWLINE:OFF
@@ -8851,8 +9212,8 @@ cit101e-n132|CIT-101e with 132 cols w/o am,
 # "stty ixon -ixany" to enable DC3/DC1 flow control!
 # (cit500: I added <rmam>/<smam> based on the init string -- esr)
 cit500|CIE Terminals CIT-500, 
-       mir, msgr, xon, 
-       cols#80, it#8, lines#64, vt#3, 
+       OTbs, OTpt, mir, msgr, xon, 
+       OTkn#10, cols#80, it#8, lines#64, vt#3, 
        acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, 
        clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr, 
        cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, 
@@ -8878,18 +9239,19 @@ citoh|ci8510|8510|c.itoh 8510a,
        bold=\E!, cub1@, 
        is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073., 
        rep=\ER%p2%03d%p1%c, ri=\Er, rmul=\EY, sgr0=\E"\EY, 
-       smul=\EX, 
-       use=lpr, 
+       smul=\EX, use=lpr, 
 citoh-pica|citoh in pica, 
        is1=\EN, use=citoh, 
 citoh-elite|citoh in elite, 
        cols#96, 
        is1=\EE, 
-       is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089., use=citoh, 
+       is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089., 
+       use=citoh, 
 citoh-comp|citoh in compressed, 
        cols#136, 
        is1=\EQ, 
-       is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089\,097\,105\,113\,121\,129., use=citoh, 
+       is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089\,097\,105\,113\,121\,129., 
+       use=citoh, 
 # citoh has infinite cols because we don't want lp ever inserting \n\t**.
 citoh-prop|citoh-ps|ips|citoh in proportional spacing mode, 
        cols#32767, 
@@ -8904,7 +9266,7 @@ citoh-8lpi|citoh in 8 lines per inch mode,
 #
 
 cdc456|cdc 456 terminal, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, clear=^Y^X, cr=^M, cub1=^H, cud1=^J, cuf1=^L, 
        cup=\E1%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dl1=\EJ, ed=^X, 
@@ -8912,20 +9274,20 @@ cdc456|cdc 456 terminal,
 
 # Assorted CDC terminals from BRL (improvements by DAG & Ferd Brundick)
 cdc721|CDC Viking, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        clear=^L, cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c, 
        cuu1=^W, el=^K, home=^Y, kcub1=^H, kcud1=^J, kcuf1=^I, 
        kcuu1=^W, khome=^Y, 
 cdc721ll|CDC Vikingll, 
-       am, 
+       OTbs, am, 
        cols#132, lines#24, 
        clear=^L, cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c, 
        cuu1=^W, el=^K, home=^Y, kcub1=^H, kcud1=^J, kcuf1=^I, 
        kcuu1=^W, khome=^Y, 
 # (cdc752: the BRL entry had :ll=\E1  ^Z: commented out
 cdc752|CDC 752, 
-       am, bw, xhp, 
+       OTbs, am, bw, xhp, 
        cols#80, lines#24, 
        bel=^G, clear=\030\E1\s\s, cr=^M, cub1=^H, cud1=^J, cuf1=^U, 
        cup=\E1%p2%{32}%+%c%p1%{32}%+%c, cuu1=^Z, el=^V, 
@@ -8937,8 +9299,8 @@ cdc752|CDC 752,
 # Insert/delete-character cannot be used, as the whole display is affected.
 # "so" & "se" are commented out until jove handles "sg" correctly.
 cdc756|CDC 756, 
-       am, bw, 
-       cols#80, lines#24, 
+       OTbs, am, bw, 
+       OTkn#10, cols#80, lines#24, 
        bel=^G, clear=^Y^X, cr=^M, cub1=^H, cud1=^J, cuf1=^U, 
        cup=\E1%p2%{32}%+%c%p1%{32}%+%c, cuu1=^Z, 
        dl1=\EJ$<6*/>, ed=^X, el=^V, home=^Y, il1=\EL$<6*/>, ind=^J, 
@@ -8961,8 +9323,8 @@ cdc756|CDC 756,
 #
 # (cdc721: changed :ri: to :sr: -- esr)
 cdc721-esc|Control Data 721, 
-       am, bw, msgr, xon, 
-       cols#80, it#8, lines#30, 
+       OTbs, OTpt, am, bw, msgr, xon, 
+       OTkn#10, cols#80, it#8, lines#30, 
        bel=^G, blink=^N, cbt=^^^K, clear=^L, cub1=^H, cud1=^Z, 
        cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c, cuu1=^W, 
        dch1=^^N, dim=^\, dl1=^^Q, ed=^^P, el=^K, home=^Y, hts=^^^RW, 
@@ -9073,10 +9435,9 @@ visa50|geveke visa 50 terminal in ansi 80 character mode,
 #
 c108|concept108|c108-8p|concept108-8p|concept 108 w/8 pages, 
        is3=\EU\E z"\Ev\001\177 !p\E ;"\E z \Ev  \001\177p\Ep\n, 
-       rmcup=\Ev  \001\177p\Ep\r\n, 
-       use=c108-4p, 
+       rmcup=\Ev  \001\177p\Ep\r\n, use=c108-4p, 
 c108-4p|concept108-4p|concept 108 w/4 pages, 
-       eslok, hs, xon, 
+       OTbs, eslok, hs, xon, 
        pb@, 
        acsc=jEkTl\\mMqLxU, cnorm=\Ew, cr=^M, 
        cup=\Ea%p1%?%p1%{95}%>%t\001%{96}%-%;%{32}%+%c%p2%?%p2%{95}%>%t\001%{96}%-%;%{32}%+%c, 
@@ -9136,7 +9497,7 @@ c108-w|c108-w-8p|concept108-w-8|concept108-w8p|concept 108 w/8 pages in wide mod
 # cannot be # in is2 because it will hang a c100 with no printer 
 # if sent twice.
 c100|concept100|concept|c104|c100-4p|hds concept 100, 
-       am, eo, mir, ul, xenl, 
+       OTbs, am, eo, mir, ul, xenl, 
        cols#80, lines#24, pb#9600, vt#8, 
        bel=^G, blink=\EC, clear=\E?\E\005$<2*>, cr=$<9>\r, 
        cub1=^H, cud1=^J, cuf1=\E=, 
@@ -9160,8 +9521,7 @@ c100|concept100|concept|c104|c100-4p|hds concept 100,
        smso=\ED, smul=\EG, 
 c100-rv|c100-rv-4p|concept100-rv|c100 rev video, 
        cnorm@, cvvis@, flash=\EK$<200>\Ek, is1=\Ek, rmso=\Ee, 
-       smso=\EE, 
-       use=c100, 
+       smso=\EE, use=c100, 
 oc100|oconcept|c100-1p|old 1 page concept 100, 
        in, 
        is3@, use=c100, 
@@ -9446,7 +9806,7 @@ hds200|Human Designed Systems HDS200,
 # <ht> through <el> included to specify padding needed in raw mode.
 # (avt-ns: added empty <acsc> to suppress a tic warning --esr)
 avt-ns|concept avt no status line, 
-       am, eo, mir, ul, xenl, xon, 
+       OTbs, am, eo, mir, ul, xenl, xon, 
        cols#80, it#8, lines#24, lm#192, 
        acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, 
        clear=\E[H\E[J$<38>, cnorm=\E[=119l, cr=^M, 
@@ -9457,7 +9817,7 @@ avt-ns|concept avt no status line,
        dl1=\E[M$<4>, ed=\E[J$<96>, el=\E[K$<6>, home=\E[H, 
        hpa=\E[%p1%{1}%+%dG, ht=\011$<4>, hts=\EH, ich=\E[%p1%d@, 
        ich1=\E[@, il=\E[%p1%dL$<4*>, il1=\E[L$<4>, ind=\n$<8>, 
-       invis=\E8m, ip=$<4>, is1=\E[=103l\E[=205l, 
+       invis=\E[8m, ip=$<4>, is1=\E[=103l\E[=205l, 
        is2=\E[1*q\E[2!t\E[7!t\E[=4;101;119;122l\E[=107;118;207h\E)1\E[1Q\EW\E[!y\E[!z\E>\E[0\:0\:32!r\E[0*w\E[w\E2\r\n\E[2;27!t, 
        kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
        kdch1=\E^B\r, ked=\E^D\r, kf1=\EOP, kf2=\EOQ, kf3=\EOR, 
@@ -9465,11 +9825,12 @@ avt-ns|concept avt no status line,
        mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, 
        pfloc=\E[%p1%d;0u#%p2%s#, pfx=\E[%p1%d;1u#%p2%s#, 
        prot=\E[99m, rc=\E8, rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, 
-       ri=\EM$<4>, rmacs=\016$<1>, rmcup=\E[w\E2\r\n, rmir=\E4l, 
-       rmkx=\E[!z\E[0;2u, rmso=\E[7!{, rmul=\E[4!{, sc=\E7, 
+       ri=\EM$<4>, rmacs=\016$<1>, rmcup=\E[w\E2\r\n, 
+       rmir=\E[4l, rmkx=\E[!z\E[0;2u, rmso=\E[7!{, rmul=\E[4!{, 
+       sc=\E7, 
        sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m, 
        sgr0=\E[m, smacs=\017$<1>, smcup=\E[=4l\E[1;24w\E2\r, 
-       smir=\E1, smkx=\E[1!z\E[0;3u, smso=\E[7m, smul=\E[4m, 
+       smir=\E[4h, smkx=\E[1!z\E[0;3u, smso=\E[7m, smul=\E[4m, 
        tbc=\E[2g, vpa=\E[%p1%{1}%+%dd, 
 avt-rv-ns|concept avt in reverse video mode/no status line, 
        flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h, 
@@ -9479,8 +9840,7 @@ avt-w-ns|concept avt in 132 column mode/no status line,
        use=avt-ns, 
 avt-w-rv-ns|concept avt in 132 column mode/no status line/reverse video, 
        flash=\E[=205l$<200>\E[=205h, is1=\E[=103h\E[=205h, 
-       smcup=\E[H\E[1;24;1;132w, 
-       use=avt-ns, 
+       smcup=\E[H\E[1;24;1;132w, use=avt-ns, 
 
 # Concept AVT with status line. We get the status line using the
 # "Background status line" feature of the terminal. We swipe the
@@ -9500,15 +9860,14 @@ avt+s|concept avt status line changes,
 avt|avt-s|concept-avt|avt w/80 columns, 
        use=avt+s, use=avt-ns, 
 avt-rv|avt-rv-s|avt reverse video w/sl, 
-       flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h, use=avt+s, 
-       use=avt-ns, 
+       flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h, 
+       use=avt+s, use=avt-ns, 
 avt-w|avt-w-s|concept avt 132 cols+status, 
-       is1=\E[=103h\E[=205l, smcup=\E[H\E[1;24;1;132w, use=avt+s, 
-       use=avt-ns, 
+       is1=\E[=103h\E[=205l, smcup=\E[H\E[1;24;1;132w, 
+       use=avt+s, use=avt-ns, 
 avt-w-rv|avt-w-rv-s|avt wide+status+rv, 
        flash=\E[=205l$<200>\E[=205h, is1=\E[=103h\E[=205h, 
-       smcup=\E[H\E[1;24;1;132w, 
-       use=avt+s, use=avt-ns, 
+       smcup=\E[H\E[1;24;1;132w, use=avt+s, use=avt-ns, 
 
 #### Contel Business Systems. 
 #
@@ -9706,8 +10065,7 @@ dg-generic|Generic Data General terminal in DG mode,
        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, 
+       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
@@ -9715,7 +10073,7 @@ dg-generic|Generic Data General terminal in DG mode,
 # maybe they were originally nuls (which would fit).
 
 dg200|data general dasher 200, 
-       am, bw, 
+       OTbs, am, bw, 
        cols#80, lines#24, 
        bel=^G, clear=^L, cr=^M, cub1=^Y, cud1=^Z, cuf1=^X, 
        cup=\020%p2%c%p1%c, cuu1=^W, el=^K, home=^H, ind=^J, 
@@ -9728,10 +10086,11 @@ dg200|data general dasher 200,
 dg210|dg-ansi|Data General 210/211, 
        am, 
        cols#80, lines#24, 
-       clear=\E[2J, cud1=\E[B, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 
-       ed=\E[J, el=\E[K, home=\E[H, kcub1=\E[D, kcud1=\E[B, 
-       kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, nel=\r\E[H\E[A\n, 
-       rmso=\E[0;m, rmul=\E[0;m, smso=\E[7;m, smul=\E[4;m, 
+       OTnl=\E[B, clear=\E[2J, cud1=\E[B, cup=\E[%i%p1%d;%p2%dH, 
+       cuu1=\E[A, ed=\E[J, el=\E[K, home=\E[H, kcub1=\E[D, 
+       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, 
+       nel=\r\E[H\E[A\n, rmso=\E[0;m, rmul=\E[0;m, smso=\E[7;m, 
+       smul=\E[4;m, 
 # From: Peter N. Wan <ihnp4!gatech!gacsr!wan>
 # courtesy of Carlos Rucalde of Vantage Software, Inc.
 # (dg211: this had <cup=\020%r%.%>., which was an ancient termcap hangover.
@@ -9739,11 +10098,13 @@ dg210|dg-ansi|Data General 210/211,
 dg211|Data General d211, 
        cnorm=^L, cvvis=^L^R, ht=^I, ind@, kbs=^Y, kf0@, kf1@, kf2@, kf3@, 
        kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, lf0@, nel=^M^Z, rmcup=^L, 
-       rmso=\036E$<\0/>, smcup=^L^R, smso=\036D$<5/>, 
-       use=dg200, 
-# dg450 from cornell
+       rmso=\036E$<\0/>, smcup=^L^R, smso=\036D$<5/>, use=dg200, 
+
+# dg450 from Cornell (not official)
 dg450|dg6134|data general 6134, 
        cub1@, cuf1=^X, use=dg200, 
+
+# Not official...
 # Note: lesser Dasher terminals will not work with vi because vi insists upon
 # having a command to move straight down from any position on the bottom line
 # and scroll the screen up, or a direct vertical scroll command.  The 460 and
@@ -9754,19 +10115,20 @@ dg450|dg6134|data general 6134,
 # grounds that there is no matching ":ml:"
 # fixed garbled ":k9=\E[00\:z:" capability -- esr)
 dg460-ansi|Data General Dasher 460 in ANSI-mode, 
-       am, msgr, ul, 
+       OTbs, am, msgr, ul, 
        cols#80, it#8, lines#24, 
-       blink=\E[5m, clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C, 
-       cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P, dim=\E[2m, 
-       dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@, 
-       il1=\E[L, ind=\E[S, is2=^^F@, kbs=\E[D, kcub1=\E[D, 
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\E[001z, 
-       kf1=\E[002z, kf2=\E[003z, kf3=\E[004z, kf4=\E[005z, 
-       kf5=\E[006z, kf6=\E[007z, kf7=\E[008z, kf8=\E[009z, 
-       kf9=\E[010z, khome=\E[H, lf0=f1, lf1=f2, lf2=f3, lf3=f4, 
-       lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf9=f10, rev=\E[7m, ri=\E[T, 
-       rmso=\E[m, rmul=\E[05, sgr0=\E[m, smso=\E[7m, smul=\E[4m, 
-# From: Wayne Throop <mcnc!rti-sel!rtp47!throopw>
+       OTnl=\ED, blink=\E[5m, clear=\E[2J, cub1=^H, cud1=\E[B, 
+       cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P, 
+       dim=\E[2m, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, 
+       ich1=\E[@, il1=\E[L, ind=\E[S, is2=^^F@, kbs=\E[D, 
+       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
+       kf0=\E[001z, kf1=\E[002z, kf2=\E[003z, kf3=\E[004z, 
+       kf4=\E[005z, kf5=\E[006z, kf6=\E[007z, kf7=\E[008z, 
+       kf8=\E[009z, kf9=\E[010z, khome=\E[H, lf0=f1, lf1=f2, lf2=f3, 
+       lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf9=f10, rev=\E[7m, 
+       ri=\E[T, rmso=\E[m, rmul=\E[05, sgr0=\E[m, smso=\E[7m, 
+       smul=\E[4m, 
+# From: Wayne Throop <mcnc!rti-sel!rtp47!throopw> (not official)
 # Data General 605x     
 # Ought to work for a Model 6242, Type D210 as well as a 605x.
 # Note that the cursor-down key transmits ^Z.  Job control users, beware!
@@ -9774,14 +10136,15 @@ dg460-ansi|Data General Dasher 460 in ANSI-mode,
 # so there's a dg100 alias here. 
 # (dg6053: the 4.4BSD file had <cub1=^H>, <cud1=^J>, <cuf1=^S>. -- esr) 
 dg6053-old|dg100|data general 6053, 
-       am, bw, ul, 
+       OTbs, am, bw, ul, 
        cols#80, lines#24, 
-       bel=^G, clear=^L, cnorm=^L, cr=^M, cub1=^Y, cud1=^Z, cuf1=^X, 
-       cup=\020%p2%c%p1%c, cuu1=^W, cvvis=^L^R, el=^K, home=^H, 
-       ht=^I, is2=^R, kbs=^Y, kcub1=^Y, kcud1=^Z, kcuf1=^X, kcuu1=^W, 
-       kf0=^^q, kf1=^^r, kf2=^^s, kf3=^^t, kf4=^^u, kf5=^^v, kf6=^^w, 
-       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, 
+       OTbc=^Y, bel=^G, clear=^L, cnorm=^L, cr=^M, cub1=^Y, cud1=^Z, 
+       cuf1=^X, cup=\020%p2%c%p1%c, cuu1=^W, cvvis=^L^R, el=^K, 
+       home=^H, ht=^I, is2=^R, kbs=^Y, kcub1=^Y, kcud1=^Z, kcuf1=^X, 
+       kcuu1=^W, kf0=^^q, kf1=^^r, kf2=^^s, kf3=^^t, kf4=^^u, kf5=^^v, 
+       kf6=^^w, 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, 
@@ -9792,8 +10155,8 @@ dg6053|6053|6053-dg|dg605x|605x|605x-dg|d2|d2-dg|Data General DASHER 6053,
 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, 
+       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.
@@ -9812,8 +10175,7 @@ d210|d214|Data General DASHER D210 series,
        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, 
+       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.
@@ -9834,7 +10196,8 @@ d210-dg|d214-dg|Data General DASHER D210 series in DG mode,
 #
 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, 
+       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
@@ -9875,8 +10238,7 @@ d216-unix|d216e-unix|d216+|d216e+|Data General DASHER D216+ in DG-UNIX mode,
        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, 
+       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+, 
@@ -9900,11 +10262,13 @@ d217-unix-25|Data General DASHER D217 in DG-UNIX mode with 25 lines,
 #
 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, 
+       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, 
+       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)
@@ -9917,8 +10281,8 @@ d220-7b|Data General DASHER D220 in 7 bit mode,
 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, 
+       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.
@@ -9928,8 +10292,7 @@ d230c|d230|Data General DASHER D230C,
        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, 
+       smul=\E[4;50m, use=dgkeys+7b, use=d220, 
 
 d230c-dg|d230-dg|Data General DASHER D230C in DG mode, 
        use=d220-dg, 
@@ -10014,8 +10377,7 @@ d410|d411|d460|d461|Data General DASHER D410/D460 series,
        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, 
+       sgr0=\E[m\E)4\017, smacs=\E)6\016, use=d211, 
 
 # Initialization string 2 sets:
 #      \E[3;2;2;0;1;0v
@@ -10037,8 +10399,7 @@ d410-7b|d411-7b|d460-7b|d461-7b|Data General DASHER D410/D460 series in 7 bit mo
        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, 
+       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, 
@@ -10072,14 +10433,12 @@ d410-dg|d460-dg|d411-dg|d461-dg|Data General DASHER D410/D460 series in DG mode,
 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, 
+       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, 
+       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, 
@@ -10093,30 +10452,33 @@ d412-unix|d462-unix|d412+|d462+|Data General DASHER D412+/D462+ series in Unix m
        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+, 
+       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, 
+       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+, 
+       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+, 
+       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+, 
+       cud1@, cuu1@, ll@, use=d462+, 
 
 d413-unix|d463-unix|Data General DASHER D413/D463 series in DG-UNIX mode, 
        use=d412-unix, 
@@ -10252,29 +10614,14 @@ d577-dg|d578-dg|Data General DASHER D577/D578 series in DG mode,
 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, 
+       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.
-# As of early 1996, at least one company called `Datamedia' has been taken
-# over by:
-#
-#    Axent Technologies, Inc.
-#    2400 Research Boulevard
-#    Rockville, Maryland 20850
-#    voice: +1 301/258-5043
-#      fax: +1 301/330-5756
-#    email: <info@axent.com>
-#
-# makers of OmniGuard client/server security software.  They are a software
-# 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 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...
+# Datamedia was headquartered in Nashua, New Hampshire until it went 
+# out of business in 1993, but the ID plates on the terminals referred
+# to the factory in Pennsauken, NJ.  The factory was sold to a PCB board
+# manufacturer which threw out all information about the terminals.
 #
 
 cs10|colorscan|Datamedia Color Scan 10, 
@@ -10291,7 +10638,7 @@ cs10-w|Datamedia Color Scan 10 with 132 columns,
 
 # (dm1520: removed obsolete ":ma=^\ ^_^P^YH:" -- esr)
 dm1520|dm1521|datamedia 1520, 
-       am, xenl, 
+       OTbs, am, xenl, 
        cols#80, it#8, lines#24, 
        bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^\, 
        cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], 
@@ -10300,6 +10647,7 @@ dm1520|dm1521|datamedia 1520,
 # dm2500: this terminal has both <ich> and <smir>. Applications using 
 # termcap/terminfo directly (rather than through ncurses) might be confused.
 dm2500|datamedia2500|datamedia 2500, 
+       OTbs, OTnc, 
        cols#80, lines#24, 
        bel=^G, clear=^^^^\177, cub1=^H, cud1=^J, cuf1=^\, 
        cup=\014%p2%{96}%^%c%p1%{96}%^%c, cuu1=^Z, 
@@ -10319,7 +10667,7 @@ dmchat|dmchat version of datamedia 2500,
        il1=\020\n\030\035\030\035$<1*/>, use=dm2500, 
 # (dm3025: ":MT:" changed to ":km:" -- esr)
 dm3025|datamedia 3025a, 
-       km, 
+       OTbs, km, 
        cols#80, it#8, lines#24, 
        bel=^G, clear=\EM$<2>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, 
        cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, 
@@ -10328,7 +10676,7 @@ dm3025|datamedia 3025a,
        is2=\EQ\EU\EV, rmdc=\EQ, rmir=\EQ, rmso=\EO0, smdc=\EP, 
        smir=\EP, smso=\EO1, 
 dm3045|datamedia 3045a, 
-       am, eo, km@, ul, xenl, 
+       OTbs, am, eo, km@, ul, xenl, 
        dch1=\EB$<6>, dl1@, il1@, is2=\EU\EV, kcuf1=\EC, kcuu1=\EA, 
        kf0=\Ey\r, kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, 
        kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r, kf9=\Ex\r, 
@@ -10380,7 +10728,7 @@ dm80w|dmdt80w|dt80w|datamedia dt80/1 in 132 char mode,
        clear=\E[H\E[2J$<50/>, cud1=^J, 
        cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<5/>, 
        ed=\E[0J$<20/>, el=\E[0K$<20/>, use=dm80, 
-# From: Adam Thompson <thompson@xanth.magic.mb.ca> Sept 10 1995
+# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
 dt80-sas|Datamedia DT803/DTX for SAS usage, 
        am, bw, 
        cols#80, lines#24, 
@@ -10414,8 +10762,7 @@ excel62-w|excel64-w|datamedia Excel 62 in 132 char mode,
 excel62-rv|excel64-rv|datamedia Excel 62 in reverse video mode, 
        dch1=\E[P, flash=\E[?5l\E[?5h, kbs=^H, kcub1=^H, kcud1=^J, 
        kf5=\EOu, kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l, 
-       smir=\E[4h, 
-       use=dt80, 
+       smir=\E[4h, use=dt80, 
 
 #### Falco
 #
@@ -10434,7 +10781,7 @@ excel62-rv|excel64-rv|datamedia Excel 62 in reverse video mode,
 # This terminal was released around 1983 and was discontinued long ago.
 # The standout and underline highlights are the same.
 falco|ts1|ts-1|falco ts-1, 
-       am, 
+       OTbs, am, 
        cols#80, it#8, lines#24, 
        bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, 
@@ -10443,7 +10790,7 @@ falco|ts1|ts-1|falco ts-1,
        kf0=^A0\r, rmir=\Er, rmso=\Eg0, rmul=\Eg0, sgr0=\Eg0, 
        smir=\Eq, smso=\Eg1, smul=\Eg1, 
 falco-p|ts1p|ts-1p|falco ts-1 with paging option, 
-       am, da, db, mir, msgr, ul, 
+       OTbs, am, da, db, mir, msgr, ul, 
        cols#80, it#8, lines#24, 
        bel=^G, cbt=\EI, clear=\E*, cr=^M, cub1=^H, cud1=\E[B, 
        cuf1=\E[C, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E[A, 
@@ -10530,7 +10877,7 @@ f1720|f1720a|fluke 1720A,
 # made this relative to adm+sgr -- note that <invis> isn't
 # known to work for f100 but does on the f110. --esr)
 f100|freedom|freedom100|freedom model 100, 
-       am, bw, hs, mir, msgr, xon, 
+       OTbs, am, bw, hs, mir, msgr, xon, 
        cols#80, lines#24, 
        acsc=, bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^J, 
        cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, 
@@ -10564,8 +10911,7 @@ f110|freedom110|Liberty Freedom 110,
        flash=\Eb$<200/>\Ed, il1=\EE, ip@, is2@, kclr=^^, kdch1=\EW, 
        kdl1=\ER, ked=\EY, kel=\ET, kf0=^AI\r, kf10@, kich1=\EQ, 
        kil1=\EE, mc4=\Ea, mc5=\E`, ri=\EJ, rmacs=\E%%, rmir=\Er\EO, 
-       smacs=\E$, smir=\EO\Eq, smso=\EG<, tsl=\Ef, 
-       use=f100, 
+       smacs=\E$, smir=\EO\Eq, smso=\EG<, tsl=\Ef, use=f100, 
 f110-14|Liberty Freedom 110 14inch, 
        dch1@, use=f110, 
 f110-w|Liberty Freedom 110 - 132 cols, 
@@ -10575,7 +10921,7 @@ f110-14w|Liberty Freedom 110 14in/132 cols,
        dch1@, use=f110, 
 # (f200: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr)
 f200|freedom200|Liberty Freedom 200, 
-       am, eslok, hs, mir, msgr, xon, 
+       OTbs, am, eslok, hs, mir, msgr, xon, 
        cols#80, it#8, lines#24, wsl#80, 
        acsc=, bel=^G, blink=\EG2, bold=\EG0, cbt=\EI, civis=\E.0, 
        clear=^Z, cnorm=\E.1, cr=^M, 
@@ -10589,8 +10935,7 @@ f200|freedom200|Liberty Freedom 200,
        kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, 
        kf8=^AG\r, kf9=^AH\r, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`, 
        ri=\EJ, rmacs=\E%%, rmir=\Er, smacs=\E$, smir=\Eq, smso=\EG<, 
-       tbc=\E3, tsl=\Ef, vpa=\E[%p1%{32}%+%c, 
-       use=adm+sgr, 
+       tbc=\E3, tsl=\Ef, vpa=\E[%p1%{32}%+%c, use=adm+sgr, 
 f200-w|Liberty Freedom 200 - 132 cols, 
        cols#132, use=f200, 
 # The f200 has the ability to reprogram the down cursor key. The key is
@@ -10617,6 +10962,7 @@ f200vi-w|Liberty Freedom 200 - 132 cols for vi,
 # line) by an escape sequence.  No info on this beast yet.
 # (go140: I added <rmam>/<smam> based on the init string -- esr)
 go140|graphon go-140, 
+       OTbs, 
        cols#80, it#8, lines#24, 
        clear=\E[H\E[2J$<10/>, cub1=^H, cuf1=\E[C, 
        cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, 
@@ -10631,12 +10977,13 @@ go140|graphon go-140,
 go140w|graphon go-140 in 132 column mode, 
        am, 
        cols#132, 
-       is2=\E<\E=\E[?3h\E[?7h\E(B\E[J\E7\E[;r\E8\E[m\E[q, use=go140, 
+       is2=\E<\E=\E[?3h\E[?7h\E(B\E[J\E7\E[;r\E8\E[m\E[q, 
+       use=go140, 
 # Hacked up vt200 termcap to handle GO-225/VT220
 # From: <edm@nwnexus.WA.COM>
 # (go225: I added <rmam>/<smam> based on the init string -- esr)
 go225|go-225|Graphon 225, 
-       am, mir, xenl, 
+       OTbs, am, mir, xenl, 
        cols#80, it#8, lines#25, vt#3, 
        blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, 
        csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C, 
@@ -10717,7 +11064,7 @@ go225|go-225|Graphon 225,
 # not AEP!
 #
 sb1|beehive superbee, 
-       am, bw, da, db, mir, ul, xsb, 
+       OTbs, am, bw, da, db, mir, ul, xsb, 
        cols#80, lines#25, xmc#1, 
        bel=^G, cbt=\E`$<650>, clear=\EH$<1>\EJ$<3>, cr=$<1>\r, 
        cub1=^H, cud1=^J, cuf1=\EC$<3>, cup=\EF%p2%03d%p1%03d, 
@@ -10733,7 +11080,8 @@ sb1|beehive superbee,
        smso=\E_1, smul=\E_0, tbc=\E3, 
 sbi|superbee|beehive superbee at Indiana U., 
        xsb, 
-       cr=\r$<1>, il1=1\EN\EL$<9>\EQ \EP$<9> \EO\ER\EA, use=sb1, 
+       cr=\r$<1>, il1=1\EN\EL$<9>\EQ \EP$<9> \EO\ER\EA, 
+       use=sb1, 
 # Alternate (older) description of Superbee - f1=escape, f2=^C.
 # Note: there are at least 3 kinds of superbees in the world.  The sb1
 # holds onto escapes and botches ^C's.  The sb2 is the best of the 3.
@@ -10761,12 +11109,22 @@ superbeeic|super bee with insert char,
 sb2|sb3|fixed superbee, 
        xsb@, use=superbee, 
 
+####  Beehive Medical Electronics
+#
+# Steve Seymour <srseymour@mindspring.com> writes (Wed, 03 Feb 1999):
+# Regarding your question though; Beehive terminals weren't made by Harris.
+# They were made by Beehive Medical Electronics in Utah. They went out of
+# business in the early '80s.
+#
+# (OK, then, I don't know why a couple of these say "harris beehive".)
+#
+
 # Reports are that most of these Beehive entries (except superbee) have not
 # been tested and do not work right.  <rmso> is a trouble spot.  Be warned.
 
 # (bee: <ich1> was empty, which is obviously bogus -- esr)
 beehive|bee|harris beehive, 
-       am, mir, 
+       OTbs, am, mir, 
        cols#80, lines#24, 
        cbt=\E>, clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC, 
        cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP, 
@@ -10781,7 +11139,7 @@ beehive|bee|harris beehive,
 # (beehive: <if=/usr/share/tabset/beehive> removed, no such file.  If you
 # really care, cook up one using ^F -- esr)
 beehive3|bh3m|beehiveIIIm|harris beehive 3m, 
-       am, 
+       OTbs, am, 
        cols#80, it#8, lines#20, 
        bel=^G, clear=^E^R, cr=^M, cub1=^H, cud1=^J, cuf1=^L, cuu1=^K, 
        dl1=\021$<350>, ed=^R, el=^P, home=^E, ht=^I, hts=^F, 
@@ -10791,8 +11149,11 @@ beehive4|bh4|beehive 4,
        cols#80, lines#24, 
        bel=^G, clear=\EE, cr=^M, cub1=\ED, cud1=^J, cuf1=\EC, 
        cuu1=\EA, ed=\EJ, el=\EK, home=\EH, ind=^J, 
+# There was an early Australian kit-built computer called a "Microbee".
+# It's not clear whether this is for one of those or for a relative
+# of the Beehive.
 microb|microbee|micro bee series, 
-       am, 
+       OTbs, am, 
        cols#80, it#8, lines#24, 
        bel=^G, clear=\EE, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, 
        cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, 
@@ -10807,8 +11168,7 @@ ha8675|harris 8675,
        is2=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU, kf1=^F, 
        kf10=\Ed, kf11=^W, kf12=\ER, kf13=\EE, kf14=\EI, kf15=\Ei, 
        kf16=\Eg, kf2=^P, kf3=^N, kf4=^V, kf5=^J, kf6=^T, kf7=^H, 
-       kf8=\177, kf9=\Ee, 
-       use=bee, 
+       kf8=\177, kf9=\Ee, use=bee, 
 # (8686: changed k10, k11...k16 to k;, F1...F6; fixed broken continuation
 # in :is: -- esr)
 ha8686|harris 8686, 
@@ -10849,12 +11209,13 @@ ha8686|harris 8686,
 # vi - this terminal is too dumb for even vi.  (The code is
 # there but it isn't debugged for this case.)
 hz1000|hazeltine 1000, 
+       OTbs, 
        cols#80, lines#12, 
        bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\s, home=^K, 
        ind=^J, 
 # From: <cbosg!ucbvax!pur-ee!cincy!chris> Thu Aug 20 09:09:18 1981
 hz1420|hazeltine 1420, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, clear=\E^\, cr=^M, cub1=^H, cud1=^J, cuf1=^P, 
        cup=\E\021%p2%c%p1%{32}%+%c, cuu1=\E^L, dl1=\E^S, 
@@ -10864,7 +11225,7 @@ hz1420|hazeltine 1420,
 # freakout with out-of-range args and tn3270.  No hz since it needs to
 # receive tildes.
 hz1500|hazeltine 1500, 
-       am, hz, 
+       OTbs, am, hz, 
        cols#80, lines#24, 
        bel=^G, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P, 
        cup=~\021%p2%p2%?%{30}%>%t%{32}%+%;%{96}%+%c%p1%{96}%+%c, 
@@ -10876,7 +11237,7 @@ hz1500|hazeltine 1500,
 # <smso=\E^Y>, but these caps were commented out in 8.3; also,
 # removed incorrect and overridden ":do=^J:" -- esr)
 hz1510|hazeltine 1510, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, clear=\E^\, cr=^M, cub1=^H, cud1=\E^K, cuf1=^P, 
        cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, ed=\E^X, 
@@ -10888,7 +11249,7 @@ hz1510|hazeltine 1510,
 # Other switches may be set for operator convenience or communication
 # requirements.
 hz1520|Hazeltine 1520, 
-       am, bw, msgr, 
+       OTbs, am, bw, msgr, 
        cols#80, lines#24, 
        bel=^G, bold=\E^_, clear=\E^\, cr=^M, cub1=^H, cud1=^J, 
        cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, 
@@ -10908,14 +11269,14 @@ hz1520-noesc|hazeltine 1520,
 # is not braindamaged.  It has tildes and backprimes and everything!
 # Be sure the auto lf/cr switch is set to cr.
 hz1552|hazeltine 1552, 
+       OTbs, 
        cud1=^J, dl1=\EO, il1=\EE, kf1=\EP, kf2=\EQ, kf3=\ER, lf1=blue, 
-       lf2=red, lf3=green, 
-       use=vt52, 
+       lf2=red, lf3=green, use=vt52, 
 hz1552-rv|hazeltine 1552 reverse video, 
        cud1=^J, rmso=\ET, smso=\ES, use=hz1552, 
 # Note: h2000 won't work well because of a clash between upper case and ~'s.
 hz2000|hazeltine 2000, 
-       am, 
+       OTbs, OTnc, am, 
        cols#74, lines#27, 
        bel=^G, clear=~\034$<6>, cub1=^H, cud1=^J, 
        cup=~\021%p2%c%p1%c, dl1=~\023$<6>, home=~^R, 
@@ -10929,7 +11290,7 @@ hz2000|hazeltine 2000,
 # char as a built in function. Vi has to delete to end of line and then 
 # redraw the rest of the line.
 esprit|Hazeltine Esprit I, 
-       am, bw, 
+       OTbs, am, bw, 
        cols#80, lines#24, 
        bel=^G, cbt=\E^T, clear=\E^\, cr=^M, cub1=^H, cud1=\E^K, 
        cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, 
@@ -10946,7 +11307,7 @@ esprit-am|hazeltine esprit auto-margin,
 # that the terminal would work somewhat if the auto LF/CR was turned off.
 # (hmod1: removed :dn=~^K: -- esr)
 hmod1|Hazeltine Modular 1, 
-       am, hz, 
+       OTbs, am, hz, 
        cols#80, lines#24, 
        bel=^G, cbt=~^T, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P, 
        cup=~\021%p2%c%p1%c, cuu1=~^L, dl1=~^S, home=~^R, il1=~^Z, 
@@ -10957,9 +11318,9 @@ hmod1|Hazeltine Modular 1,
 #      from  Will Martin <control@ALMSA-1.ARPA> via BRL
 # Like VT100, except for different "am" behavior.
 hazel|exec80|h80|he80|Hazeltine Executive 80, 
-       am, 
+       OTbs, OTpt, am, 
        cols#80, it#8, lines#24, vt#3, 
-       bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>, 
+       OTnl=^J, bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>, 
        clear=\E[;H\E[2J$<50/>, cr=^M, csr=\E[%i%p1%d;%p2%dr, 
        cub1=^H, cud1=^J, cuf1=\E[C$<2/>, 
        cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>, 
@@ -10981,7 +11342,7 @@ ibm327x|line mode IBM 3270 style,
        clear=^M^J, el=^M, home=^M, 
 
 ibm3101|i3101|IBM 3101-10, 
-       am, xon, 
+       OTbs, 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, 
@@ -10990,12 +11351,11 @@ ibm3101|i3101|IBM 3101-10,
 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, 
+       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.
+# removed kend, knp, kpp -TD
 ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display, 
-       am, mir, msgr, 
+       OTbs, am, mir, msgr, 
        cols#80, it#8, lines#24, 
        acsc=j\352k\353l\354m\355n\356q\361t\364u\365v\366w\367x\370, 
        bel=^G, blink=\E4D, bold=\E4H, clear=\EH\EJ, cr=^M, cub1=\ED, 
@@ -11003,39 +11363,40 @@ 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, kend=\E2, kf1=\Ea\r, kf10=\Ej\r, 
+       kdl1=\EO, ked=\EJ, kel=\EI, 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, 
-       knp=\EI, kpp=\EL, ktbc=\E 1, mc4=^P^T, mc5=^P^R, rev=\E4A, 
-       rmcup=\E>A, rmso=\E4@, rmul=\E4@, 
+       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, 
 
 ibm3161-C|IBM 3161-C NLS terminal using cartridge, 
-       rmcup=\E>B, s0ds=\E>B, s1ds=\E>A, smcup=\E>B, 
-       use=ibm3161, 
+       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, 
 
+# This really should not use setab/setaf, but it is clear that the
+# original terminfo does not toggle red/blue colors as in setb/setf.
 ibm3164|i3164|IBM 3164, 
        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!'%;@, 
+       op=\E4 "@, rmcup=\E!9(N\E>B, s0ds=\E>B, s1ds=\E>A, 
+       setab=\E4  %p1%{64}%+%c, 
+       setaf=\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, 
+       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, 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, 
@@ -11044,25 +11405,24 @@ ibm5151|wy60-AT|wyse60-AT|IBM 5151 Monochrome display,
        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, 
+       kend=\E[146q, 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, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, rmir=\E[4l, 
+       rmso=\E[m, rmul=\E[m, rs2=\Ec, 
        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, 
+       OTbs, am, eo, msgr, 
        cols#80, it#8, lines#52, 
        clear=\EH\EK, cub1=^H, cud1=\EB, cuf1=\EC, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ, 
@@ -11080,25 +11440,31 @@ ibmmono|IBM workstation monochrome,
        kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\EY, 
        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, 
+       sgr0=\Ew\Eq\Ez\EB, smso=\EZ, smul=\EW, tsl=\Ej\EY8%+ \Eo, 
+       use=ibm3101, 
 ibmega|IBM Enhanced Color Display, 
        cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, 
-       nel=^M^J, 
-       use=ibmmono, 
+       nel=^M^J, use=ibmmono, 
+# This color scheme is assumed in some recent IBM terminal descriptions
+# (green on black, emulated on a 16-color terminal).
+ibm+color|IBM color definitions, 
+       colors#8, ncv#3, pairs#64, 
+       op=\E[32m\E[40m, 
+       setb=\E[%?%p1%{0}%=%t40m%e%p1%{1}%=%t41m%e%p1%{2}%=%t42m%e%p1%{3}%=%t43m%e%p1%{4}%=%t44m%e%p1%{5}%=%t45m%e%p1%{6}%=%t46m%e%p1%{7}%=%t107m%;, 
+       setf=\E[%?%p1%{0}%=%t30m%e%p1%{1}%=%t31m%e%p1%{2}%=%t32m%e%p1%{3}%=%t33m%e%p1%{4}%=%t34m%e%p1%{5}%=%t35m%e%p1%{6}%=%t36m%e%p1%{7}%=%t97m%;, 
 ibm5154|IBM 5154 Color display, 
-       colors#8, pairs#64, 
+       colors#8, ncv@, pairs#64, 
        bold@, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151, 
+       use=ibm+color, 
 ibmega-c|ibm5154-c|IBM Enhanced Color Display with standout and underline, 
        rmso=\EB, rmul=\EB, smso=\EF\Ef3;, smul=\EF\Ef2;, 
        use=ibmmono, 
 ibmvga-c|IBM VGA display color termcap, 
        cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, 
-       nel=^M^J, 
-       use=ibmega-c, 
+       nel=^M^J, use=ibmega-c, 
 ibmvga|IBM VGA display, 
        cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, 
-       nel=^M^J, 
-       use=ibmega, 
+       nel=^M^J, use=ibmega, 
 # ibmapa* and ibmmono entries come from ACIS 4.3 distribution
 rtpc|ibmapa16|IBM 6155 Extended Monochrome Graphics Display, 
        lines#32, 
@@ -11111,17 +11477,16 @@ ibmapa8c|ibmapa8|IBM 6154 Advanced Graphics Display,
        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, 
+       dim=\EF\Ef7;, dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo, 
+       use=ibmega-c, 
 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, 
+       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, 
+       sgr0=\E[0;10m, use=ibm5151, 
 ibm6153-90|IBM 6153 Black & White display, 
        cols#90, lines#36, 
        blink@, bold@, use=ibm5151, 
@@ -11131,7 +11496,7 @@ ibm8512|ibm8513|IBM color VGA Terminal,
        am, mir, msgr, 
        cols#80, it#8, lines#25, 
        acsc=jjkkllmmnnqqttuuvvwwxx, blink=\E[5m, bold=\E[1m, 
-       clear=\E[H\E[2J, cub1=\E[D, cud1=^J, cuf1=\E[C, 
+       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, 
@@ -11148,24 +11513,71 @@ 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, 
+       use=ibm5151, use=ibm+color, 
 hft-c-old|HFT with Color PC850, 
        colors#8, pairs#64, 
        setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151, 
+       use=ibm+color, 
+hft-old|AIWS High Function Terminal, 
+       am, xon, 
+       cols#80, lines#25, 
+       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, 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=ibm+color, 
 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, 
+#       lft-pc850 : IBM Low Function Terminal Device
+#    lft "supports" underline, bold, and blink in the sense that the lft code
+#    sets all the right bits.  HOWEVER, depending upon the adapter, these
+#    attributes may or may not be supported by the device driver.
+lft|lft-pc850|LFT-PC850|IBM LFT PC850 Device, 
+       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, cbt=\E[Z, clear=\E[H\E[J, 
+       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, dch=\E[%p1%dP, dch1=\E[P, 
+       dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[2J, el=\E[0K, 
+       home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, il=\E[%p1%dL, 
+       il1=\E[L, ind=\ED, 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, 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, rev=\E[7m, ri=\EL, rin=\E[%p1%dT, 
+       rmacs=\E(B, rmir=\E[4l, rmso=\E[0m, rmul=\E[0m, rs2=\Ec, 
+       sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;, 
+       sgr0=\E[0m, smacs=\E(0, smir=\E[4h, smso=\E[7m, smul=\E[4m, 
+       tbc=\E[3g, 
 ibm5081|hft|IBM Megapel Color display, 
        acsc=jjkkllmmnnqqttuuvvwwxx, blink@, bold@, s0ds=\E(B, 
-       s1ds=\E(0, sgr0=\E[0m\E(B, 
-       use=ibm5154, 
+       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, 
+       dsl=\Ej\EYA \EI\Ek, fsl=\Ek, tsl=\Ej\EYA%+ \Eo, 
+       use=ibmega-c, 
 ibm8503|ibm8507|ibm8604|IBM 8503 B & W VGA display, 
        use=hft-c, 
 ibm8514|IBM 8514/a color VGA display, 
@@ -11180,48 +11592,42 @@ ibm8514-c|IBM 8514 color display with standout and underline,
 
 #
 # 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, 
+# -- added rc, sc based on manpage -TD
+aixterm|IBM Aixterm Terminal Emulator, 
        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, 
+       fsl=\E[?F, rc=\E8, ri@, s0ds=\E(B, s1ds=\E(0, sc=\E7, 
+       sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;, 
+       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, 
        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%;m, 
-       sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT, 
-       use=ibm6153, 
+       sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT, use=ibm6153, 
 aixterm-m-old|old IBM AIXterm Monochrome Terminal Emulator, 
        eslok, hs, 
        bold=\E[1m, dsl=\E[?E, fsl=\E[?F, ri@, 
        sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m, 
-       tsl=\E[?%p1%dT, 
-       use=ibm6153, 
+       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, 
+       acsc@, use=aixterm-m, 
 
 #### Infoton/General Terminal Corp.
 #
 
 # gt100 sounds like something DEC would come out with.  Let's hope they don't.
 i100|gt100|gt100a|General Terminal 100A (formerly Infoton 100), 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, 
        cup=\Ef%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dl1=\EM, 
        ed=\EJ, el=\EK, flash=\Eb$<200/>\Ea, home=\EH, il1=\EL, 
        ind=^J, rmso=\Ea, smso=\Eb, 
 i400|infoton 400, 
-       am, 
+       OTbs, am, 
        cols#80, lines#25, 
        bel=^G, clear=\E[2J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C, 
        cup=%i\E[%p1%3d;%p2%3dH, cuu1=\E[A, 
@@ -11503,7 +11909,7 @@ infoton,
 # foreground, black background, normal highlight.
 #
 icl6404|kds7372|icl6402|kds6402|ICL 6404 aka Kokusai Display Systems 7372, 
-       am, hs, 
+       OTbs, am, hs, 
        cols#80, lines#24, 
        bel=^G, blink=\E[2ZZ, cbt=\EI, civis=\E.0, clear=\E*, 
        cnorm=\E.3, cr=^M, 
@@ -11517,8 +11923,7 @@ icl6404|kds7372|icl6402|kds6402|ICL 6404 aka Kokusai Display Systems 7372,
        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, 
+       rs2=\Eo1, use=icl6404, 
 
 #### Interactive Systems Corp
 #
@@ -11531,7 +11936,7 @@ icl6404-w|kds7372-w|ICL 6404 aka Kokusai Display Systems 7372 132 cols,
 # (intext: removed obsolete ":ma=^K^P^R^L^L ::bc=^_:", also the
 # ":le=^_:" later overridden -- esr)
 intext|Interactive Systems Corporation modified owl 1200, 
-       am, 
+       OTbs, am, 
        cols#80, it#8, lines#24, xmc#1, 
        bel=^G, cbt=^Y, clear=\014$<132>, cr=^M, cub1=^H, cud1=^J, 
        cuf1=^^, cup=\017%p1%{32}%+%c%p2%{32}%+%c, cuu1=^\, 
@@ -11580,7 +11985,7 @@ intext2|intextii|INTERACTIVE modified owl 1251,
 # Kimtron ABM 85 added by Dual Systems
 # (abm85: removed duplicated ":kd=^J:" -- esr)
 abm85|Kimtron ABM 85, 
-       am, bw, msgr, 
+       OTbs, am, bw, msgr, 
        cols#80, it#8, lines#24, xmc#1, 
        cbt=\EI, clear=\E*, cub1=^H, cud1=^J, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, 
@@ -11617,24 +12022,22 @@ abm85h|Kimtron ABM 85H native mode,
        bel=^G, cnorm=\E.4, cvvis=\E.2, dim=\E), dsl=\Ee, flash@, 
        fsl=^M, invis@, 
        is2=\EC\EN\EX\024\016\EA\Ea\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r\EG0\Ed\E.4\El, 
-       kcud1=^V, sgr0=\E(\EG0, smir=\EZ, tsl=\Eg\Ef, 
-       use=adm+sgr, use=abm85, 
+       kcud1=^V, sgr0=\E(\EG0, smir=\EZ, tsl=\Eg\Ef, use=adm+sgr, 
+       use=abm85, 
 abm85e|Kimtron ABM 85H in 920E mode, 
        xmc@, 
        bel=^G, dim=\E), flash@, 
        is2=\EC\EX\EA\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r\Ek\Eq\Em, 
-       rev=\Ej, sgr0=\E(\Ek, smir=\EZ, 
-       use=abm85, 
+       rev=\Ej, sgr0=\E(\Ek, smir=\EZ, use=abm85, 
 abm85h-old|oabm85h|o85h|Kimtron ABM 85H with old firmware rev., 
        xmc@, 
        bel=^G, dim=\E), 
        is2=\E}\EC\EX\Ee\En\E%\Er\E(\Ek\Em\Eq\Ed\ET\EC\E9\EF, 
-       rev=\Ej, sgr0=\E(\Ek, smir=\EZ, 
-       use=abm85, 
+       rev=\Ej, sgr0=\E(\Ek, smir=\EZ, use=abm85, 
 # From: <malman@bbn-vax.arpa>
 # (kt7: removed obsolete :ma=^V^J^L :" -- esr)
 kt7|kimtron model kt-7, 
-       am, 
+       OTbs, am, 
        cols#80, it#8, lines#24, 
        cbt=\EI, clear=^Z, cub1=^H, cud1=^V, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, 
@@ -11644,8 +12047,7 @@ kt7|kimtron model kt-7,
        kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET, kf0=^AI\r, 
        kf1=^A@\r, 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=^^, 
-       kich1=\EQ, kil1=\EE, tsl=\Ef, 
-       use=adm+sgr, 
+       kich1=\EQ, kil1=\EE, tsl=\Ef, use=adm+sgr, 
 # Renamed TB=^I to :ta:, BE=^G to :bl:, BS=^H to :kb:, N to :kS: (based on the
 # other kt7 entry and the adjacent key capabilities).  Removed EE which is
 # identical to :mh:.  Removed :ES=\EGD: which is some kind of highlight
@@ -11803,8 +12205,7 @@ prism7|p7|P7|MDC Prism-7,
 #
 prism8|p8|P8|MDC Prism-8, 
        cup=\E[%i%p1%d;%p2%dH, hpa=\E[%i%p1%d`, is2=\E[<12h, 
-       vpa=\E[%i%p1%dd, 
-       use=p4, 
+       vpa=\E[%i%p1%dd, use=p4, 
 
 # p8-w: Prism-8 in 132 column mode
 # --------------------------------
@@ -11990,7 +12391,7 @@ p8gl|prism8gl|McDonnell-Douglas Prism-8 alternate definition,
 # since Sytek insists ^S means xoff.
 # (act4: found ":ic=2^S:ei=:im=:ip=.1*^V:" commented out in 8.3 -- esr)
 act4|microterm|microterm act iv, 
-       am, 
+       OTbs, 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%?%{47}%>%t%{48}%+%;%{80}%+%c, 
@@ -12002,7 +12403,8 @@ act4|microterm|microterm act iv,
 # The act 5 has hardware tabs, but they are in columns 8, 16, 24, 32, 41 (!)...
 # (microterm5: removed obsolete ":ma==^Z^P^Xl^Kj:" -- esr)
 act5|microterm5|microterm act v, 
-       kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, ri=\EH$<3>, uc=^H\EA, use=act4, 
+       kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, ri=\EH$<3>, uc=^H\EA, 
+       use=act4, 
 # Mimes using brightness for standout.  Half bright is really dim unless
 # you turn up the brightness so far that lines show up on the screen.
 mime-fb|full bright mime1, 
@@ -12013,7 +12415,7 @@ mime-hb|half bright mime1,
 # the more plausible ":do=^J:" -- esr)
 # uc was at one time disabled to get around a curses bug, be wary of it
 mime|mime1|mime2|mimei|mimeii|microterm mime1, 
-       am, 
+       OTbs, 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%{48}%+%;%{80}%+%c, 
@@ -12023,7 +12425,7 @@ mime|mime1|mime2|mimei|mimeii|microterm mime1,
 # These termcaps (for mime2a) put the terminal in low intensity mode
 # since high intensity mode is so obnoxious.
 mime2a-s|microterm mime2a (emulating an enhanced soroc iq120), 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, clear=\EL, cr=^M, cub1=^H, cud1=^J, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EI, dch1=\ED, 
@@ -12033,6 +12435,7 @@ mime2a-s|microterm mime2a (emulating an enhanced soroc iq120),
        smir=\EE, smso=\E\:, smul=\E6, 
 # This is the preferred mode (but ^X can't be used as a kill character)
 mime2a|mime2a-v|microterm mime2a (emulating an enhanced vt52), 
+       OTbs, 
        cols#80, it#8, lines#24, 
        bel=^G, clear=\EL, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=^N, 
@@ -12046,7 +12449,8 @@ mime3a|mime1 emulating 3a,
        kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, use=adm3a, 
 mime3ax|mime-3ax|mime1 emulating enhanced 3a, 
        it#8, 
-       dl1=\027$<80>, ed=^_, el=^X, ht=\011$<3>, il1=\001$<80>, use=mime3a, 
+       dl1=\027$<80>, ed=^_, el=^X, ht=\011$<3>, il1=\001$<80>, 
+       use=mime3a, 
 # Wed Mar  9 18:53:21 1983
 # We run our terminals at 2400 baud, so there might be some timing problems at
 # higher speeds. The major improvements in this model are the terminal now 
@@ -12129,26 +12533,30 @@ ergo4000|microterm ergo 4000,
 # 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
+# The Intecolor emulation of the NCR 2900/260C color terminal is basically 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
+       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 basically 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.
+       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 basically 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, 
+       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, 
+       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
@@ -12235,8 +12643,7 @@ ncr260vt100pp|NCR 2900_260 vt100 with PC+ kybd,
        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, 
+       smkx=\E=, use=ncr260vt100an, 
 ncr260vt100wpp|NCR 2900_260 vt100 wide mode pc+  kybd, 
        cols#132, 
        cup=\E[%i%p1%d;%p2%dH$<30>, 
@@ -12649,6 +13056,21 @@ ncrvt100wan|NCRVT100WPP|ncrvt100wpp|NCR VT100 emulation of the 2900 terminal,
 # 7   - Enable / Disable CR turnoff
 # 8   - Enable / Disable backspace
 #
+# Since each attribute parameter is 0 or 1, we shift each attribute (standout,
+# reverse, blink, dim, and underline) the appropriate number of bits (by
+# multiplying the 0 or 1 by a correct factor to shift) so the bias character,
+# '@' is (effectively) "or"ed with each attribute to generate the proper third
+# character in the <ESC>0 sequence.  The <sgr> string implements the following
+# equation:
+#
+# ((((('@' + P5) | (P4 << 1)) | (P3 << 3)) | (P2 << 4)) | (p1 * 17))    =>
+# ((((('@' + P5) + (P4 << 1)) + (P3 << 3)) + (P2 << 4)) + (p1 * 17))
+#
+#      Where:  P1 <==> Standout attribute parameter
+#              P2 <==> Underline attribute parameter
+#              P3 <==> Reverse attribute parameter
+#              P4 <==> Blink attribute parameter
+#              P5 <==> Dim attribute parameter
 # From <root@goliath.un.atlantaga.NCR.COM>, init string hacked by SCO.
 ncr7900i|ncr7900|ncr 7900 model 1, 
        am, bw, ul, 
@@ -12670,6 +13092,10 @@ ncr7900iv|ncr 7900 model 4,
        kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, 
        khome=\EH, lf6=blue, lf7=red, lf8=white, nel=^M^J, 
        tsl=\Ej\Ex5\Ex1\EY8%p1%{32}%+%c\Eo, 
+# Warning: This terminal will lock out the keyboard when it receives a CTRL-D.
+#         The user can enter a CTRL-B to get out of this locked state.
+# In <hpa>, we want to output the character given by the formula:
+#              ((col / 10) * 16) + (col % 10)          where "col" is "p1"
 ncr7901|ncr 7901 model, 
        am, bw, ul, 
        cols#80, lines#24, 
@@ -12690,19 +13116,20 @@ ncr7901|ncr 7901 model,
 #
 
 bantam|pe550|pe6100|perkin elmer 550, 
+       OTbs, 
        cols#80, lines#24, 
        bel=^G, clear=\EK$<20>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, 
        cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, 
        el=\EI$<20>, home=\EH, ind=^J, ll=\EH\EA, 
 fox|pe1100|perkin elmer 1100, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, clear=\EH\EJ$<132>, cr=^M, cub1=^H, cud1=^J, 
        cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, 
        ed=\EJ$<5.5*>, el=\EI, flash=\020\002$<200/>\020\003, 
        home=\EH, hts=\E1, ind=^J, ll=\EH\EA, tbc=\E3, 
 owl|pe1200|perkin elmer 1200, 
-       am, in, 
+       OTbs, am, in, 
        cols#80, lines#24, 
        bel=^G, clear=\EH\EJ$<132>, cr=^M, cub1=^H, cud1=^J, 
        cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, 
@@ -12736,8 +13163,7 @@ pe7000m|perkin elmer 7000 series monochrome monitor,
        ll=\ES7\s, ri=\ER, 
 pe7000c|perkin elmer 7000 series colour monitor, 
        is1=\E!\0\EW  7o\Egf\Eb0\Ec7\ES7\s, rmso=\Eb0, 
-       rmul=\E!\0, smso=\Eb2, smul=\E!\s, 
-       use=pe7000m, 
+       rmul=\E!\0, smso=\Eb2, smul=\E!\s, use=pe7000m, 
 
 #### Sperry Univac
 #
@@ -12784,7 +13210,7 @@ tandem6510|adm3a repackaged by Tandem,
 # (tandem653: had ":sb=\ES:", probably someone's mistake for sf; also,
 # removed <if=/usr/share/tabset/tandem653>, no such file -- esr)
 tandem653|t653x|Tandem 653x multipage terminal, 
-       am, da, db, hs, 
+       OTbs, am, da, db, hs, 
        cols#80, lines#24, wsl#64, xmc#1, 
        clear=\EI, cub1=^H, cud1=^J, cuf1=\EC, 
        cup=\023%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dsl=\Eo\r, 
@@ -12855,7 +13281,7 @@ pt210|TRS-80 PT-210 printing terminal,
 #
 
 tek|tek4012|tektronix 4012, 
-       os, 
+       OTbs, os, 
        cols#75, lines#35, 
        bel=^G, clear=\E\014$<1000>, cr=^M, cub1=^H, cud1=^J, 
        ff=\014$<1000>, is2=\E^O, 
@@ -12884,11 +13310,11 @@ tek4015-sm|tektronix 4015 in small font,
 # reverse video.  If you like reverse video stand-out mode but don't want
 # it to flash, change the letter 'H' to 'P' in the :so: field.
 tek4023|tektronix 4023, 
-       am, 
-       cols#80, lines#24, vt#4, xmc#1, 
-       bel=^G, clear=\E\014$<4/>, cr=^M, cub1=^H, cud1=^J, cuf1=^I
-       cup=\034%p2%{32}%+%c%p1%{32}%+%c, kbs=^H, rmso=^_@
-       smso=^_P, 
+       OTbs, am, 
+       OTdN#4, cols#80, lines#24, vt#4, xmc#1, 
+       OTnl=^J, bel=^G, clear=\E\014$<4/>, cr=^M, cub1=^H, cud1=^J
+       cuf1=^I, cup=\034%p2%{32}%+%c%p1%{32}%+%c, kbs=^H
+       rmso=^_@, smso=^_P, 
 # It is recommended that you run the 4025 at 4800 baud or less;
 # various bugs in the terminal appear at 9600.  It wedges at the
 # bottom of memory (try "cat /usr/dict/words"); ^S and ^Q typed
@@ -12905,7 +13331,7 @@ tek4023|tektronix 4023,
 # and didn't seem necessary.
 #
 tek4024|tek4025|tek4027|tektronix 4024/4025/4027, 
-       am, da, db, 
+       OTbs, am, da, db, 
        cols#80, it#8, lines#34, lm#0, 
        bel=^G, clear=\037era\r\n\n, cmdch=^_, cr=^M, 
        cub=\037lef %p1%d\r, cub1=^H, cud=\037dow %p1%d\r, 
@@ -12923,12 +13349,10 @@ tek4025-17|tek 4025 17 line window,
 tek4025-17-ws|tek 4025 17 line window in workspace, 
        is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r\037wor 17\r\037mon 17\r, 
        rmcup=\037mon h\r, rmso=\037att s\r, smcup=\037wor h\r, 
-       smso=\037att e\r, 
-       use=tek4025-17, 
+       smso=\037att e\r, use=tek4025-17, 
 tek4025-ex|tek4027-ex|tek 4025/4027 w/!, 
        is2=\037com 33\r\n!sto 9 17 25 33 41 49 57 65 73\r, 
-       rmcup=\037com 33\r, smcup=!com 31\r, 
-       use=tek4025, 
+       rmcup=\037com 33\r, smcup=!com 31\r, use=tek4025, 
 # Tektronix 4025a
 # From: Doug Gwyn <gwyn@brl-smoke.ARPA>
 # The following status modes are assumed for normal operation (replace the
@@ -12950,7 +13374,7 @@ tek4025-ex|tek4027-ex|tek 4025/4027 w/!,
 # (tek4025a: removed obsolete ":xx:". This may mean the tek4025a entry won't
 # work any more. -- esr)
 tek4025a|Tektronix 4025A, 
-       am, bw, da, db, xon, 
+       OTbs, OTpt, am, bw, da, db, xon, 
        cols#80, it#8, lines#34, 
        bel=^G, cbt=\035bac;, clear=\035era;\n\035rup;, cmdch=^], 
        cr=^M, cub=\035lef %p1%d;, cub1=^H, cud=\035dow %p1%d;, 
@@ -12959,6 +13383,7 @@ tek4025a|Tektronix 4025A,
        dch1=\035dch;, dl=\035dli %p1%d;, dl1=\035dli;, 
        el=\035dch 80;, hpa=\r\035rig %p1%d;, ht=^I, 
        il1=\013\035ili;, ind=^J, indn=\035dow %p1%d;, 
+       rs2=!com 29\035del 0\035rss t\035buf\035buf n\035cle\035dis\035dup\035ech r\035eol\035era g\035for n\035pad 203\035pad 209\035sno n\035sto 9 17 25 33 41 49 57 65 73\035wor 0;, 
        tbc=\035sto;, 
 # From: cbosg!teklabs!davem Wed Sep 16 21:11:41 1981
 # Here's the command file that I use to get rogue to work on the 4025.
@@ -12967,7 +13392,7 @@ tek4025a|Tektronix 4025A,
 # see the cursor.)
 # (This "learns" the arrow keys for rogue. I have adapted it for termcap - mrh)
 tek4025-cr|tek 4025 for curses and rogue, 
-       am, 
+       OTbs, am, 
        cols#80, it#8, lines#33, 
        clear=\037era;, cub1=^H, cud1=^F^J, cuf1=\037rig;, 
        cup=\037jum%i%p1%d\,%p2%d;, cuu1=^K, ht=^I, ind=^F^J, 
@@ -12978,10 +13403,9 @@ tek4025-cr|tek 4025 for curses and rogue,
 #      :te=\037lea p1\037lea p2\037lea p3\037lea p4\037lea pt\037lea p5\037lea p6\037lea p7\037lea p8\037lea p9/la/13\037lea p.\037lea p0\037wor 0:
 tek4025ex|4025ex|4027ex|tek 4025 w/!, 
        is2=\037com 33\r\n!sto 9\,17\,25\,33\,41\,49\,57\,65\,73\r, 
-       rmcup=\037com 33\r, smcup=!com 31\r, 
-       use=tek4025, 
+       rmcup=\037com 33\r, smcup=!com 31\r, use=tek4025, 
 tek4105|tektronix 4105, 
-       am, mir, msgr, ul, xenl, xt, 
+       OTbs, am, mir, msgr, ul, xenl, xt, 
        cols#79, it#8, lines#29, 
        acsc=, bel=^G, blink=\E[=3;<7m, bold=\E[=7;<4m, cbt=\E[Z, 
        clear=\E[2J\E[H, cr=^M, cud1=\E[1B, cuf1=\E[1C, 
@@ -13040,8 +13464,8 @@ tek4105-30|4015 emulating 30 line vt100,
 # "IC" cannot be used in combination with "im" & "ei".
 # "tek4105a" is just a guess:
 tek4105a|Tektronix 4105, 
-       msgr, xon, 
-       cols#80, it#8, lines#30, vt#3, 
+       OTbs, OTpt, msgr, xon, 
+       OTkn#8, cols#80, it#8, lines#30, vt#3, 
        acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, 
        civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J, 
        cnorm=\E%!0\ETD10\E%!1, cr=^M, csr=\E[%i%p1%d;%p2%dr, 
@@ -13056,8 +13480,9 @@ tek4105a|Tektronix 4105,
        kf6=\EOR, kf7=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, 
        lf5=F6, lf6=F8, ll=\E[30;H, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, 
        rin=\E[%p1%dT, rmacs=^O, rmcup=\E%!0\ELBH=\E%!1, 
-       rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, sc=\E7, 
-       sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h, 
+       rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, 
+       rs2=\030\E%!0\EKC\E\014\EKR0\EKF0\ENM0\ELBH=\ETF8000010F40\ELI100\ELLA>\ELM0\EKE0\ENF1\EKS0\END0\E%!1\Ec\E[?3;5l\E[?7;8h\E[r\E[m\E>, 
+       sc=\E7, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h, 
        smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, 
 
 #
@@ -13105,7 +13530,7 @@ tek4106brl|tek4107brl|tek4109brl|Tektronix 4106 4107 or 4109,
        smkx=\E[?1h\E=, smso=\E[7;42m, smul=\E[4m, tbc=\E[3g, 
 
 tek4107|tek4109|tektronix terminals 4107 4109, 
-       am, mir, msgr, ul, xenl, xt, 
+       OTbs, am, mir, msgr, ul, xenl, xt, 
        cols#79, it#8, lines#29, 
        bel=^G, blink=\E%!1\E[5m$<2>\E%!0, 
        bold=\E%!1\E[1m$<2>\E%!0, clear=\ELZ, cnorm=\E%!0, cr=^M, 
@@ -13148,7 +13573,7 @@ otek4112|o4112-nd|otek4113|otek4114|old tektronix 4110 series,
        rmcup=\EKA1\ELV1, smcup=\EKA0\ELV0\EMG0, 
 # The 4112 with the ANSI compatibility enhancement
 tek4112|tek4114|tektronix 4110 series, 
-       am, db, 
+       OTbs, am, db, 
        cols#80, lines#34, 
        cbt=\E[Z, clear=\E[2J\E[0;0H, cub1=^H, cuf1=\E[C, 
        cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, dch1=\E[P, dl1=\E[M, 
@@ -13156,6 +13581,7 @@ tek4112|tek4114|tektronix 4110 series,
        ind=\E7\E[0;0H\E[M\E8, is2=\E3!1, ri=\E7\E[0;0H\E[L\E8, 
        rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m, 
 tek4112-nd|4112 not in dialog area, 
+       OTns, 
        cuu1=^K, use=tek4112, 
 tek4112-5|4112 in 5 line dialog area, 
        lines#5, use=tek4112, 
@@ -13165,7 +13591,7 @@ tek4112-5|4112 in 5 line dialog area,
 # previously \0410 and \0411 sequences...I don't *think* they were supposed
 # to be 4-digit octal -- esr)
 tek4113|tektronix 4113 color graphics with 5 line dialog area, 
-       am, da, eo, 
+       OTbs, am, da, eo, 
        cols#80, lines#5, 
        clear=\ELZ, cub1=^H, cud1=^J, cuf1=\ELM1 \ELM0, 
        flash=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0, 
@@ -13177,7 +13603,7 @@ tek4113-34|tektronix 4113 color graphics with 34 line dialog area,
 # supported here. :uc: is slow, but looks nice. Suggest setenv MORE -up .
 # :vb: needs enough delay to let you see the background color being toggled.
 tek4113-nd|tektronix 4113 color graphics with no dialog area, 
-       am, eo, 
+       OTbs, am, eo, 
        cols#80, it#8, lines#34, 
        clear=\E^L, cub1=^H, cud1=^J, cuf1=^I, cuu1=^K, 
        cvvis=\ELZ\EKA0, 
@@ -13187,7 +13613,7 @@ tek4113-nd|tektronix 4113 color graphics with no dialog area,
 # This entry is from Tek. Inc.  (Brian Biehl)
 # (tek4115: :bc: renamed to :le:, <rmam>/<smam> added based on init string -- esr)
 otek4115|Tektronix 4115, 
-       am, da, db, eo, 
+       OTbs, am, da, db, eo, 
        cols#80, it#8, lines#34, 
        cbt=\E[Z, clear=\E[H\E[2J, 
        cnorm=\E%!0\ELBG8\E%!1\E[34;1H, cub1=\E[D, cud1=\E[B, 
@@ -13229,8 +13655,7 @@ tek4125|tektronix 4125,
        lines#34, 
        csr@, dl1=\E[1M, il1=\E[1L, 
        is2=\E%\E!0\EQD1\EUX03\EKA\ELBB2\ELCE0\ELI100\ELJ2\ELLB2\ELM0\ELS1\ELX00\ELV1\E%\E!1\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, 
-       rc@, sc@, smkx=\E=, 
-       use=vt100, 
+       rc@, sc@, smkx=\E=, use=vt100, 
 
 # From: <jcoker@ucbic>
 # (tek4207: This was the termcap file's entry for the 4107/4207, but SCO
@@ -13256,6 +13681,7 @@ tek4207|Tektronix 4207 graphics terminal with memory,
 # (tek4404: There was a "\!" in <smcup> that I replaced with "\E!".
 # Tab had been given as \E2I,that must be the tab-set capability -- esr)
 tek4404|tektronix 4404, 
+       OTbs, 
        cols#80, it#8, lines#32, 
        blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, 
        csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C, 
@@ -13334,7 +13760,7 @@ tty33|tty35|model 33 or 35 teletype,
        cols#72, 
        bel=^G, cr=^M, cud1=^J, ind=^J, 
 tty37|model 37 teletype, 
-       hc, os, xon, 
+       OTbs, hc, os, xon, 
        bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E7, hd=\E9, hu=\E8, 
        ind=^J, 
 
@@ -13350,7 +13776,7 @@ tty37|model 37 teletype,
 # to get crlf, even if <cr> is not ^M.)
 # (tty40: removed obsolete ":nl=\EG\EB:", it's just do+cr -- esr)
 tty40|ds40|ds40-2|dataspeed40|teletype dataspeed 40/2, 
-       xon, 
+       OTbs, xon, 
        cols#80, lines#24, 
        clear=\EH$<20>\EJ$<80>, cr=\EG, cub1=^H, cud1=\EB, 
        cuf1=\EC, cuu1=\E7, dch1=\EP$<50>, dl1=\EM$<50>, 
@@ -13359,7 +13785,7 @@ tty40|ds40|ds40-2|dataspeed40|teletype dataspeed 40/2,
        kcub1=^H, mc4=^T, mc5=\022$<2000>, ri=\ET$<10>, rmso=\E4, 
        rs2=\023\ER$<60>, smso=\E3, tbc=\EH\E2$<80>, 
 tty43|model 43 teletype, 
-       am, hc, os, xon, 
+       OTbs, am, hc, os, xon, 
        cols#132, 
        bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, kbs=^H, 
 
@@ -13388,7 +13814,7 @@ scanset|sc410|sc415|Tymshare Scan Set,
 # Missing in vc303a and vc303 descriptions:  they scroll 2 lines at a time
 # every other linefeed.
 vc303|vc103|vc203|volker-craig 303, 
-       am, 
+       OTbs, OTns, am, 
        cols#80, lines#24, 
        bel=^G, clear=\014$<40>, cr=^M, cub1=^H, cud1=^J, cuf1=^I, 
        cuu1=^N, home=\013$<40>, kcub1=^H, kcud1=^J, kcuf1=^I, 
@@ -13398,7 +13824,7 @@ vc303a|vc403a|volker-craig 303a,
        home=\031$<40>, kcuf1=^U, kcuu1=^Z, ll=^P, use=vc303, 
 # (vc404: removed obsolete ":ma=^Z^P^U :" -- esr)
 vc404|volker-craig 404, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, clear=\030$<40>, cr=^M, cub1=^H, cud1=^J, cuf1=^U, 
        cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, 
@@ -13409,7 +13835,7 @@ vc404-s|volker-craig 404 w/standout mode,
 # From: <wolfgang@cs.sfu.ca>
 # (vc414: merged in cup/dl1/home from an old vc414h-noxon)
 vc414|vc414h|Volker-Craig 414H in sane escape mode., 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        clear=\E\034$<40>, cud1=\E^K, cuf1=^P, 
        cup=\E\021%p2%c%p1%c$<40>, cuu1=\E^L, dch1=\E3, 
@@ -13444,22 +13870,22 @@ pcplot|pc-plot terminal emulation program,
 # I have noticed a couple of minor glitches, but nothing I can't work
 # around. (I added two capabilities from the BRL entry -- esr)
 kaypro|kaypro2|kaypro II, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, clear=\032$<1/>, cr=^M, cud1=^J, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER, ed=^W, 
        el=^X, home=^^, il1=\EE, ind=^J, kcud1=^J, kcuf1=^L, kcuu1=^K, 
 
 # From IBM, Thu May  5 19:35:27 1983
-# (commented out <smir>=\200R because we don't know <rmir> -- esr)
+# (ibmpc: commented out <smir>=\200R because we don't know <rmir> -- esr)
 ibm-pc|ibm5051|5051|IBM Personal Computer (no ANSI.SYS), 
-       am, 
+       OTbs, 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, 
+       OTbs, 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, 
@@ -13471,9 +13897,9 @@ ibmpc|wy60-PC|wyse60-PC|IBM PC/XT running PC/IX,
        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, 
+       kf9=\250, khome=\E[H, kich1=\E[^H, knp=\E[U, kpp=\E[V
+       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, 
 
@@ -13490,7 +13916,7 @@ ibmpc|wy60-PC|wyse60-PC|IBM PC/XT running PC/IX,
 #      The clear key on a IIgs will do something like clear-screen, 
 #              depending on what you're in.
 appleIIgs|appleIIe|appleIIc|Apple 80 column firmware interface, 
-       am, bw, eo, msgr, 
+       OTbs, am, bw, eo, msgr, 
        cols#80, it#8, lines#24, 
        bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^\, 
        cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], 
@@ -13517,12 +13943,11 @@ apple2e|Apple //e,
 # 4.20, with incoming and outgoing terminals both on 0, emulation On.
 apple2e-p|Apple //e via Pascal, 
        cup=\036%p2%{32}%+%c%p1%{32}%+%c, kbs=^H, kcub1=^H, 
-       kcud1=^J, 
-       use=apple2e, 
+       kcud1=^J, use=apple2e, 
 # (ASCII Express) MouseTalk "Standard Apple //" emulation from BRL
 # Enable DC3/DC1 flow control with "stty ixon -ixany".
 apple-ae|ASCII Express, 
-       am, bw, msgr, nxon, xon, 
+       OTbs, am, bw, msgr, nxon, xon, 
        cols#80, it#8, lines#24, 
        bel=\007$<500/>, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^U, 
        cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], 
@@ -13530,7 +13955,7 @@ apple-ae|ASCII Express,
        kcuf1=^U, kcuu1=^K, rev=^O, ri=^V, rmso=^N, rs1=^R^N, sgr0=^N, 
        smso=^O, 
 appleII|apple ii plus, 
-       am, 
+       OTbs, am, 
        cols#80, it#8, lines#24, 
        clear=^L, cnorm=^TC2, cub1=^H, cud1=^J, cuf1=^\, 
        cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, cvvis=^TC6, 
@@ -13540,7 +13965,7 @@ appleII|apple ii plus,
 # Originally by Gary Ford 21NOV83
 # From: <ee178aci%sdcc7@SDCSVAX.ARPA>  Fri Oct 11 21:27:00 1985
 apple-80|apple II with smarterm 80 col, 
-       am, bw, 
+       OTbs, am, bw, 
        cols#80, lines#24, 
        cbt=^R, clear=\014$<10*/>, cr=\r$<10*/>, cub1=^H, cud1=^J, 
        cuf1=^\, cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, 
@@ -13558,7 +13983,7 @@ apple-soroc|apple emulating soroc 120,
 # Apple with videx then remove the :so: and :se: fields."
 # (apple-videx: this used to be called DaleApple -- esr)
 apple-videx|Apple with videx videoterm 80 column board with inverse video, 
-       am, xenl, 
+       OTbs, am, xenl, 
        cols#80, it#8, lines#24, 
        clear=\014$<300/>, cub1=^H, cud1=^J, cuf1=^\, 
        cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], 
@@ -13569,7 +13994,7 @@ apple-videx|Apple with videx videoterm 80 column board with inverse video,
 #                            controlled by ASCII Express: Pro.
 # From Dave Shaver <isucs1!shaver>
 apple-uterm-vb|Videx Ultraterm for Apple micros with Visible Bell, 
-       am, eo, xt, 
+       OTbs, am, eo, xt, 
        cols#80, lines#24, 
        acsc=, clear=^L, cuf1=^\, 
        cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], 
@@ -13577,7 +14002,7 @@ apple-uterm-vb|Videx Ultraterm for Apple micros with Visible Bell,
        is2=^V4^W06\017\rVisible Bell Installed.\016\r\n, 
        rmso=^N, smso=^O, 
 apple-uterm|Ultraterm for Apple micros, 
-       am, eo, xt, 
+       OTbs, am, eo, xt, 
        cols#80, lines#24, 
        acsc=, clear=^L, cuf1=^\, 
        cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], 
@@ -13621,7 +14046,7 @@ apple-videx2|Apple II+ w/ Videx card (similar to Datamedia h1520),
        ind=^J, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^\, kcuu1=^_, 
        khome=^Y, rmso=^Z2, smso=^Z3, 
 apple-videx3|vapple|Apple II with 80 col card, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        clear=\Ev, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, 
        cuu1=\EA, el=\Ex, home=\EH, kcub1=\ED, kcud1=\EB, kcuf1=\EC, 
@@ -13629,12 +14054,14 @@ apple-videx3|vapple|Apple II with 80 col card,
        kf5=\E", kf6=\E#, kf7=\E$, kf8=\E%, kf9=\E&, khome=\EH, 
 #From: decvax!cbosgd!cbdkc1!mww Mike Warren via BRL
 aepro|Apple II+ running ASCII Express Pro--vt52, 
+       OTbs, 
        cols#80, lines#24, 
        clear=\014$<300/>, cuf1=\EC, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, 
        el=\EK, home=\EH, 
 # UCSD addition: Yet another termcap from Brian Kantor's Micro Munger Factory
 apple-vm80|ap-vm80|apple with viewmax-80, 
+       OTbs, 
        cols#80, lines#24, 
        clear=\014$<300/>, cuf1=^\\:, 
        cup=\036%p1%{32}%+%c%p2%{32}%+%c$<100/>, cuu1=^_, 
@@ -13645,7 +14072,7 @@ apple-vm80|ap-vm80|apple with viewmax-80,
 
 # (lisa: changed <cvvis> to <cnorm> -- esr)
 lisa|apple lisa console display (black on white), 
-       am, eo, msgr, 
+       OTbs, am, eo, msgr, 
        cols#88, it#8, lines#32, 
        acsc=jdkclfmenbqattuvvuwsx`, civis=\E[5h, clear=^L, 
        cnorm=\E[5l, cub1=^H, cud1=\E[B, cuf1=\E[C, 
@@ -13670,8 +14097,8 @@ liswb|apple lisa console display (white on black),
 # You can type "reset" to get them set.
 #
 lisaterm|Apple Lisa or Lisa/2 running LisaTerm vt100 emulation, 
-       am, xenl, xon, 
-       cols#80, it#8, lines#24, vt#3, 
+       OTbs, OTpt, am, xenl, xon, 
+       OTkn#4, cols#80, it#8, lines#24, vt#3, 
        bel=^G, blink=\E[5m, 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, 
@@ -13695,6 +14122,7 @@ lisaterm-w|Apple Lisa with Lisaterm in 132 column mode,
 # supported by MacTerminal.
 mac|macintosh|Macintosh with MacTerminal, 
        xenl, 
+       OTdN#30, 
        blink@, dch1=\E[P$<7/>, ich1=\E[@$<9/>, ip=$<7/>, use=lisa, 
 # Lisaterm in 132 column ("wide") mode.
 mac-w|macterminal-w|Apple Macintosh with Macterminal in 132 column mode, 
@@ -13707,7 +14135,7 @@ mac-w|macterminal-w|Apple Macintosh with Macterminal in 132 column mode,
 # I read these as mistakes for ":it#8:" and ":bl=\007:" respectively -- esr)
 # From: <{pbrown,ctl}@ocf.berkeley.edu> 12 Mar 90
 coco3|os9LII|Tandy CoCo3 24*80 OS9 Level II, 
-       am, 
+       OTbs, am, 
        cols#80, it#8, lines#24, 
        bel=^G, blink=^_", bold=\E\:^A, civis=^E\s, 
        clear=\014$<5*/>, cnorm=^E!, cub1=^H, cud1=^J, cuf1=^F, 
@@ -13717,7 +14145,7 @@ coco3|os9LII|Tandy CoCo3 24*80 OS9 Level II,
        sgr0=\037!\E\:\0, smso=^_\s, smul=^_", 
 # (trs2: removed obsolete ":nl=^_:" -- esr)
 trs2|trsII|trs80II|Radio Shack Model II using P&T CP/M, 
-       am, msgr, 
+       OTbs, am, msgr, 
        cols#80, it#8, lines#24, 
        bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^_, cuf1=^], 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^^, dl1=^K, ed=^B, 
@@ -13729,7 +14157,7 @@ trs2|trsII|trs80II|Radio Shack Model II using P&T CP/M,
 #      :CN=\ERC:CF=\ERc:NR=\ERD:NM=\ER@:
 # I also deleted the unnecessary ":kn#2:", ":sg#0:" -- esr)
 trs16|trs-80 model 16 console, 
-       am, 
+       OTbs, am, 
        cols#80, it#8, lines#24, 
        acsc=jak`l_mbquvewcxs, bel=^G, civis=\ERc, clear=^L, 
        cnorm=\ERC, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, 
@@ -13746,7 +14174,7 @@ trs16|trs-80 model 16 console,
 
 # From: Simson L. Garfinkel <simsong@media-lab.mit.edu>
 atari|atari st, 
-       am, 
+       OTbs, am, 
        cols#80, it#8, lines#25, 
        clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM, 
@@ -13756,7 +14184,8 @@ atari|atari st,
 # From: Paul M. Aoki <aoki@ucbvax.berkeley.edu>
 uniterm|uniterm49|UniTerm VT220 emulator with 49 lines, 
        lines#49, 
-       is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;49r\E[49;1H, use=vt220, 
+       is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;49r\E[49;1H, 
+       use=vt220, 
 # MiNT VT52 emulation. 80 columns, 25 rows.
 # MiNT is Now TOS, the operating system which comes with all Ataris now
 # (mainly Atari Falcon). This termcap is for the VT52 emulation you get
@@ -13789,6 +14218,7 @@ st52|Atari ST with VT52 emulation,
 # From: Kent Polk <kent@swrinde.nde.swri.edu>, 30 May 90
 # Added a few more entries, converted caret-type control sequence (^x) entries
 # to '\0xx' entries since a couple of people mentioned losing '^x' sequences.
+# Corrections by Ty Sarna <tsarna@endicor.com>, Sat Feb 28 18:55:15 1998
 #
 # :as:, :ae:                   Support for alternate character sets.
 # :ve=\E[\040p:vi=\E[\060\040p:        cursor visible/invisible.
@@ -13803,7 +14233,7 @@ st52|Atari ST with VT52 emulation,
 # (amiga: removed obsolete :kn#10:,
 # also added empty <acsc> to suppress a warning --esr)
 amiga|Amiga ANSI, 
-       am, bw, xenl, 
+       OTbs, am, bw, xenl, 
        cols#80, lines#24, 
        acsc=, bel=^G, blink=\E[7;2m, bold=\E[1m, cbt=\E[Z, 
        civis=\E[0 p, clear=\E[H\E[J, cnorm=\E[ p, cub=\E[%p1%dD, 
@@ -13812,19 +14242,19 @@ amiga|Amiga ANSI,
        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, home=\E[H, 
        ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, 
-       indn=\E[%p1%dS, invis=\E[8m, is2=\E[20l, kbs=^H, kcub1=\ED, 
-       kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf0=\E9~, kf1=\E0~, 
-       kf2=\E1~, kf3=\E2~, kf4=\E3~, kf5=\E4~, kf6=\E5~, kf7=\E6~, 
-       kf8=\E7~, kf9=\E8~, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT
-       rmacs=^O, rmso=\E[m, rmul=\E[m, rs1=\Ec, sgr0=\E[m, smacs=^N
-       smso=\E[7m, smul=\E[4m, 
+       indn=\E[%p1%dS, invis=\E[8m, is2=\E[20l, kbs=^H, 
+       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\E[9~, 
+       kf1=\E[0~, kf2=\E[1~, kf3=\E[2~, kf4=\E[3~, kf5=\E[4~, 
+       kf6=\E[5~, kf7=\E[6~, kf8=\E[7~, kf9=\E[8~, rev=\E[7m
+       ri=\E[T, rin=\E[%p1%dT, rmacs=^O, rmso=\E[m, rmul=\E[m
+       rs1=\Ec, sgr0=\E[m, smacs=^N, smso=\E[7m, smul=\E[4m, 
 
 # From: Hans Verkuil <hans@wyst.hobby.nl>, 4 Dec 1995
 # (amiga: added empty <acsc> to suppress a warning.
 # I'm told this entry screws up badly with AS225, the Amiga
 # TCP/IP package once from Commodore, and now sold by InterWorks.--esr)
 amiga-h|Hans Verkuil's Amiga ANSI, 
-       bw, msgr, 
+       OTbs, bw, msgr, 
        cols#80, lines#24, 
        acsc=, bel=^G, blink=\2337;2m, bold=\2331m, cbt=\233Z, 
        civis=\2330 p, clear=\233H\233J, cnorm=\233 p, cr=^M, 
@@ -13845,8 +14275,7 @@ amiga-h|Hans Verkuil's Amiga ANSI,
 # 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, 
+       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
@@ -13862,9 +14291,9 @@ amiga-8bit|Amiga ANSI using 8-bit controls,
 #
 commodore|b-128|Commodore B-128 micro, 
        am, bw, 
-       cols#80, lines#24, pb#150, 
-       clear=\E\006$<10/>, cr=^M, cud1=^J, cuf1=^F
-       cup=\E\013%p1%2d\,%p2%2d\,$<20/>, cuu1=^P, 
+       OTdN#20, cols#80, lines#24, pb#150, 
+       OTbc=^H, OTnl=^M, clear=\E\006$<10/>, cr=^M, cud1=^J
+       cuf1=^F, cup=\E\013%p1%2d\,%p2%2d\,$<20/>, cuu1=^P, 
        dch1=\177$<10*/>, dl1=\Ed$<10*/>, el=\Eq$<10/>, 
        home=\E^E, ht=\011$<5/>, ich1=\E\n$<5/>, il1=\Ei$<10/>, 
        kcub1=^B, kcud1=^J, kcuf1=^F, kcuu1=^P, khome=\E^E, rmir=, 
@@ -13874,6 +14303,7 @@ commodore|b-128|Commodore B-128 micro,
 #
 # North Star Advantage from Lt. Fickie <brl-ibd!fickie> via BRL
 northstar|North Star Advantage, 
+       OTbs, 
        cols#80, lines#24, 
        clear=\004$<200/>, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<1/>, ed=\017$<200/>, 
@@ -13902,8 +14332,8 @@ osborne-w|osborne1-w|osborne I in 104-column mode,
        kcuf1=^L, kcuu1=^K, rmso=\E(, rmul=\Em, smso=\E), smul=\El, 
 # Osborne I    from ptsfa!rhc (Robert Cohen) via BRL
 osborne|osborne1|osborne I in 80-column mode, 
-       am, mir, msgr, ul, xhp, 
-       cols#80, lines#24, 
+       OTbs, am, mir, msgr, ul, xhp, 
+       OTdB#4, 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, 
@@ -13914,9 +14344,9 @@ osborne|osborne1|osborne I in 80-column mode,
 # Similar to tvi920
 # Added by David Milligan and Tom Smith (SMU)
 osexec|Osborne executive, 
-       am, 
-       cols#80, lines#24, xmc#1, 
-       bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, 
+       OTbs, am, 
+       OTug#1, cols#80, lines#24, xmc#1, 
+       OTnl=^J, bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, 
        dl1=\ER, ed=\EY, el=\ET, home=^^, hts=\E1, ich1=\EQ, il1=\EE, 
        is2=\Eq\Ek\Em\EA\Ex0, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, 
@@ -14031,12 +14461,24 @@ mai|basic4|MAI Basic Four in ansi mode,
        smir=\E[4h, smso=\E[7m, smul=\E[4m, 
 # basis from Peter Harrison, Computer Graphics Lab, San Francisco
 #   ucbvax!ucsfmis!harrison ...uucp / ucbvax!ucsfmis!harrison@BERKELEY ...ARPA
+#
+# On Sat, 7 Aug 1999, Torsten Jerzembeck <toje@nightingale.ms.sub.org> wrote:
+# The Basis 108 was a Apple II clone, manufactured by the "Basis
+# Mikrocomputer GmbH" in Munster, Germany (the company still exists today,  
+# about 1,5 km from where I live, but doesn't build own computers any
+# more). A Basis 108 featured a really heavy (cast aluminium?) case, was
+# equipped with one or two 5.25" disk drives, had a monochrome and colour
+# video output for a TV set or a dedicated monitor and several slots for
+# Apple II cards. Basis 108 were quite popular at german schools before
+# the advent of the IBM PC. They run, for example, the UCSD Pascal
+# development system (which I used even in 1993 to program the steering
+# and data recording for our school's experimental solar panel :), Apple DOS
+# or CP/M.
 # (basis: removed obsolete ":ma=^K^P^R^L^L :nl=5000*^J:" -- esr)
 basis|BASIS108 computer with terminal translation table active, 
        clear=\E*$<300/>, cud1=\n$<5000/>, ed=\EY, el=\ET, kbs=^H, 
        kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, rmso=\E), sgr0=\E), 
-       smso=\E(, 
-       use=adm3a, 
+       smso=\E(, use=adm3a, 
 # luna's BMC terminal emulator
 luna|luna68k|LUNA68K Bitmap console, 
        cols#88, lines#46, use=ansi-mini, 
@@ -14064,7 +14506,7 @@ xerox820|x820|Xerox 820,
 #
 # From: Igor Tamitegama <igor@ppp1493-ft.teaser.fr>, 18 Jan 1997
 m2-nam|minitel|minitel-2|minitel-2-nam|France Telecom Minitel 2 mode te'le'informatique, 
-       eslok, hs, xenl, 
+       OTbs, eslok, hs, xenl, 
        cols#80, it#8, lines#24, wsl#72, xmc#0, 
        acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx, bel=^G, 
        blink=\E[5m, bold=\E[1m, civis=\E[<1h, clear=\E[H\E[J, 
@@ -14109,8 +14551,7 @@ minitel1b|minitel 1-bistandard (in 40cols mode),
        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, 
+       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@, 
@@ -14123,8 +14564,7 @@ minitel1b-80|minitel 1-bistandard (standard teleinformatique),
        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, 
+       sgr0=\E[m, smkx@, smso=\E[7m, smul=\E[4m, use=minitel1b, 
 
 ######## OBSOLETE VDT TYPES
 #
@@ -14138,7 +14578,7 @@ minitel1b-80|minitel 1-bistandard (standard teleinformatique),
 # but these caps were commented out in 8.3; also, removed overridden
 # ":do=^J:" -- esr)
 abm80|amtek business machines 80, 
-       am, bw, 
+       OTbs, am, bw, 
        cols#80, lines#24, 
        cbt=^T, clear=\E^\, cub1=^H, cud1=\E^K, cuf1=^P, 
        cup=\E\021%p2%{32}%+%c%p1%{32}%+%c, cuu1=\E^L, 
@@ -14182,8 +14622,7 @@ cbblit|fixterm|blit running columbus code,
        cols#88, 
        ed=\EJ, flash=\E^G, ich1@, mc4=^T, mc5=^R, mc5p=\EP%p1%03d, 
        rmir=\ER, rmso=\EV!, rmul=\EV", smir=\EQ, smso=\EU!, 
-       smul=\EU", 
-       use=blit, 
+       smul=\EU", use=blit, 
 
 oblit|ojerq|first version of blit rom, 
        am, da, db, eo, mir, ul, xon, 
@@ -14231,7 +14670,7 @@ bg2.0rv|bg3.10rv|bbn bitgraph 2.0 (reverse video),
        flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h, 
        use=bg2.0, 
 bg2.0|bg3.10|bbn bitgraph 2.0 or later (no init), 
-       xenl, 
+       OTbs, xenl, 
        cols#85, lines#64, 
        bel=^G, clear=\E[H\E[J$<150>, cr=^M, 
        csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C, 
@@ -14243,9 +14682,11 @@ bg2.0|bg3.10|bbn bitgraph 2.0 or later (no init),
        sgr0=\E[m, smkx=\E=, smso=\E[7m, 
 
 bg1.25rv|bbn bitgraph 1.25 (reverse video), 
-       flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h, use=bg1.25, 
+       flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h, 
+       use=bg1.25, 
 bg1.25nv|bbn bitgraph 1.25 (normal video), 
-       flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h, use=bg1.25, 
+       flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h, 
+       use=bg1.25, 
 # (bg1.25: I added <rmam>/<smam> based on the init string -- esr)
 bg1.25|bbn bitgraph 1.25, 
        cols#85, lines#64, 
@@ -14258,6 +14699,480 @@ bg1.25|bbn bitgraph 1.25,
        rmkx=\E>, rmso=\E[m, sgr0=\E[m, smam=\E[?7h, smkx=\E=, 
        smso=\E[7m, 
 
+#### Bull (bq, dku, vip)
+#
+# (Adapted for terminfo; AIX extension capabilities translated -- esr)
+
+#============================================#
+# BULL QUESTAR 210 `SDP' terminals emulation #
+#============================================#
+#
+# Description written by R.K.Saunders (Bull Transac)
+#
+# Modifications written by F. Girard (Bull MTS)
+#              19-05-87 V02.00.01
+#              17-12-87 V02.00.02
+#              15-09-89 V02.00.05
+#
+#      Typical technical selections F1 (modes SDP/ROLL):
+# -------------------------------------------------------
+# |   01   02   03   04   05   06   07   08   09   10   |
+# |  1010 0011 1010 0110 0110 0001 0100 0000 0000 0000  |
+# |                                                     |
+# |   11   12   13   14   15   16   17   18   19   20   |
+# |  0000 0110 100? 0000 0000 0000 0001 0000 0000 0001  |
+# |                                                     |
+# |   21   22   23   24   25   26   27   28   29   30   |
+# |  0011 0000 0001 1000 0000 0000 0000 0000 0000 0000  |
+# |                                                     |
+# |   31   32   33   34   35   36   37   38   39   40   |
+# |  1010 0011 0000 0000 0000 0000 0000 0000 0000 0000  |
+# -------------------------------------------------------
+#      Typical firmware identification F5 "etat 6":
+#  P287.02.04b (AZERTY)
+#  P297.11.04  (24-pin: 2732)  or P798.11.04   (28-pin: 2764)
+#  P298.03.03  (monochrome)    or P374.03.02   (colour)
+#
+#      SM SDP mode (VIP command):      ^[[?=h
+#      RIS (erases screen):            ^[c
+#      DMI disable keyboard:           ^[`
+#      SM double rendition mode:       ^[[?>h
+#      RM solicited status mode:       ^[[5l
+#      RM character mode:              ^[[>l
+#      RM echoplex mode:               ^[[12l
+#      RM column tab mode:             ^[[18l
+#      RM forbid SS2 keyboard mode:    ^[[?<l
+#      SM scroll mode:                 ^[[=h
+#      FCF enable XON/XOFF:            ^[P1s^[\
+#      MTL select end msg character:   ^[[^Wp
+#      EMI enable keyboard:            ^[b
+#      RIS retour etat initial:        ^[c
+#      enable FC keypad:               ^[[?<h,
+#      MPW map status line window:     ^[PY99:98^[\
+#      SCP select status line:         ^[[0;98v
+#      ED erase entire partition:      ^[[2J
+#      SCP select main partition:      ^[[v
+#      SM character insertion mode:    ^[[4h
+#      RM character replacement mode:  ^[[4l
+#      COO cursor on:                  ^[[r
+#      COO cursor off:                 ^[[1r
+#      SGR dim (turquoise) rev attr:   ^[[2;7m
+#      SGR Data normal attr:           ^[[m
+#      SO Line-graphic mode ON:        ^N
+#      SI Line-graphic mode OFF:       ^O
+#      MC start routing to printer:    ^[[5i
+#      MC stop routing to printer:     ^M^[[4i
+#
+
+# This entry covers the following terminals:
+# dku7102, tws2102, and tws models 2105 to 2112
+tws-generic|dku7102|Bull Questar tws terminals, 
+       am, eslok, hs, mir, msgr, xenl, xhp@, xon, 
+       cols#80, it#8, lines#24, wsl#80, 
+       acsc=``aaffggj)k\,l&m#n/ooppq*rrsst'u-v+w.x%yyzz{{||}}~~, 
+       bel=^G, blink=\E[0;5m, cbt=\E[Z, civis=\E[1r, clear=\E[2J, 
+       cnorm=\E[r, 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%df, 
+       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, 
+       dim=\E[0;2m, dl=\E[%p1%dM, dl1=\E[M, 
+       dsl=\EPY99\:98\E\\\E[0;98v\E[2J\E[v, ed=\E[J, el=\E[K, 
+       fsl=\E[v, home=\E[H, ht=\E[I, hts=\EH, il=\E[%p1%dL, 
+       il1=\E[L, ind=^J, invis=\E[0;8m, 
+       is1=\E[?=h\Ec\E`\E[?>h\EPY99\:98\E\\, 
+       is2=\E[5;>;12;18;?<l\E[=h\EP1s\E\\\E[\027p, 
+       is3=\Eb\E[?<h, kbs=^H, kcbt=\E[Z, kctab=\E[g, kcub1=\E[D, 
+       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, 
+       ked=\E[J, kel=\E[K, kf1=\E[1u\027, kf2=\E[2u\027, 
+       kf3=\E[3u\027, kf4=\E[4u\027, kf5=\E[5u\027, 
+       kf6=\E[6u\027, kf7=\E[7u\027, kf8=\E[8u\027, khome=\E[H, 
+       khts=\EH, kil1=\E[L, krmir=\E[4l, ll=\E[H\E[A, mc0=\E[0i, 
+       mc4=\r\E[4i, mc5=\E[5i, rev=\E[0;7m, rmacs=^O, 
+       rmcup=\E[0;98v\E[2J\E[v, rmir=\E[4l, rmso=\E[m, 
+       rmul=\E[m, rs2=\E[?=h\Ec, s0ds=^O, s1ds=^N, 
+       sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, 
+       sgr0=\E[m\017, smacs=^N, smcup=\E[?>h\EPY99\:98\E\\, 
+       smir=\E[4h, smso=\E[0;7m, smul=\E[0;4m, tbc=\E[2g, 
+       tsl=\EPY99\:98\E\\\E[0;98v\E[2;7m, 
+tws2102-sna|dku7102-sna|BULL Questar tws2102 for SNA, 
+       dsl=\E[0;98v\E[2J\E[v, fsl=\E[v, is3=\Eb, tsl=\E[0;98v, 
+       use=tws-generic, 
+tws2103|xdku|BULL Questar tws2103, 
+       ht=^I, use=tws-generic, 
+tws2103-sna|dku7103-sna|BULL Questar tws2103 for SNA, 
+       ht=^I, use=tws2102-sna, 
+dku7102-old|BULL Questar 200 DKU7102 (microcode version < 6), 
+       clear=\E[2J\E[H, cup@, dl@, dl1@, 
+       dsl=\EPY99\:98\E\\\E[0;98v\E[2J\E[H\E[v, el=\E[K\E[m, 
+       il@, il1@, tsl=\EPY99\:98\E\\\E[0;98v\E[H\E[2;7m, 
+       use=tws-generic, 
+dku7202|BULL Questar 200 DKU7202 (colour/character attributes), 
+       blink=\E[0;2;4m, dim=\E[0;5m, ht=^I, is3=\E[?3h\Eb, 
+       smso=\E[0;4;5;7m, smul=\E[0;2m, use=tws-generic, 
+
+#=========================================================#
+# BULL QUESTAR 303 & 310 `DEC VT 320' terminals emulation #
+#=========================================================#
+#
+# Description written by J. Staerck (BULL SA)
+#       Copyright (c) 1989 BULL SA
+#---------------------------------------------------------------------------
+#  This entry is used for terminals with vt320 emulation mode
+#  and following set-up : 
+#    8 bit ISO Latin Character Set (ISO 8859-1),
+#    7 bit Control Characters, 
+#    80 columns screen.    
+#  Hereafter are some DEC vt terminals' commands. (valid on vt200 and 300)
+#  They are used in string capabilities with vt220-320 emulation mode.
+#  In the following DEC definitions, two kinds of terminfo databases are
+#    provided :
+#    1. the first with Command Sequence Introducer starting with escape 
+#       sequence in 7 bits characters ex. ESC [ : 2 chars. in 7-bit mode.
+#    2. the second with Command Sequence Introducer starting with escape 
+#       sequence in 8 bits characters ex. ESC [ : 1 char. 'CSI' =x9B.
+#      Soft Terminal Reset             esc [ ! p
+#      RIS (erases screen):            esc c
+#      DECKPNM numeric keypad mode:    esc >
+#      DECKPAM applic. keypad mode:    esc =
+#      DECSTBM Scrolling region:       esc [ r
+#      SCS select G0 = US:             esc ( B
+#      SCS select G1 = line-graphic:   esc ) 0
+#      Select 7-bit C1 controls:       esc sp F
+#      Select 8-bit C1 controls:       esc sp G
+#      Select cursor home:             esc [  H
+#      Select erase screen:            esc [  J
+#      SM KAM lock keyboard:           esc [ 2 h
+#      RM KAM unlock keyboard:         esc [ 2 l
+#      SM SRM local echo off:          esc [ 1 2 h
+#      RM SRM local echo on:           esc [ 1 2 l
+#      SM LNM New line :               esc [ 2 0 h
+#      RM LNM return = CR only:        esc [ 2 0 l
+#      SM DECCKM cursor keys mode:     esc [ ? 1 h
+#      RM DECCKM appli. keys mode:     esc [ ? 1 l
+#      SM DECANM ANSI mode on:         esc [ ? 2 h
+#      RM DECANM ANSI mode off:        esc [ ? 2 l
+#      SM DECCOLM 132-column screen:   esc [ ? 3 h
+#      RM DECCOLM 80-column screen:    esc [ ? 3 l
+#      SM DECSCLM Smooth scroll:       esc [ ? 4 h
+#      RM DECSCLM Jump scroll:         esc [ ? 4 l
+#      SM DECSCNM screen light backgr. esc [ ? 5 h
+#      RM DECSCNM screen dark backgr.  esc [ ? 5 l
+#      SM DECOM move within margins:   esc [ ? 6 h
+#      RM DECOM move outside margins:  esc [ ? 6 l
+#      SM DECAWM auto right margin:    esc [ ? 7 h
+#      RM DECAWM auto right margin:    esc [ ? 7 l
+#      SM DECARM auto repeat:          esc [ ? 8 h
+#      RM DECARM auto repeat:          esc [ ? 8 l
+#      DECSASD Select active main:     esc [ 0 $ } 
+#      DECSASD Select active status:   esc [ 1 $ } 
+#      DECSSDT Select status none:     esc [ 0 $ ~ 
+#      DECSSDT Select status indic.:   esc [ 1 $ ~ 
+#      DECSSDT Select status host-wr:  esc [ 2 $ ~ 
+#      SM DECTCEM Visible cursor:      esc [ ? 2 5 h
+#      RM DECTCEM Invisible cursor:    esc [ ? 2 5 l
+#      SM DECNCRM 7 bits NCR set:      esc [ ? 4 2 h
+#      RM DECNCRM Multi or ISO latin:  esc [ ? 4 2 l
+#      SM DECNKM numeric keypad mode:  esc [ ? 6 6 h
+#      RM DECNKM numeric keypad appl.: esc [ ? 6 6 l
+#      SM DECKBUM clavier informatique esc [ ? 6 8 h
+#      RM DECKBUM clavier bureautique: esc [ ? 6 8 l
+#      DECSCL vt300 mode 8-bit ctrl:   esc [ 6 3 " p
+# or   DECSCL vt300 mode 8-bit ctrl:   esc [ 6 3 ; 0 " p
+# or   DECSCL vt300 mode 8-bit ctrl:   esc [ 6 3 ; 2 " p
+#      DECSCL vt300 mode 7-bit ctrl:   esc [ 6 3 ; 1 " p
+#      Char. and Line attributes:      esc [ Ps ... Ps m
+# with:  0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse
+# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off
+#
+
+# This entry covers BQ303, BQ306, BQ310, Q303, Q306, Q310
+bq300|Bull vt320 ISO Latin 1 80 columns terminal, 
+       am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon, 
+       cols#80, it#8, lines#24, vt#3, wsl#80, 
+       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
+       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=\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, 
+       cvvis=\E[?25h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, 
+       dl1=\E[M, dsl=\E[1$}\E[2$~\n\E[0$}, ech=\E[%p1%dX, 
+       ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0, 
+       flash=\E[?5h$<50>\E[?5l, fsl=\E[0$}, home=\E[H, ht=^I, 
+       hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED, 
+       is1=\E[63;1"p\E[2h, 
+       is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, 
+       is3=\E[0$}\E[?25h\E[2l\E[H\E[J, ka1=\EOw, ka3=\EOy, 
+       kb2=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D, kcud1=\E[B, 
+       kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, 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~, kfnd=\E[1~, 
+       khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, 
+       krdo=\E[29~, kslt=\E[4~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, 
+       mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m, 
+       ri=\EM, rmacs=^O, rmam=\E[?7l, rmcup=\E[?7h, rmir=\E[4l, 
+       rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, rs1=\E[!p, 
+       rs2=\E[?3l, s0ds=\E(B, s1ds=\E(0, sc=\E7, 
+       sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m%?%p9%t\E(0%e\E(B%;, 
+       sgr0=\E[0m\E(B, smacs=^N, smam=\E[?7h, 
+       smcup=\E[?7l\E[?1l\E(B, smir=\E[4h, smso=\E[7m, 
+       smul=\E[4m, tbc=\E[3g, tsl=\E[1$}\E[2$~, 
+bq300-rv|Bull vt320 reverse 80 columns, 
+       flash=\E[?5l$<50>\E[?5h, 
+       is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, 
+       use=bq300, 
+bq300-w|Bull vt320 132 columns, 
+       cols#132, wsl#132, 
+       is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, 
+       rs2=\E[?3h, use=bq300, 
+bq300-w-rv|Bull vt320 reverse mode 132 columns, 
+       cols#132, wsl#132, 
+       flash=\E[?5l$<50>\E[?5h, 
+       is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, 
+       rs2=\E[?3h, use=bq300, 
+
+#  This entry is used for terminals with vt320 emulation mode
+#  and following set-up : 
+#    8 bit ISO Latin Character Set (ISO 8859-1),
+#    8 bit Control Characters, (CSI coded as x9B for ESC [)
+#    80 columns screen.    
+#      Soft Terminal Reset             csi ! p
+#      RIS (erases screen):            esc c
+#      DECKPNM numeric keypad mode:    esc >
+#      DECKPAM applic. keypad mode:    esc =
+#      DECSTBM Scrolling region:       esc [ r
+#      SCS select G0 = US:             esc ( B
+#      SCS select G1 = line-graphic:   esc ) 0
+#      Select 7-bit C1 controls:       esc sp F
+#      Select 8-bit C1 controls:       esc sp G
+#      Select cursor home:             csi H
+#      Select erase screen:            csi J
+#      SM KAM lock keyboard:           csi 2 h
+#      RM KAM unlock keyboard:         csi 2 l
+#      SM SRM local echo off:          csi 1 2 h
+#      RM SRM local echo on:           csi 1 2 l
+#      SM LNM New line :               csi 2 0 h
+#      RM LNM return = CR only:        csi 2 0 l
+#      SM DECCKM cursor keys mode:     csi ? 1 h
+#      RM DECCKM appli. keys mode:     csi ? 1 l
+#      SM DECANM ANSI mode on:         csi ? 2 h
+#      RM DECANM ANSI mode off:        csi ? 2 l
+#      SM DECCOLM 132-column screen:   csi ? 3 h
+#      RM DECCOLM 80-column screen:    csi ? 3 l
+#      SM DECSCLM Smooth scroll:       csi ? 4 h
+#      RM DECSCLM Jump scroll:         csi ? 4 l
+#      SM DECSCNM screen light backgr. csi ? 5 h
+#      RM DECSCNM screen dark backgr.  csi ? 5 l
+#      SM DECOM move within margins:   csi ? 6 h
+#      RM DECOM move outside margins:  csi ? 6 l
+#      SM DECAWM auto right margin:    csi ? 7 h
+#      RM DECAWM auto right margin:    csi ? 7 l
+#      SM DECARM auto repeat:          csi ? 8 h
+#      RM DECARM auto repeat:          csi ? 8 l
+#      DECSASD Select active main:     csi 0 $ } 
+#      DECSASD Select active status:   csi 1 $ } 
+#      DECSSDT Select status none:     csi 0 $ ~ 
+#      DECSSDT Select status indic.:   csi 1 $ ~ 
+#      DECSSDT Select status host-wr:  csi 2 $ ~ 
+#      SM DECTCEM Visible cursor:      csi ? 2 5 h
+#      RM DECTCEM Invisible cursor:    csi ? 2 5 l
+#      SM DECNCRM 7 bits NCR set:      csi ? 4 2 h
+#      RM DECNCRM Multi or ISO latin:  csi ? 4 2 l
+#      DECSCL vt300 mode 8-bit ctrl:   csi 6 3 " p
+# or   DECSCL vt300 mode 8-bit ctrl:   csi 6 3 ; 0 " p
+#      DECSCL vt300 mode 7-bit ctrl:   csi 6 3 ; 1 " p
+#      Char. and Line attributes:      csi Ps ... Ps m
+# with:  0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse
+# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off
+# (bq300-8: <cub1>,<cuf1>,<cuu1>,<cud1>,<dl1>,<il1> to get under 1024 --esr)
+bq300-8|Bull vt320 full 8 bits 80 columns, 
+       am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon, 
+       cols#80, it#8, lines#24, vt#3, wsl#80, 
+       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
+       bel=^G, blink=\2335m, bold=\2331m, civis=\233?25l, 
+       clear=\233H\233J, cnorm=\233?25h, cr=^M, 
+       csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cud=\233%p1%dB, 
+       cuf=\233%p1%dC, cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, 
+       cvvis=\233?25h, dch=\233%p1%dP, dch1=\233P, 
+       dl=\233%p1%dM, dsl=\2331$}\2332$~\n\2330$}, 
+       ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K, 
+       enacs=\E(B\E)0, flash=\233?5h$<50>\233?5l, fsl=\2330$}, 
+       home=\233H, ht=^I, hts=\EH, ich=\233%p1%d@, il=\233%p1%dL, 
+       ind=\ED, is1=\E[63;2"p\E[2h, 
+       is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, 
+       is3=\2330$}\233?25h\2332l\233H\233J, ka1=\217w, 
+       ka3=\217y, kb2=\217u, kbs=^H, kc1=\217q, kc3=\217s, 
+       kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A, 
+       kdch1=\2333~, kf1=\217P, kf10=\23321~, kf11=\23323~, 
+       kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~, 
+       kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~, 
+       kf2=\217Q, kf20=\23334~, kf3=\217R, kf4=\217S, kf6=\23317~, 
+       kf7=\23318~, kf8=\23319~, kf9=\23320~, kfnd=\2331~, 
+       khlp=\23328~, kich1=\2332~, knp=\2336~, kpp=\2335~, 
+       krdo=\23329~, kslt=\2334~, lf1=pf1, lf2=pf2, lf3=pf3, 
+       lf4=pf4, mc0=\233i, mc4=\2334i, mc5=\2335i, nel=\EE, rc=\E8, 
+       rev=\2337m, ri=\EM, rmacs=^O, rmam=\233?7l, rmcup=\233?7h, 
+       rmir=\2334l, rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m, 
+       rs1=\E[!p, rs2=\E[?3l, s0ds=\E(B, s1ds=\E(0, sc=\E7, 
+       sgr=\233%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m%?%p9%t\E(0%e\E(B%;, 
+       sgr0=\2330m\E(B, smacs=^N, smam=\233?7h, 
+       smcup=\233?7l\233?1l\E(B, smir=\2334h, smso=\2337m, 
+       smul=\2334m, tbc=\2333g, tsl=\2331$}\2332$~, 
+bq300-8rv|Bull vt320 8-bit reverse mode 80 columns, 
+       flash=\233?5l$<50>\233?5h, 
+       is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, 
+       use=bq300-8, 
+bq300-8w|Bull vt320 8-bit 132 columns, 
+       cols#132, wsl#132, 
+       is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, 
+       rs2=\233?3h, use=bq300-8, 
+bq300-w-8rv|Bull vt320 8-bit reverse mode 132 columns, 
+       cols#132, wsl#132, 
+       flash=\233?5l$<50>\233?5h, 
+       is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, 
+       rs2=\233?3h, use=bq300-8, 
+
+#  This entry is used for terminals with vt320 emulation mode
+#  a 102 keys keyboard (PC scancode !) and following set-up : 
+#    8 bit ISO Latin Character Set (ISO 8859-1),
+#    7 bit Control Characters, 
+#    80 columns screen.    
+bq300-pc|Questar 303 with PC keyboard ISO Latin 1 80 columns, 
+       kbs=^H, kdch1=\E[3~, kend=\E[4~, kf1=\E[17~, kf10=\E[28~, 
+       kf11=\E[29~, kf12=\E[31~, kf13@, kf14@, kf15@, kf16@, kf17@, 
+       kf18@, kf19@, kf2=\E[18~, kf20@, kf3=\E[19~, kf4=\E[20~, 
+       kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, 
+       kfnd@, khlp@, khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, 
+       krdo@, kslt@, lf1@, lf2@, lf3@, lf4@, use=bq300, 
+bq300-pc-rv|Questar 303 with PC keyboard reverse mode 80 columns, 
+       flash=\E[?5l$<50>\E[?5h, 
+       is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, 
+       use=bq300-pc, 
+bq300-pc-w|Questar 303 with PC keyboard 132 columns terminal, 
+       cols#132, wsl#132, 
+       is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, 
+       rs2=\E[?3h, use=bq300-pc, 
+bq300-pc-w-rv|Questar 303 with PC keyboard reverse mode 132 columns, 
+       cols#132, wsl#132, 
+       flash=\E[?5l$<50>\E[?5h, 
+       is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, 
+       rs2=\E[?3h, use=bq300-pc, 
+#    8 bit ISO Latin Character Set (ISO 8859-1),
+#    8 bit Control Characters, 
+#    80 columns screen.    
+bq300-8-pc|Q306-8-pc|Questar 303 with PC keyboard in full 8 bits 80 columns, 
+       kbs=^H, kdch1=\2333~, kend=\2334~, kf1=\23317~, 
+       kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13@, kf14@, 
+       kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\23318~, kf20@, 
+       kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~, 
+       kf7=\23324~, kf8=\23325~, kf9=\23326~, kfnd@, khlp@, 
+       khome=\2331~, kich1=\2332~, knp=\2336~, kpp=\2335~, krdo@, 
+       kslt@, lf1@, lf2@, lf3@, lf4@, use=bq300-8, 
+bq300-8-pc-rv|Questar 303 with PC keyboard full 8 bits reverse mode 80 columns, 
+       flash=\E[?5l$<50>\E[?5h, 
+       is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, 
+       use=bq300-8-pc, 
+bq300-8-pc-w|Questar 303 with PC keyboard full 8 bits 132 columns, 
+       cols#132, wsl#132, 
+       is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, 
+       rs2=\E[?3h, use=bq300-8-pc, 
+bq300-8-pc-w-rv|Questar 303 with PC keyboard full 8 bits reverse 132 columns, 
+       cols#132, wsl#132, 
+       flash=\E[?5l$<50>\E[?5h, 
+       is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, 
+       rs2=\E[?3h, use=bq300-8-pc, 
+
+#======================================================#
+# BULL QUESTAR 310 `VIP 7800/8800' terminals emulation #
+#======================================================#
+
+# normal mode, 8 bits, 80 columns terminal.
+#      RES reset :                     ^[e
+#      RIS reset initial state:        ^[c
+#      BLE bell enable                 ^[h
+#      BLD bell disable                ^[g
+#      CAMS char. attr. mode set       ^[[D
+#      CAMR char. attr. mode reset     ^[[G
+#      CLR clear                       ^[`
+#      KBU keyboard unlock (set)       ^[[W
+#      KBL keyboard lock (reset)       ^[[X
+#      CM  character mode (async.)     ^[k
+#      NEP non echoplex mode (by host) ^[l
+#      EP  echoplex mode (by host)     ^[m
+#      IM  insert mode set             ^[[I
+#      IM  insert mode reset           ^[[J
+#      RMS roll mode set               ^[r
+#      RMR roll mode reset             ^[q
+#      SM78 set mode vip7800           ^[[1q
+#      SD  scroll up   (72 lines)      ^[[0s
+#      SD  scroll down (72 lines)      ^[[1s
+#      RBM block mode reset            ^[[E
+#      SLS status line set             ^[w
+#      SLR status line reset           ^[v
+#      SLL status line lock            ^[O
+#      LGS Line-graphic mode set       ^[G
+#      LGR Line-graphic mode reset     ^[F
+#      TBC tab clear (at cursor pos.)  ^[[g
+#      TBI tab initialize              ^[[N
+#      TBS tab set (at cursor pos.)    ^[p
+#      PDS  print data space           ^[[0p
+#      PHD  print host data            ^[[3p
+#      PDT  print data terminator      ^[[<p
+#      PRES print adapter reset        ^[[2p
+#      SSPR multi-part. reset          ^[[<>u
+#      SSP0 partition 0 set            ^[[00u
+#      SSP1 partition n format 1       ^[[PnPnSTRINGu
+#      SSP2 partition n format 2       ^[[PnPnSTRINGu
+#      SSP3 partition n format 3       ^[[PnPnu
+#      ATR attribute (visual)
+#          blink :                     ^[sB
+#          dim :                       ^[sL
+#          hide (blank) :              ^[sH
+#          restore :                   ^[sR
+#          inverse video :             ^[sI
+#          prot. :                     ^[sP
+#          underline :                 ^[s_
+#          reset :                     ^{
+#
+# This covers the vip7800 and BQ3155-vip7800
+vip|Bull Questar 3155-7800, 
+       am, eslok, hs, km, mc5i, msgr, xenl, xon, 
+       cols#80, it#8, lines#24, vt#3, wsl#80, 
+       acsc=0pjdkblamcnkqitgufvhwexj, bel=^G, blink=\EsB, 
+       cbt=\E[Z, clear=\E`, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, 
+       cup=\E[%i%p1%03d%p2%03df, cuu1=\EA, dch1=\E[P, dim=\EsL, 
+       dl1=\E[M, dsl=\Ev, ed=\EJ, el=\EK, 
+       flash=\007$<80>\007$<80>\007, fsl=\EO, home=\EH, ht=^I, 
+       hts=\Ep, ich1=\E[I, ind=^J, invis=\EsH, 
+       is2=\E[00u\E[<>001001024080024080u\E[01u, 
+       is3=\Er\E[W\E`, kHOM=\EH, kLFT=\Eo, kRIT=\Eu, kbs=^H, 
+       kcbt=\E[Z, kclr=\E`, kctab=\E[g, kcub1=\ED, kcud1=\EB, 
+       kcuf1=\EC, kcuu1=\EA, kdch1=\E[P, kdl1=\E[M, ked=\EJ, 
+       kel=\EK, kf1=\E0, kf10=\ET, kf11=\E\\, kf12=\E\^, kf13@, kf14@, 
+       kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\E2, kf20@, kf21=\E1, 
+       kf22=\E5, kf23=\E7, kf24=\E9, kf25=\E;, kf26=\E=, kf27=\E?, 
+       kf28=\EQ, kf29=\ES, kf3=\E6, kf30=\EV, kf31=\E], kf32=\E_, 
+       kf4=\E8, kf5=\E\:, kf6=\E<, kf7=\E>, kf8=\EP, kf9=\ER, 
+       khome=\EH, khts=\Ep, kich1=\E[I, kil1=\E[L, kind=\E[0s, 
+       kll=\EH\EA, kri=\E[1s, krmir=\E[J, ktbc=\E[N, lf1=pf1, 
+       lf2=pf2, lf3=pf3, lf4=pf4, ll=\EH\EA, mc0=\E[0p, mc4=\E[<p, 
+       mc5=\E[3p, nel=^M, prot=\EsP, rev=\EsI, 
+       ri=\EA\EJ\EH\E[L$<10>, rmacs=\EF, rmir=\E[J, rmso=\EsR, 
+       rmul=\EsR, rs1=\Ec, rs2=\E[G, s0ds=\EF, s1ds=\EG, 
+       sgr0=\EsR\EsU\EF, smacs=\EG, smir=\E[I, smso=\EsI, 
+       smul=\Es_, tbc=\E[N, tsl=\Ew, 
+# normal screen, 8 bits, 132 columns terminal.
+vip-w|vip7800-w|Q310-vip-w|Q310-vip-w-am|Questar 3155-vip7800 wide, 
+       cols#132, wsl#132, 
+       is2=\E[00u\E[<>001001024132024132u\E[01u, use=vip, 
+vip-H|vip7800-H|Q310-vip-H|Q310-vip-H-am|Questar 3155-vip7800 72 lines, 
+       lines#72, 
+       is2=\E[00u\E[<>001001024080072080u\E[01u, use=vip, 
+vip-Hw|vip7800-Hw|Q310-vip-Hw|Questar 3155-vip7800 wide 72 lines, 
+       cols#132, lines#72, wsl#132, 
+       is2=\E[00u\E[<>001001024132072132u\E[01u, use=vip, 
+
 #### Chromatics
 #
 
@@ -14294,7 +15209,7 @@ ca22851|computer automation 22851,
 
 # This entry has correct padding and the undocumented "ri" capability
 cyb83|xl83|cybernex xl-83, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, clear=\014$<62>, cr=^M, cub1=^H, cud1=^J, cuf1=^I, 
        cup=\027%p1%{32}%+%c%p2%{32}%+%c, cuu1=^N, 
@@ -14302,7 +15217,7 @@ cyb83|xl83|cybernex xl-83,
        kcud1=^J, kcuf1=^I, kcuu1=^N, ri=^N, 
 # (mdl110: removed obsolete ":ma=^Z^P:" and overridden ":cd=145^NA^W:" -- esr)
 cyb110|mdl110|cybernex mdl-110, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, clear=\030$<70>, cr=^M, cub1=^H, cud1=^J, cuf1=^U, 
        cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, 
@@ -14320,7 +15235,7 @@ cyb110|mdl110|cybernex mdl-110,
 #
 
 dp3360|datapoint|datapoint 3360, 
-       am, 
+       OTbs, am, 
        cols#82, lines#25, 
        bel=^G, clear=^]^_, cr=^M, cub1=^H, cud1=^J, cuf1=^X, cuu1=^Z, 
        ed=^_, el=^^, home=^], ind=^J, 
@@ -14377,18 +15292,20 @@ dp8242|datapoint 8242,
 #
 
 gt40|dec gt40, 
-       os, 
+       OTbs, os, 
        cols#72, lines#30, 
        bel=^G, cr=^M, cub1=^H, cud1=^J, 
 gt42|dec gt42, 
-       os, 
+       OTbs, os, 
        cols#72, lines#40, 
        bel=^G, cr=^M, cub1=^H, cud1=^J, 
 vt50|dec vt50, 
+       OTbs, 
        cols#80, lines#12, 
        bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, 
        cuu1=\EA, ed=\EJ, el=\EK, ht=^I, ind=^J, 
 vt50h|dec vt50h, 
+       OTbs, 
        cols#80, lines#12, 
        bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, 
@@ -14405,7 +15322,7 @@ vt61|vt-61|vt61.5|dec vt61,
 # The gigi does standout with red!
 # (gigi: I added <rmam>/<smam> based on the init string, corrected cub1 -- esr)
 gigi|vk100|dec gigi graphics terminal, 
-       am, xenl, 
+       OTbs, am, xenl, 
        cols#84, lines#24, 
        bel=^G, 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, 
@@ -14424,6 +15341,7 @@ gigi|vk100|dec gigi graphics terminal,
 # a format program, so you had to buy pre-formatted floppies from DEC at
 # a hefty premium!).
 pro350|decpro|dec pro console, 
+       OTbs, 
        cols#80, it#8, lines#24, 
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
        clear=\EH\EJ, cub1=^H, cud1=\EB, cuf1=\EC, 
@@ -14434,11 +15352,11 @@ pro350|decpro|dec pro console,
        rmso=\E^N, rmul=\E^C, smacs=\EF, smso=\E^H, smul=\E^D, 
 
 dw1|decwriter I, 
-       hc, os, 
+       OTbs, hc, os, 
        cols#72, 
        bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, 
 dw2|decwriter|dw|decwriter II, 
-       hc, os, 
+       OTbs, hc, os, 
        cols#132, 
        bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, kbs=^H, 
 # \E(B         Use U.S. character set (otherwise # => british pound !)
@@ -14458,14 +15376,14 @@ dw2|decwriter|dw|decwriter II,
 #       The dw3 does standout with wide characters.
 #
 dw3|la120|decwriter III, 
-       hc, os, 
+       OTbs, hc, os, 
        cols#132, 
        bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J, 
        is1=\E(B\E[20l\E[w\E[0;132s\E[2g\E[z\E[66t\E[1;66r\E[4g\E>, 
        is2=\E[9;17;25;33;41;49;57;65;73;81;89;97;105;113;121;129u\r, 
        kbs=^H, rmso=\E[w, sgr0=\E[w, smso=\E[6w, 
 dw4|decwriter IV, 
-       am, hc, os, 
+       OTbs, am, hc, os, 
        cols#132, 
        bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J, is2=\Ec, kbs=^H, 
        kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS, 
@@ -14480,8 +15398,7 @@ ln03|dec ln03 laser printer,
 ln03-w|dec ln03 laser printer 132 cols, 
        cols#132, 
        bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, 
-       kcud1=^J, nel=^M^J, 
-       use=ln03, 
+       kcud1=^J, nel=^M^J, use=ln03, 
 
 #### Delta Data (dd)
 #
@@ -14491,7 +15408,7 @@ ln03-w|dec ln03 laser printer 132 cols,
 # There are BSD-derived termcap entries floating around for this puppy
 # that are *certainly* wrong.
 delta|dd5000|delta data 5000, 
-       am, 
+       OTbs, am, 
        cols#80, lines#27, 
        bel=^G, clear=^NR, cub1=^H, cud1=^J, cuf1=^Y, 
        cup=\017%p1%p1%{16}%m%{2}%*%-%{57}%+%c%p2%p2%{16}%m%{2}%*%-%{57}%+%c, 
@@ -14502,7 +15419,7 @@ delta|dd5000|delta data 5000,
 
 # (ddr: I added <rmam>/<smam> based on the init string -- esr)
 ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator, 
-       am, xenl, 
+       OTbs, am, xenl, 
        cols#80, it#8, lines#24, vt#3, 
        blink=\E[5m$<2/>, bold=\E[1m$<2/>, 
        clear=\E[H\E[2J$<50/>, csr=\E[%i%p1%d;%p2%dr, cub1=^H, 
@@ -14540,7 +15457,7 @@ ps300|Picture System 300,
 #
 
 terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200, 
-       hc, os, 
+       OTbs, hc, os, 
        cols#120, 
        bel=^G, cr=^M, cud1=^J, ind=^J, 
 
@@ -14583,7 +15500,7 @@ terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200,
 # (h19: I added <rmam>/<smam> based on the init string;
 # also added empty <acsc> to suppress a tic warning -- esr)
 h19-a|h19a|heath-ansi|heathkit-a|heathkit h19 ansi mode, 
-       am, mir, msgr, 
+       OTbs, am, mir, msgr, 
        cols#80, it#8, lines#24, 
        acsc=, bel=^G, clear=\E[2J, cnorm=\E[>4l, cr=^M, cub1=^H, 
        cud1=\E[1B, cuf1=\E[1C, cup=\E[%i%p1%d;%p2%dH, 
@@ -14598,8 +15515,7 @@ h19-a|h19a|heath-ansi|heathkit-a|heathkit h19 ansi mode,
 h19-bs|heathkit w/keypad shifted, 
        rmkx=\Eu, smkx=\Et, use=h19-b, 
 h19-us|h19us|h19-smul|heathkit w/keypad shifted/underscore cursor, 
-       rmkx=\Eu, smkx=\Et, 
-       use=h19-u, 
+       rmkx=\Eu, smkx=\Et, use=h19-u, 
 # (h19: merged in <ip> from BSDI hp19-e entry>;
 # also added empty <acsc> to suppress a tic warning --esr)
 # From: Tim Pierce <twp@skepsis.com>, 23 Feb 1998 
@@ -14616,7 +15532,7 @@ h19-us|h19us|h19-smul|heathkit w/keypad shifted/underscore cursor,
 # makes Emacs a little slower, but it remains in the land of the living.
 # Big win.
 h19|heath|h19-b|heathkit|heath-19|z19|zenith|heathkit h19, 
-       am, eslok, hs, mir, msgr, 
+       OTbs, am, eslok, hs, mir, msgr, 
        cols#80, it#8, lines#24, 
        acsc=, bel=^G, clear=\EE, cnorm=\Ey4, cr=^M, cub1=^H, cud1=\EB, 
        cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, 
@@ -14676,10 +15592,10 @@ alto-h19|altoh19|altoheath|alto-heath|alto emulating heathkit h19,
 # (z29: added empty <acsc> to suppress a tic warning, merged in
 # status line capabilities from BRL entry --esr)
 z29|zenith29|z29b|zenith z29b, 
-       am, eslok, hs, mir, msgr, 
-       cols#80, lines#24, 
-       acsc=, bel=^G, cbt=\E-, clear=\EE$<14>, cnorm=\Ey4, cr=^M
-       cub1=^H, cud1=\EB, cuf1=\EC, 
+       OTbs, OTpt, am, eslok, hs, mir, msgr, 
+       OTkn#10, cols#80, lines#24, 
+       OTbc=\ED, acsc=, bel=^G, cbt=\E-, clear=\EE$<14>, cnorm=\Ey4
+       cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E$<1>A, 
        cvvis=\Ex4, dch1=\EN$<0.1*>, dl1=\EM$<1/>, dsl=\Ey1, 
        ed=\EJ$<14>, el=\EK$<1>, fsl=\Ek\Ey5, home=\EH, ht=^I, 
@@ -14698,10 +15614,10 @@ z29|zenith29|z29b|zenith z29b,
 # (z29a: replaced nonexistent <if=/usr/share/tabset/zenith29> befause <hts>
 # looks vt100-compatible -- esr)
 z29a|z29a-kc-bc|h29a-kc-bc|heath/zenith 29 in ansi mode, 
-       am, eslok, hs, mir, msgr, 
-       cols#80, it#8, lines#24, 
-       bel=^G, blink=\E[5m, bold=\E[2m, clear=\E[2J, cr=^M
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, 
+       OTbs, OTpt, am, eslok, hs, mir, msgr, 
+       OTkn#10, cols#80, it#8, lines#24, 
+       OTbc=\ED, bel=^G, blink=\E[5m, bold=\E[2m, clear=\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, 
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
        dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m, dl=\E[%p1%dM, 
@@ -14751,12 +15667,11 @@ z39-a|z39a|zenith39-a|zenith39-ansi|Zenith 39 in ANSI mode,
 
 # From: Brad Brahms <Brahms@USC-ECLC>
 z100|h100|z110|z-100|h-100|heath/zenith z-100 pc with color monitor, 
-       cnorm=\Ey4\Em70, cvvis=\Ex4\Em71, 
-       use=z100bw, 
+       cnorm=\Ey4\Em70, cvvis=\Ex4\Em71, use=z100bw, 
 # (z100bw: removed obsolete ":kn#10:", added empty <acsc> -- esr)
 z100bw|h100bw|z110bw|z-100bw|h-100bw|heath/zenith z-100 pc, 
-       mir, msgr, 
-       cols#80, it#8, lines#24, 
+       OTbs, OTpt, mir, msgr, 
+       OTkn#10, cols#80, it#8, lines#24, 
        acsc=, clear=\EE$<5*/>, cnorm=\Ey4, cub1=^H, cud1=\EB, 
        cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<1*/>, 
        cuu1=\EA, cvvis=\Ex4, dch1=\EN$<1*/>, dl1=\EM$<5*/>, 
@@ -14770,7 +15685,7 @@ p19|h19-b with il1/dl1,
 # From: <ucscc!B.fiatlux@ucbvax.berkeley.edu>
 # (ztx: removed duplicate :sr: -- esr)
 ztx|ztx11|zt-1|htx11|ztx-1-a|ztx-10 or 11, 
-       am, eslok, hs, 
+       OTbs, am, eslok, hs, 
        cols#80, it#8, lines#24, 
        clear=\EE, cub1=^H, cud1=^J, cuf1=\EC, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM, 
@@ -14795,16 +15710,14 @@ ims950-b|bare ims950 no init string,
 ims950|ims televideo 950 emulation, 
        xenl@, 
        flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@, 
-       kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, 
-       use=tvi950, 
+       kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950, 
 # (ims950-rv: removed obsolete ":ko@:" -- esr)
 ims950-rv|ims tvi950 rev video, 
        xenl@, 
        flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@, 
-       kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, 
-       use=tvi950-rv, 
+       kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950-rv, 
 ims-ansi|ultima2|ultimaII|IMS Ultima II, 
-       am, 
+       OTbs, am, 
        cols#80, it#8, lines#24, 
        clear=\E[H\E[2J, cub1=^H, cud1=\ED, 
        cup=\E[%i%p1%2d;%p2%2dH, cuu1=\EM, ed=\E[0J, el=\E[0K, 
@@ -14822,17 +15735,17 @@ ims-ansi|ultima2|ultimaII|IMS Ultima II,
 #
 
 superbrain|intertec superbrain, 
-       am, bw, 
+       OTbs, am, bw, 
        cols#80, lines#24, 
-       bel=^G, clear=\014$<5*>, cr=^M, cub1=^H, cud1=^J, cuf1=^F
-       cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=^K, 
+       OTbc=^U, bel=^G, clear=\014$<5*>, cr=^M, cub1=^H, cud1=^J
+       cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=^K, 
        ed=\E~k<10*>, el=\E~K$<15>, ht=^I, ind=^J, kcub1=^U, 
        kcud1=^J, kcuf1=^F, kcuu1=^K, rmcup=^L, smcup=^L, 
 # (intertube: a Gould entry via BRL asserted smul=\E0@$<200/>, 
 # rmul=\E0A$<200/>; my guess is the highlight letter is bit-coded like an ADM,
 # and the reverse is actually true.  Try it. -- esr)
 intertube|intertec|Intertec InterTube, 
-       am, 
+       OTbs, am, 
        cols#80, lines#25, 
        bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<50>, cuu1=^Z, home=^A, 
@@ -14841,10 +15754,10 @@ intertube|intertec|Intertec InterTube,
 # are typing and a command comes in, the keystrokes you type get interspersed
 # with the command and it messes up
 intertube2|intertec data systems intertube 2, 
+       OTbs, 
        cup=\016%p1%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%c, 
        el=\EK, hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%c, 
-       ll=^K^X\r, vpa=\013%p1%c, 
-       use=intertube, 
+       ll=^K^X\r, vpa=\013%p1%c, use=intertube, 
 
 #### Ithaca Intersystems
 #
@@ -14912,8 +15825,7 @@ modgraph|mod24|modgraph terminal emulating vt100,
        cols#80, lines#24, 
        cvvis=\E\^9;0s\E\^7;1s, 
        is2=\E\^9;0s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s\E\^11;81s\E\^11;89s, 
-       rf@, ri=\EM\E[K$<5/>, 
-       use=vt100, 
+       rf@, ri=\EM\E[K$<5/>, use=vt100, 
 # The GX-1000 manual is dated 1984.  This looks rather like a VT-52.
 modgraph2|modgraph gx-1000 80x24 with keypad not enabled, 
        am, da, db, 
@@ -14937,10 +15849,10 @@ modgraph2|modgraph gx-1000 80x24 with keypad not enabled,
 # the first line disappears but a ctrl-l shows that it did work
 # correctly.
 modgraph48|mod|Modgraph w/48 lines, 
-       am, xenl, 
+       OTbs, OTpt, am, xenl, 
        cols#80, it#8, lines#48, vt#3, 
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J, cr=^M
-       csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C, 
+       OTnl=^J, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J
+       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, ed=\E[J, el=\E[K, 
        flash=\E[?5h\E[0q\E[1;2q\E[?5l\E[0q\E[4;3q, 
        home=\E[H, ht=^I, is2=\E<\E[1;48r\E[0q\E[3;4q\E=\E[?1h, 
@@ -14981,8 +15893,7 @@ mt70|mt-70|Morrow MD-70; native Morrow mode,
        kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, 
        kf8=^AG\r, kf9=^AH\r, khlp=^AO\r, khome=^AN\r, nel=^_, 
        rmacs=\E%, rmcup=, smacs=\E$, smcup=\E"2\EG0\E], smul=\EG1, 
-       tbc=\E0, 
-       use=adm+sgr, 
+       tbc=\E0, use=adm+sgr, 
 
 #### Motorola
 #
@@ -14990,8 +15901,8 @@ mt70|mt-70|Morrow MD-70; native Morrow mode,
 # Motorola EXORterm 155        from {decvax, ihnp4}!philabs!sbcs!megad!seth via BRL
 # (Seth H Zirin)
 ex155|Motorola Exorterm 155, 
-       am, bw, 
-       cols#80, lines#24, 
+       OTbs, am, bw, 
+       OTkn#5, OTug#1, cols#80, lines#24, 
        cbt=\E[, clear=\EX, cud1=\EB, cuf1=\ED, 
        cup=\EE%p1%{32}%+%c%p2%{32}%+%c, ed=\ET, el=\EU, 
        home=\E@, ht=\EZ, kbs=^H, kcbt=\E[, kclr=\EX, kcub1=^H, 
@@ -15003,7 +15914,7 @@ ex155|Motorola Exorterm 155,
 # This company is still around in 1995, manufacturing point-of-sale systems.
 
 omron|Omron 8025AG, 
-       am, da, db, 
+       OTbs, am, da, db, 
        cols#80, lines#24, 
        bel=^G, clear=\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, cuu1=\EA, 
        cvvis=\EN, dch1=\EP, dl1=\EM, ed=\ER, el=\EK, home=\EH, 
@@ -15027,8 +15938,8 @@ omron|Omron 8025AG,
 # Note that the Control-E key is useless on this brain-damaged terminal.  No
 # delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
 rt6221|Ramtek 6221 80x24, 
-       msgr, xon, 
-       cols#80, it#8, lines#24, vt#3, 
+       OTbs, OTpt, msgr, xon, 
+       OTkn#4, cols#80, it#8, lines#24, vt#3, 
        acsc=, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[>5l, 
        clear=\E[1;1H\E[J, cnorm=\E[>5h\E[>9h, cr=^M, 
        csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, 
@@ -15053,6 +15964,7 @@ rt6221-w|Ramtek 6221 160x48,
 
 # RCA VP3301 or VP3501
 rca|rca vp3301/vp3501, 
+       OTbs, 
        cols#40, lines#24, 
        clear=^L, cuf1=^U, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, 
        cuu1=^K, home=^Z, rmso=\E\ES0, smso=\E\ES1, 
@@ -15074,8 +15986,8 @@ rca|rca vp3301/vp3501,
 # to enable DC3/DC1 flow control!
 # I commented out the scrolling capabilities since they are too slow.
 hirez100|Selanar HiREZ-100, 
-       mir, msgr, xon, 
-       cols#80, it#8, lines#48, vt#3, 
+       OTbs, OTpt, mir, msgr, xon, 
+       OTkn#4, cols#80, it#8, lines#48, vt#3, 
        acsc=, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, 
        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, 
@@ -15129,10 +16041,9 @@ vsc|Signetics Vsc Video driver by RMC,
 # (soroc120: removed obsolete ":ma=^K^P^R^L^L :" -- esr)
 soroc120|iq120|soroc|soroc iq120, 
        clear=\E*$<2>, cud1=^J, ed=\EY, el=\ET, kcub1=^H, kcud1=^J, 
-       kcuf1=^L, kcuu1=^K, 
-       use=adm3a, 
+       kcuf1=^L, kcuu1=^K, use=adm3a, 
 soroc140|iq140|soroc iq140, 
-       am, mir, 
+       OTbs, am, mir, 
        cols#80, lines#24, 
        bel=^G, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\Ew, 
@@ -15223,19 +16134,17 @@ synertek|ktm|synertek380|synertek ktm 3/80 tubeless terminal,
 # compatible but looks more vt100-like.
 tab132|tab|tab132-15|tab 132/15, 
        da, db, 
-       cols#80, lines#24, lm#96, 
+       OTdN@, cols#80, lines#24, lm#96, 
        cud1=^J, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, 
        il1=\E[L, is2=\E[?7h\E[?3l\E[?5l, kcub1=\E[D, kcud1=\E[B, 
-       kcuu1=\E[A, rmir=\E[4l, rmkx@, smir=\E[4h, smkx@, 
-       use=vt100, 
+       kcuu1=\E[A, rmir=\E[4l, rmkx@, smir=\E[4h, smkx@, use=vt100, 
 tab132-w|tab132 in wide mode, 
        cols#132, 
        is2=\E[?7h\E[?3h\E[?5l, use=tab132, 
 tab132-rv|tab132 in reverse-video mode, 
        is2=\E[?7h\E[?3l\E[?5h, use=tab132, 
 tab132-w-rv|tab132 in reverse-video/wide mode, 
-       is2=\E[?7h\E[?3h\E[?5h, 
-       use=tab132-w, 
+       is2=\E[?7h\E[?3h\E[?5h, use=tab132-w, 
 
 
 #### Teleray
@@ -15257,15 +16166,17 @@ tab132-w-rv|tab132 in reverse-video/wide mode,
 #
 
 t3700|dumb teleray 3700, 
+       OTbs, 
        cols#80, lines#24, 
        bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, ind=^J, 
 t3800|teleray 3800 series, 
+       OTbs, 
        cols#80, it#8, lines#24, 
        bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK, 
        home=\EH, ht=^I, ind=^J, ll=\EY7\s, 
 t1061|teleray|teleray 1061, 
-       am, km, xhp, xt, 
+       OTbs, am, km, xhp, xt, 
        cols#80, it#8, lines#24, xmc#1, 
        bel=^G, clear=\014$<1>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ, 
@@ -15288,7 +16199,7 @@ t1061f|teleray 1061 with fast PROMs,
 # From: J. Lepreau <lepreau@utah-cs> Tue Feb  1 06:39:37 1983, Univ of Utah
 # (t10: removed overridden ":so@:se@:us@:ue@:" -- esr)
 t10|teleray 10 special, 
-       km, xhp, xt, 
+       OTbs, km, xhp, xt, 
        cols#80, it#8, lines#24, xmc#2, 
        clear=\Ej$<30/>, cub1=^H, cuf1=\EC, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ, 
@@ -15319,7 +16230,7 @@ t16|teleray 16,
 # printer.  It was portable, equipped with an acoustic coupler, and pretty
 # neat for its day.
 ti700|ti733|ti735|ti745|ti800|ti silent 700/733/735/745 or omni 800, 
-       hc, os, 
+       OTbs, hc, os, 
        cols#80, 
        bel=^G, cr=\r$<162>, cub1=^H, cud1=^J, ind=^J, 
 
@@ -15341,7 +16252,8 @@ ti916|ti916-220-7|Texas Instruments 916 VDT 8859/1 vt220 mode 7 bit CTRL,
        kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, 
        kf9=\E[26~, khome=\E[H, kich1=\E[@, knp=\E[S, kpp=\E[T, 
        kprt=^X, prot=\E&, rmacs=\017$<2>, rs2=\E[!p, 
-       smacs=\016$<2>, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd, use=vt220, 
+       smacs=\016$<2>, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd, 
+       use=vt220, 
 #
 # Texas Instruments 916 VDT 8 bit control mode
 #
@@ -15351,8 +16263,7 @@ ti916-8|ti916-220-8|Texas Instruments 916 VDT 8859/1 8 vt220 mode bit CTRL,
        kf10=\23328~, kf11=\23329~, kf12=\23331~, kf2=\23318~, 
        kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~, 
        kf7=\23324~, kf8=\23325~, kf9=\23326~, khome=\233H, 
-       kich1=\233@, knp=\233S, kpp=\233T, kprt=^X, 
-       use=ti916, 
+       kich1=\233@, knp=\233S, kpp=\233T, kprt=^X, use=ti916, 
 #
 # Texas Instruments 916 VDT 8859/1 7 bit control 132 column mode
 #
@@ -15364,7 +16275,7 @@ ti916-132|Texas Instruments 916 VDT vt220 132 column,
 ti916-8-132|Texas Instruments 916 VDT 8-bit vt220 132 column, 
        cols#132, use=ti916-8, 
 ti924|Texas Instruments 924 VDT 8859/1 7 bit CTRL, 
-       am, xon, 
+       OTbs, am, xon, 
        cols#80, it#8, lines#24, 
        bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, 
        clear=\E[2J\E[H, cnorm=\E[?25h, cr=^M, 
@@ -15397,7 +16308,7 @@ ti924w|Texas Instruments 924 VDT 7 bit - 132 column mode,
 ti924-8w|Texas Instruments 924 VDT 8 bit - 132 column mode, 
        cols#132, use=ti924-8, 
 ti931|Texas Instruments 931 VDT, 
-       am, xon, 
+       OTbs, am, xon, 
        cols#80, lines#24, 
        bel=^G, blink=\E4P, clear=\EL, cnorm=\E4@, cr=^M, cub1=\ED, 
        cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, 
@@ -15409,12 +16320,10 @@ ti931|Texas Instruments 931 VDT,
        kich1=\EP, kil1=\EN, rev=\E4B, ri=\Eb, rmso=\E4@, rmul=\E4@, 
        sgr0=\E4@, smso=\E4A, smul=\E4D, 
 ti926|Texas Instruments 926 VDT 8859/1 7 bit CTRL, 
-       csr@, ind=\E[1S, ri=\E[1T, 
-       use=ti924, 
+       csr@, ind=\E[1S, ri=\E[1T, use=ti924, 
 # (ti926-8: I corrected this from the broken SCO entry -- esr)
 ti926-8|Texas Instruments 926 VDT 8859/1 8 bit CTRL, 
-       csr@, ind=\2331S, ri=\2331T, 
-       use=ti924-8, 
+       csr@, ind=\2331S, ri=\2331T, use=ti924-8, 
 ti_ansi|basic entry for ti928, 
        am, bce, eo, xenl, xon, 
        colors#8, cols#80, it#8, lines#25, pairs#64, 
@@ -15437,8 +16346,7 @@ ti928|Texas Instruments 928 VDT 8859/1 7 bit CTRL,
        kf10=\E[28~, kf11=\E[29~, kf12=\E[31~, kf13=\E[32~, 
        kf15=\E[34~, kf2=\E[18~, kf3=\E[19~, kf4=\E[20~, 
        kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, 
-       kich1=\E[@, knp=\E[S, kpp=\E[T, kprt=\E[35~, 
-       use=ti_ansi, 
+       kich1=\E[@, knp=\E[S, kpp=\E[T, kprt=\E[35~, use=ti_ansi, 
 #
 #       928 VDT 8 bit control mode
 #
@@ -15448,8 +16356,7 @@ ti928-8|Texas Instruments 928 VDT 8859/1 8 bit CTRL,
        kf15=\23334~, kf2=\23318~, kf3=\23319~, kf4=\23320~, 
        kf5=\23321~, kf6=\23323~, kf7=\23324~, kf8=\23325~, 
        kf9=\23326~, khome=\233H, kich1=\233@, knp=\233S, 
-       kpp=\233T, kprt=\23335~, 
-       use=ti_ansi, 
+       kpp=\233T, kprt=\23335~, use=ti_ansi, 
 
 #### Zentec (zen)
 #
@@ -15459,31 +16366,29 @@ ti928-8|Texas Instruments 928 VDT 8859/1 8 bit CTRL,
 # dim-reverse using ADM12-style attributes. ADM12 <smul>/<rmul> and
 # <invis> might work-- esr)
 zen30|z30|zentec 30, 
-       am, mir, ul, 
+       OTbs, am, mir, ul, 
        cols#80, lines#24, 
        bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, 
        dim=\EG2, dl1=\ER$<1.5*>, ed=\EY, el=\ET$<1.0*>, home=^^, 
        il1=\EE$<1.5*>, ind=^J, rmir=\Er, rmul@, smir=\Eq, smso=\EG6, 
-       smul@, 
-       use=adm+sgr, 
+       smul@, use=adm+sgr, 
 # (zen50: this had extension capabilities
 #      :BS=^U:CL=^V:CR=^B:
 # UK/DK/RK/LK/HM were someone's aliases for ku/kd/kl/kr/kh,
 # which were also in the original entry -- esr)
 # (zen50: removed obsolete ":ma=^Hh^Ll^Jj^Kk:" -- esr)
 zen50|z50|zentec zephyr, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, xmc#1, 
        clear=\E+, cub1=^H, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, 
        cuu1=^K, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, ich1=\EQ, il1=\EE, 
        invis@, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, 
-       rmul@, smul@, 
-       use=adm+sgr, 
+       rmul@, smul@, use=adm+sgr, 
 
 # CCI 4574 (Office Power) from Will Martin <wmartin@BRL.ARPA> via BRL
 cci|cci1|z8001|zen8001|CCI Custom Zentec 8001, 
-       am, bw, 
+       OTbs, am, bw, 
        cols#80, lines#24, 
        blink=\EM", clear=\EH\EJ, cnorm=\EP, 
        csr=\ER%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=^J, 
@@ -15505,7 +16410,7 @@ cci|cci1|z8001|zen8001|CCI Custom Zentec 8001,
 
 # From: Gary Darland <goodmanc@garnet.berkeley.edu>
 apollo|apollo console, 
-       am, mir, 
+       OTbs, am, mir, 
        cols#88, lines#53, 
        clear=^L, cub1=^H, cud1=\EB, cuf1=\EC, 
        cup=\EM%p1%{32}%+%c%p2%d), cuu1=\EA, dch1=\EP, dl1=\EL, 
@@ -15534,20 +16439,22 @@ apollo_color|apollo color display,
 # (aws: removed unknown :dn=^K: -- esr)
 aws|Convergent Technologies AWS workstation under UTX and Xenix, 
        am, 
-       cols#80, lines#28, xmc#0, 
-       acsc=, clear=^L, cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, 
-       cuu1=^A, dch1=\EDC, dl1=\EDL, ed=\EEF, el=\EEL, hpa=\EH%p1%c, 
+       OTug#0, cols#80, lines#28, xmc#0, 
+       OTbc=^H, OTma=\016h\013j\001k\022l\002m, OTnl=^J, acsc=, 
+       clear=^L, cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, cuu1=^A, 
+       dch1=\EDC, dl1=\EDL, ed=\EEF, el=\EEL, hpa=\EH%p1%c, 
        ich1=\EIC, il1=\EIL, ind=\ESU, kbs=^H, kcub1=^N, kcud1=^K, 
        kcuf1=^R, kcuu1=^A, ri=\ESD, rmacs=\EAAF, rmso=\EARF, 
        rmul=\EAUF, smacs=\EAAN, smso=\EARN, smul=\EAUN, 
        vpa=\EV%p1%c, 
 awsc|Convergent Technologies AWS workstation under CTOS, 
        am, 
-       cols#80, lines#24, xmc#0, 
-       acsc=, clear=^L, cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, 
-       cuu1=^A, ed=\EEF, el=\EEL, kbs=^H, kcub1=^N, kcud1=^K, 
-       kcuf1=^R, kcuu1=^A, rmacs=\EAAF, rmso=\EAA, rmul=\EAA, 
-       smacs=\EAAN, smso=\EAE, smul=\EAC, 
+       OTug#0, cols#80, lines#24, xmc#0, 
+       OTbc=^N, OTma=\016h\013j\001k\022l\002m, acsc=, clear=^L, 
+       cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, cuu1=^A, ed=\EEF, 
+       el=\EEL, kbs=^H, kcub1=^N, kcud1=^K, kcuf1=^R, kcuu1=^A, 
+       rmacs=\EAAF, rmso=\EAA, rmul=\EAA, smacs=\EAAN, smso=\EAE, 
+       smul=\EAC, 
 
 #### DEC consoles
 #
@@ -15561,7 +16468,7 @@ awsc|Convergent Technologies AWS workstation under CTOS,
 # within it.  And that is what your termcap entry is for.  In graphics
 # mode the screen size is 1024x864 pixels.
 qdss|qdcons|qdss glass tty, 
-       am, 
+       OTbs, am, 
        cols#128, lines#57, 
        clear=\032$<1/>, cub1=^H, cud1=^J, cuf1=^L, 
        cup=\E=%p1%c%p2%c, cuu1=^K, 
@@ -15590,7 +16497,7 @@ qdss|qdcons|qdss glass tty,
 # "reverse-video-glitch" capability; I have put :rv: and :re: in with standard
 # names below.  I've removed obsolete ":nl=5^J:" as there is a :do: -- esr)
 fos|fortune|Fortune system, 
-       am, bw, 
+       OTbs, am, bw, 
        cols#80, lines#25, 
        acsc=j*k(l m"q&v%w#x-, bel=^G, blink=\EN, civis=\E], 
        clear=\014$<20>, cnorm=\E\\, cr=^M, cub1=^H, cud1=\n$<3>, 
@@ -15614,7 +16521,7 @@ fos|fortune|Fortune system,
 
 # (masscomp: ":MT:" changed to ":km:";  -- esr)
 masscomp|masscomp workstation console, 
-       km, mir, 
+       OTbs, km, mir, 
        cols#80, it#8, lines#24, 
        clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C, 
        cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, 
@@ -15863,11 +16770,11 @@ xerox1720|x1720|x1750|xerox 1720,
 # and a date on the serial-number plate) please send it!
 
 cad68-3|cgc3|cad68 basic monitor transparent mode size 3 chars, 
-       am, 
+       OTbs, am, 
        cols#73, lines#36, 
        clear=^Z, cub1=^H, cuf1=^L, cuu1=^K, home=^^, 
 cad68-2|cgc2|cad68 basic monitor transparent mode size 2 chars, 
-       am, 
+       OTbs, am, 
        cols#85, lines#39, 
        clear=^Z, cub1=^H, cuf1=^L, cuu1=^K, home=^^, kcub1=\E3, 
        kcud1=\E2, kcuf1=\E4, kcuu1=\E1, kf1=\E5, kf2=\E6, kf3=\E7, 
@@ -15893,7 +16800,7 @@ d132|datagraphix|datagraphix 132a,
 # mode (which is what this entry looks like) and several other lesser-known
 # emulations.
 d800|Direct 800/A, 
-       am, da, db, msgr, xhp, 
+       OTbs, am, da, db, msgr, xhp, 
        cols#80, it#8, lines#24, 
        acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~, 
        bel=^G, clear=\E[1;1H\E[2J, cnorm=\E[>12h, cr=^M, cub1=^H, 
@@ -15904,6 +16811,7 @@ d800|Direct 800/A,
        ri=\EM, rmacs=\E[m, rmso=\E[m, rmul=\E[m, sgr0=\E[m, 
        smacs=\E[1m, smso=\E[7m, smul=\E[4m, 
 digilog|digilog 333, 
+       OTbs, 
        cols#80, lines#16, 
        bel=^G, cr=^M, cub1=^H, cud1=^J, cuf1=^I, cuu1=^O, el=^X, 
        home=^N, ind=^J, 
@@ -15923,17 +16831,18 @@ dwk|dwk-vt|dwk terminal,
 env230|envision230|envision 230 graphics terminal, 
        xenl@, 
        mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, 
-       sgr=\E[%?%p1%t;1%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m, use=vt100, 
+       sgr=\E[%?%p1%t;1%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m, 
+       use=vt100, 
 # These execuports were impact-printer ttys with a 30- or maybe 15-cps acoustic
 # coupler attached, the whole rig fitting in a suitcase and more or less
 # portable.  Hot stuff for c.1977 :-) -- esr
 ep48|ep4080|execuport 4080, 
-       am, os, 
+       OTbs, am, os, 
        cols#80, 
        bel=^G, cr=^M, cub1=^H, cud1=^J, hd=^\, hu=^^, ind=^J, 
 ep40|ep4000|execuport 4000, 
        cols#136, use=ep4080, 
-# Adam Thompson <thompson@xanth.magic.mb.ca> tells us:
+# Adam Thompson <athompso@pangea.ca> tells us:
 # Informer series - these are all portable units, resembling older
 # automatic bread-baking machines.  The terminal looks like a `clamshell'
 # design, but isn't.  The structure is similar to the Direct terminals,
@@ -15946,7 +16855,7 @@ ep40|ep4000|execuport 4000,
 # color terminals built for IBM bisync protocols.
 # From: Paul Leondis <unllab@amber.berkeley.edu>
 ifmr|Informer D304, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        clear=\EZ, cub1=^H, cud1=^J, cuf1=\EC, 
        cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dch1=\E\\, 
@@ -15982,10 +16891,9 @@ opus3n1+|Esprit Opus3n1+ in wy60 mode with ANSI arrow keys,
        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(, 
-       uc=\EG8%p1%c\EG0, 
-       use=adm+sgr, 
+       uc=\EG8%p1%c\EG0, use=adm+sgr, 
 teletec|Teletec Datascreen, 
-       am, 
+       OTbs, am, 
        cols#80, lines#24, 
        bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^_, cuu1=^K, 
        home=^^, ind=^J, 
@@ -15994,10 +16902,29 @@ teletec|Teletec Datascreen,
 # 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.
+#
+# Kenneth Randell <kenr@datametrics.com> writes on 31 Dec 1998:
+# I had a couple of scopes (3221) like this once where I used to work, around
+# the 1987 time frame if memory serves me correctly.  These scopes were made  
+# by an outfit called LANPAR Technologies, and were meant to me DEC VT 220
+# compatible.  The 3220 was a plain text terminal like the VT-220, the 3221
+# was a like the VT-240 (monochrome with Regis + Sixel graphics), and the 3222
+# was like the VT-241 (color with Regis + Sixel Graphics).  These terminals
+# (3221) cost about $1500 each, and one was always broken -- had to be sent
+# back to the shop for repairs.
+# The only real advantage these scopes had over the VT-240's were:
+# 1) They were faster in the Regis display, or at least the ones I did
+# 2) They had a handy debugging feature where you could split-screen the
+# scope, the graphics would appear on the top, and the REGIS commands would
+# appear on the bottom.  I don't remember the VT-240s being able to do that.
+# I would swear that LANPAR Technologies was in MA someplace, but since I
+# don't work at the same place anymore, and those terminals and manuals were
+# long since junked, I cannot be any more sure than that.
+#
 # (v3220: removed obsolete ":kn#10:",
 # I added <rmam>/<smam> based on the init string -- esr)
 v3220|LANPAR Vision II model 3220/3221/3222, 
-       am, mir, xenl, 
+       OTbs, am, mir, xenl, 
        cols#80, it#8, lines#24, 
        clear=\E[H\E[J, cub1=^H, cuf1=\E[C, 
        cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, 
@@ -17343,6 +18270,82 @@ v3220|LANPAR Vision II model 3220/3221/3222,
 #        key mapping, leaving Potorti's entries more like he named them -TD
 #      * remove enter/exit am-mode from cygwin -TD
 #
+# 1999/10/30
+#      * correct typos in several entries (missing '[' from CSI):
+#        mgr-sun, ncsa-m, vt320-k3, att505, avt-ns, as well as smir/rmir
+#        strings for avt-ns -TD
+#      * add 'dim' to ncv mask for linux (report by Klaus Weide).
+#
+# 1999/11/27
+#      * correct kf1-kf4 in xterm-r6 which were vt100-style PF1-PF4 -TD
+#      * add hts to xterm-r6, and u6-u9 to xterm-r5 -TD
+#      * add xterm-88color and xterm-256color -TD
+#
+# 1999/12/4
+#      * add "obsolete" termcap strings -TD
+#      * add kvt and gnome entries -TD
+#
+# 1999/12/11
+#      * correct cup string for regent100 -TD
+#
+# 2000/1/1
+#      * update mach, add mach-color based on Debian diffs for ncurses 5.0 -TD
+#      * add entries for xterm-hp, xterm-vt220, xterm-vt52 and xterm-noapp -TD
+#      * change OTrs capabilities to rs2 -TD
+#      * add obsolete and extended capabilities to 'screen' -TD
+#
+# 2000/1/5
+#      * remove kf0 from rxvt, vt520, vt525 and ibm5151 since it conflicts
+#        with kf10 -TD
+#      * updated xterm-xf86-v40, making kdch1 correspond to vt220 'Remove',
+#        and adding kcbt -TD
+#
+# 2000/1/12
+#      * remove incorrect khome/kend from xterm-xf86-v333, which was based on
+#        nonstandard resource settings -TD
+#
+# 2000/2/26
+#      * minor fixes for xterm-*, based on Debian #58530 -TD
+#
+# 2000/3/4
+#      * add several terminal types from esr's "11.0", as well as comments.
+#        bq300*, dku7102-old, dku7202, hft, lft, pcmw, pmcons, tws*, vip*,
+#        vt220-8bit, vt220-old, wy85-8bit
+#
+# 2000/3/18
+#      * add several terminal types from esr's "11.0.1" (ansi-*).
+#      * update OTxx capabilities for changes on 2000/3/4.
+#      * revert part of vt220 change (request by Todd C Miller for OpenBSD)
+#
+# 2000/3/26
+#      * move screen's AX extension to ecma+color, modify several entries to
+#        use that, adjusting ncv as needed -TD
+#
+# 2000/4/8
+#      * add bsdos-pc-m, bsdos-pc-mono (Jeffrey C Honig)
+#      * correct spelling error in entry name: bq300-rv was given as bg300-rv
+#        in esr's version.
+#
+# 2000/4/15
+#      * add cud, ech, etc., to beterm based on feedback from Rico Tudor -TD
+#      * correct color definition for ibm3164, make minor changes to other
+#        IBM terminal definitions based on recent terminfo descriptions -TD
+#
+# 2000/4/22
+#      * add mgterm, from NetBSD -TD
+#      * add alias sun-cgsix for sun-ss5 as per NetBSD
+#      * change cons25w to use rs2 for reset rather than rs1 -TD
+#      * add rc/sc to aixterm based on manpage -TD
+#
+# 2000/5/13
+#      * remove ncv from xterm-16color, xterm-256 color
+#
+# 2000/6/10
+#      * add kmous capability to linux to use Joerg Schoen's gpm patch.
+#
+# 2000/7/1
+#      * add Eterm (Michael Jennings)
+#
 # The following sets edit modes for GNU EMACS.
 # Local Variables:
 # fill-prefix:"\t"
index b7a40fdc18097e7f8c06b1334e11b5d20bfde83e..5173269e440aa64399d40337877082efc680dc50 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: mk-0th.awk,v 1.7 1998/02/11 12:13:52 tom Exp $
+# $Id: mk-0th.awk,v 1.8 2000/01/09 00:29:10 tom Exp $
 ##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc.                          #
+# Copyright (c) 1998-2000 Free Software Foundation, Inc.                     #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -38,6 +38,12 @@ BEGIN        {
                print  ""
                print  "# generated by mk-0th.awk"
                print  ""
+               print  ".SUFFIXES: .c .h .i"
+               print  ".c.i :"
+               printf "\t$(CPP) $(CPPFLAGS) $< >$@\n"
+               print  ".h.i :"
+               printf "\t$(CPP) $(CPPFLAGS) $< >$@\n"
+               print  ""
                found = 0;
        }
        !/^[@#]/ {
index e22d414fbd17d8cc698f04b4fb677c5197846fd9..63ec24b475f65ac16e37f250b166682d510026bd 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: mk-1st.awk,v 1.39 1998/05/09 21:54:02 tom Exp $
+# $Id: mk-1st.awk,v 1.44 2000/07/07 00:27:51 tom Exp $
 ##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc.                          #
+# Copyright (c) 1998,2000 Free Software Foundation, Inc.                     #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -27,7 +27,7 @@
 # authorization.                                                             #
 ##############################################################################
 #
-# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
+# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,2000
 #
 # Generate list of objects for a given model library
 # Variables:
@@ -39,6 +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)
+#      ShlibVer ("rel", "abi" or "auto", to augment DoLinks variable)
 #      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 ) {
-                       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
-                       }
+                       printf "rm -f %s; ", dst
+                       printf "$(LN_S) %s %s; ", src, dst
                }
        }
-function sharedlinks(directory, add) {
-               if ( end_name != lib_name ) {
-                       if ( DoLinks == "yes" ) {
-                               abi_name = sprintf("%s.$(ABI_VERSION)", lib_name);
-                       } else {
-                               abi_name = end_name;
-                       }
-                       if (add) {
-                               printf "\tcd %s && (", directory
-                               if ( abi_name != end_name ) {
-                                       symlink(end_name, abi_name);
+function rmlink(directory, dst) {
+               printf "\t-rm -f %s/%s\n", directory, dst
+}
+function removelinks(directory) {
+               rmlink(directory, end_name);
+               if ( DoLinks == "reverse" ) {
+                               if ( ShlibVer == "rel" ) {
+                                       rmlink(directory, abi_name);
+                                       rmlink(directory, rel_name);
+                               } else if ( ShlibVer == "abi" ) {
+                                       rmlink(directory, abi_name);
                                }
-                               symlink(abi_name, lib_name);
-                               printf ")\n"
-                       } else {
-                               if ( abi_name != end_name ) {
-                                       printf "\t-@rm -f %s/%s\n", directory, abi_name
+               } else {
+                               if ( ShlibVer == "rel" ) {
+                                       rmlink(directory, abi_name);
+                                       rmlink(directory, lib_name);
+                               } else if ( ShlibVer == "abi" ) {
+                                       rmlink(directory, lib_name);
                                }
-                               printf "\t-@rm -f %s/%s\n", directory, lib_name
-                       }
                }
        }
-function removelinks() {
-               if ( end_name != lib_name ) {
-                       if ( abi_name != end_name ) {
-                               printf "\t-rm -f ../lib/%s\n", abi_name
+function sharedlinks(directory) {
+               if ( ShlibVer != "auto" ) {
+                       printf "\tcd %s && (", directory
+                       if ( DoLinks == "reverse" ) {
+                               if ( ShlibVer == "rel" ) {
+                                       symlink(lib_name, abi_name);
+                                       symlink(abi_name, rel_name);
+                               } else if ( ShlibVer == "abi" ) {
+                                       symlink(lib_name, abi_name);
+                               }
+                       } else {
+                               if ( ShlibVer == "rel" ) {
+                                       symlink(rel_name, abi_name);
+                                       symlink(abi_name, lib_name);
+                               } else if ( ShlibVer == "abi" ) {
+                                       symlink(abi_name, lib_name);
+                               }
                        }
-                       printf "\t-rm -f ../lib/%s\n", end_name
+                       printf ")\n"
                }
        }
 BEGIN  {
@@ -114,7 +122,14 @@ BEGIN      {
                        }
                }
        }
-       !/^[@#]/ {
+       /^[@#]/ {
+               next
+       }
+       $1 ~ /trace/ {
+               if (traces != "all" && traces != MODEL && $1 != "lib_trace")
+                       next
+       }
+       {
                if (using \
                 && ( $2 == "lib" \
                   || $2 == "progs" \
@@ -144,45 +159,40 @@ END       {
                        lib_name = sprintf("%s%s%s", prefix, name, suffix)
                        if ( MODEL == "SHARED" )
                        {
-                               if ( DoLinks == "yes" ) {
-                                       end_name = sprintf("%s.$(REL_VERSION)", lib_name);
-                               } else if ( DoLinks == "reverse") {
-                                       tmp_name = sprintf("%s.$(ABI_VERSION)", lib_name);
+                               abi_name = sprintf("%s.$(ABI_VERSION)", lib_name);
+                               rel_name = sprintf("%s.$(REL_VERSION)", lib_name);
+                               if ( DoLinks == "reverse") {
                                        end_name = lib_name;
-                                       lib_name = tmp_name;
                                } else {
-                                       end_name = lib_name;
+                                       if ( ShlibVer == "rel" ) {
+                                               end_name = rel_name;
+                                       } else if ( ShlibVer == "abi" ) {
+                                               end_name = abi_name;
+                                       } else {
+                                               end_name = lib_name;
+                                       }
                                }
-                               printf "../lib/%s : $(%s_OBJS)\n", lib_name, OBJS
+                               printf "../lib/%s : $(%s_OBJS)\n", end_name, OBJS
                                print  "\t-@rm -f $@"
                                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 ) {
-                                       printf "../lib/%s : ../lib/%s\n", end_name, lib_name
-                               }
+                               sharedlinks("../lib")
                                print  ""
                                print  "install \\"
                                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
-                               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)
+                               printf "\t@echo installing ../lib/%s as $(INSTALL_PREFIX)$(libdir)/%s\n", end_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", end_name, end_name
+                               sharedlinks("$(INSTALL_PREFIX)$(libdir)")
                                if ( overwrite == "yes" && name == "ncurses" )
                                {
                                        ovr_name = sprintf("libcurses%s", suffix)
-                                       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
+                                       printf "\t@echo linking %s to %s\n", end_name, ovr_name
+                                       printf "\tcd $(INSTALL_PREFIX)$(libdir) && (rm -f %s; $(LN_S) %s %s; )\n", ovr_name, end_name, ovr_name
                                }
                                if ( ldconfig != "" ) {
                                        printf "\t- test -z \"$(INSTALL_PREFIX)\" && %s\n", ldconfig
@@ -191,13 +201,12 @@ END       {
                                print  "uninstall \\"
                                print  "uninstall.libs \\"
                                printf "uninstall.%s ::\n", name
-                               printf "\t@echo uninstalling $(INSTALL_PREFIX)$(libdir)/%s \n", end_name
-                               printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/%s\n", end_name
-                               sharedlinks("$(INSTALL_PREFIX)$(libdir)", 0)
+                               printf "\t@echo uninstalling $(INSTALL_PREFIX)$(libdir)/%s\n", end_name
+                               removelinks("$(INSTALL_PREFIX)$(libdir)")
                                if ( overwrite == "yes" && name == "ncurses" )
                                {
                                        ovr_name = sprintf("libcurses%s", suffix)
-                                       printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/%s \n", ovr_name
+                                       printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/%s\n", ovr_name
                                }
                                if ( rmSoLocs == "yes" ) {
                                        print  ""
@@ -220,12 +229,12 @@ END       {
                                print  "install \\"
                                print  "install.libs \\"
                                printf "install.%s :: $(INSTALL_PREFIX)$(libdir) ../lib/%s\n", name, lib_name
-                               printf "\t@echo installing ../lib/%s as $(INSTALL_PREFIX)$(libdir)/%s \n", lib_name, lib_name
-                               printf "\t$(INSTALL_DATA) ../lib/%s $(INSTALL_PREFIX)$(libdir)/%s \n", lib_name, lib_name
+                               printf "\t@echo installing ../lib/%s as $(INSTALL_PREFIX)$(libdir)/%s\n", lib_name, lib_name
+                               printf "\t$(INSTALL_DATA) ../lib/%s $(INSTALL_PREFIX)$(libdir)/%s\n", lib_name, lib_name
                                if ( overwrite == "yes" && lib_name == "libncurses.a" )
                                {
-                                       printf "\t@echo linking libcurses.a to libncurses.a \n"
-                                       printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/libcurses.a \n"
+                                       printf "\t@echo linking libcurses.a to libncurses.a\n"
+                                       printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/libcurses.a\n"
                                        printf "\t(cd $(INSTALL_PREFIX)$(libdir) && $(LN_S) libncurses.a libcurses.a)\n"
                                }
                                printf "\t$(RANLIB) $(INSTALL_PREFIX)$(libdir)/%s\n", lib_name
@@ -238,12 +247,12 @@ END       {
                                print  "uninstall \\"
                                print  "uninstall.libs \\"
                                printf "uninstall.%s ::\n", name
-                               printf "\t@echo uninstalling $(INSTALL_PREFIX)$(libdir)/%s \n", lib_name
+                               printf "\t@echo uninstalling $(INSTALL_PREFIX)$(libdir)/%s\n", lib_name
                                printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/%s\n", lib_name
                                if ( overwrite == "yes" && lib_name == "libncurses.a" )
                                {
-                                       printf "\t@echo linking libcurses.a to libncurses.a \n"
-                                       printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/libcurses.a \n"
+                                       printf "\t@echo linking libcurses.a to libncurses.a\n"
+                                       printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/libcurses.a\n"
                                }
                                if ( target == "vxworks" )
                                {
@@ -253,13 +262,10 @@ END       {
                        }
                        print ""
                        print "clean ::"
-                       printf "\t-rm -f ../lib/%s\n", lib_name
+                       removelinks("../lib");
                        print ""
                        print "mostlyclean::"
                        printf "\t-rm -f $(%s_OBJS)\n", OBJS
-                       print ""
-                       print "clean ::"
-                       removelinks();
                }
                else if ( found == 2 )
                {
index 2d998b0c5c3dae336388be80930773337c7ea99b..e90f16d038827c21c1097b01de971187693d1c98 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: mk-2nd.awk,v 1.11 1998/10/17 21:54:21 Alexander.V.Lukyanov Exp $
+# $Id: mk-2nd.awk,v 1.12 2000/04/01 20:50:36 tom Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
@@ -67,7 +67,14 @@ BEGIN        {
                        }
                }
        }
-       !/^[@#]/ {
+       /^[@#]/ {
+               next
+       }
+       $1 ~ /trace/ {
+               if (traces != "all" && traces != MODEL && $1 != "lib_trace")
+                       next
+       }
+       {
                if ($0 != "" \
                 && using != 0) {
                        found = 1
index b2e45ea2ec2907f9c3a1c2548944b9cf9b252f6c..8f0503e0382f071c61a703d39225a062ec386e59 100755 (executable)
@@ -4,11 +4,12 @@
 # Created: 1993-05-16
 # Last modified: 1994-03-25
 # Public domain
+#
 
-umask 022
 errstatus=0
+umask 022
 
-for file in ${1+"$@"} ; do 
+for file in ${1+"$@"} ; do
    set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
    shift
 
@@ -21,7 +22,10 @@ for file in ${1+"$@"} ; do
 
      if test ! -d "$pathcomp"; then
         echo "mkdir $pathcomp" 1>&2
-        mkdir "$pathcomp" || errstatus=$?
+        case "$pathcomp" in
+          [a-zA-Z]: )  ;;               # DOSISH systems
+          * )          mkdir "$pathcomp" || errstatus=$? ;;
+        esac
      fi
 
      pathcomp="$pathcomp/"
index bed5ee95d2c238478a5ff977dd1033c2a87525f1..41b66f69732b9c126c86f8b499ed0d4d92a20e27 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.63 1999/09/01 22:35:53 tom Exp $
+# $Id: Makefile.in,v 1.66 2000/05/28 01:39:56 tom Exp $
 ##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc.                          #
+# Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.                #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -129,7 +129,7 @@ AUTO_SRC = \
        ./names.c \
        ./unctrl.c
 
-TEST_DEPS      = @LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@
+TEST_DEPS      = ../lib/@LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@
 TEST_ARGS      = -L../lib -lncurses@DFT_ARG_SUFFIX@
 TEST_LDFLAGS   = @LD_MODEL@ $(TEST_ARGS) @LIBS@ @EXTRA_LIBS@ @LOCAL_LDFLAGS@ @LDFLAGS@
 
@@ -145,7 +145,8 @@ tinfo       = $(srcdir)/tinfo
 trace  = $(srcdir)/trace
 
 ################################################################################
-all ::         $(AUTO_SRC) ../lib $(LIBRARIES)
+all \
+libs ::                $(AUTO_SRC) ../lib $(LIBRARIES)
 
 sources:       $(AUTO_SRC)
 
index 0f4419242a9957b4b26c92765eed22ffc476c727..3d5b25637d75f41c1ae397b08d9b4ba8a5c3bfb3 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: MKunctrl.awk,v 1.6 1998/06/06 18:18:07 tom Exp $
+# $Id: MKunctrl.awk,v 1.7 2000/04/01 19:49:26 tom Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
@@ -50,6 +50,8 @@ END   {
                                printf "\"^\\%03o\"", ch + 64
                        } else if (ch == 127) {
                                printf "\"^?\""
+                       } else if (ch >= 128 && ch < 160) {
+                               printf "\"~\\%03o\"", ch - 64
                        } else {
                                printf "\"\\%03o\"", ch
                                gap = gap " "
index 101d75ef29a9a3a1ddbb35c5500b6e9135cd4c13..69c17c34709bf0cd43cde2177ab3570efa3677ea 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -41,7 +41,7 @@
 #include <curses.priv.h>
 #include <ctype.h>
 
-MODULE_ID("$Id: lib_addch.c,v 1.42 1999/07/24 20:01:05 tom Exp $")
+MODULE_ID("$Id: lib_addch.c,v 1.44 2000/05/20 21:13:11 tom Exp $")
 
 /*
  * Ugly microtweaking alert.  Everything from here to end of module is
@@ -56,40 +56,40 @@ MODULE_ID("$Id: lib_addch.c,v 1.42 1999/07/24 20:01:05 tom Exp $")
 /* Return bit mask for clearing color pair number if given ch has color */
 #define COLOR_MASK(ch) (~(chtype)((ch)&A_COLOR?A_COLOR:0))
 
-static inline chtype render_char(WINDOW *win, chtype ch)
+static inline chtype
+render_char(WINDOW *win, chtype ch)
 /* compute a rendition of the given char correct for the current context */
 {
-       chtype a = win->_attrs;
-       
-       if (ch == ' ')
-       {
-               /* color in attrs has precedence over bkgd */
-               ch = a | (win->_bkgd & COLOR_MASK(a));
-       }
-       else
-       {
-               /* color in attrs has precedence over bkgd */
-               a |= (win->_bkgd & A_ATTRIBUTES) & COLOR_MASK(a);
-               /* color in ch has precedence */
-               ch |= (a & COLOR_MASK(ch));
-       }
-
-       TR(TRACE_VIRTPUT, ("bkg = %lx, attrs = %lx -> ch = %lx", win->_bkgd,
-               win->_attrs, ch));
-
-       return(ch);
+    chtype a = win->_attrs;
+
+    if (ch == ' ') {
+       /* color in attrs has precedence over bkgd */
+       ch = a | (win->_bkgd & COLOR_MASK(a));
+    } else {
+       /* color in attrs has precedence over bkgd */
+       a |= (win->_bkgd & A_ATTRIBUTES) & COLOR_MASK(a);
+       /* color in ch has precedence */
+       ch |= (a & COLOR_MASK(ch));
+    }
+
+    TR(TRACE_VIRTPUT, ("bkg = %lx, attrs = %lx -> ch = %lx", win->_bkgd,
+           win->_attrs, ch));
+
+    return (ch);
 }
 
-chtype _nc_background(WINDOW *win)
+chtype
+_nc_background(WINDOW *win)
 /* make render_char() visible while still allowing us to inline it below */
 {
-       return (win->_bkgd);
+    return (win->_bkgd);
 }
 
-chtype _nc_render(WINDOW *win, chtype ch)
+chtype
+_nc_render(WINDOW *win, chtype ch)
 /* make render_char() visible while still allowing us to inline it below */
 {
-       return render_char(win, ch);
+    return render_char(win, ch);
 }
 
 /* check if position is legal; if not, return error */
@@ -105,149 +105,152 @@ chtype _nc_render(WINDOW *win, chtype ch)
                return(ERR); \
        }
 #else
-#define CHECK_POSITION(win, x, y) /* nothing */
+#define CHECK_POSITION(win, x, y)      /* nothing */
 #endif
 
-static inline
-int waddch_literal(WINDOW *win, chtype ch)
+static inline int
+waddch_literal(WINDOW *win, chtype ch)
 {
-       int x;
-       struct ldat *line;
+    int x;
+    struct ldat *line;
+
+    x = win->_curx;
+
+    CHECK_POSITION(win, x, win->_cury);
+
+    /*
+     * If we're trying to add a character at the lower-right corner more
+     * than once, fail.  (Moving the cursor will clear the flag).
+     */
+#if 0  /* Solaris 2.6 allows updating the corner more than once */
+    if (win->_flags & _WRAPPED) {
+       if (x >= win->_maxx)
+           return (ERR);
+       win->_flags &= ~_WRAPPED;
+    }
+#endif
+
+    ch = render_char(win, ch);
+    TR(TRACE_VIRTPUT, ("win attr = %s", _traceattr(win->_attrs)));
 
-       x = win->_curx;
+    line = win->_line + win->_cury;
 
-       CHECK_POSITION(win, x, win->_cury);
+    CHANGED_CELL(line, x);
 
+    line->text[x++] = ch;
+
+    TR(TRACE_VIRTPUT, ("(%d, %d) = %s", win->_cury, x, _tracechtype(ch)));
+    if (x > win->_maxx) {
        /*
-        * If we're trying to add a character at the lower-right corner more
-        * than once, fail.  (Moving the cursor will clear the flag).
+        * The _WRAPPED flag is useful only for telling an application that
+        * we've just wrapped the cursor.  We don't do anything with this flag
+        * except set it when wrapping, and clear it whenever we move the
+        * cursor.  If we try to wrap at the lower-right corner of a window, we
+        * cannot move the cursor (since that wouldn't be legal).  So we return
+        * an error (which is what SVr4 does).  Unlike SVr4, we can
+        * successfully add a character to the lower-right corner (Solaris 2.6
+        * does this also, however).
         */
-       if (win->_flags & _WRAPPED) {
-               if (x >= win->_maxx)
-                       return (ERR);
-               win->_flags &= ~_WRAPPED;
-       }
-
-       ch = render_char(win, ch);
-       TR(TRACE_VIRTPUT, ("win attr = %s", _traceattr(win->_attrs)));
-
-       line = win->_line+win->_cury;
-       
-       CHANGED_CELL(line,x);
-
-       line->text[x++] = ch;
-       
-       TR(TRACE_VIRTPUT, ("(%d, %d) = %s", win->_cury, x, _tracechtype(ch)));
-       if (x > win->_maxx) {
-               /*
-                * The _WRAPPED flag is useful only for telling an application
-                * that we've just wrapped the cursor.  We don't do anything
-                * with this flag except set it when wrapping, and clear it
-                * whenever we move the cursor.  If we try to wrap at the
-                * lower-right corner of a window, we cannot move the cursor
-                * (since that wouldn't be legal).  So we return an error
-                * (which is what SVr4 does).  Unlike SVr4, we can successfully
-                * add a character to the lower-right corner.
-                */
-               win->_flags |= _WRAPPED;
-               if (++win->_cury > win->_regbottom) {
-                       win->_cury = win->_regbottom;
-                       win->_curx = win->_maxx;
-                       if (!win->_scroll)
-                               return (ERR);
-                       scroll(win);
-               }
-               win->_curx = 0;
-               return (OK);
+       win->_flags |= _WRAPPED;
+       if (++win->_cury > win->_regbottom) {
+           win->_cury = win->_regbottom;
+           win->_curx = win->_maxx;
+           if (!win->_scroll)
+               return (ERR);
+           scroll(win);
        }
-       win->_curx = x;
-       return OK;
+       win->_curx = 0;
+       return (OK);
+    }
+    win->_curx = x;
+    return OK;
 }
 
-static inline
-int waddch_nosync(WINDOW *win, const chtype ch)
+static inline int
+waddch_nosync(WINDOW *win, const chtype ch)
 /* the workhorse function -- add a character to the given window */
 {
-       int     x, y;
-       int     t = 0;
-       const char *s = 0;
-
-       if ((ch & A_ALTCHARSET)
-           || ((t = TextOf(ch)) > 127)
-           || ((s = unctrl(t))[1] == 0))
-               return waddch_literal(win, ch);
-
-       x = win->_curx;
-       y = win->_cury;
-
-       switch (t) {
-       case '\t':
-               x += (TABSIZE-(x%TABSIZE));
-
-               /*
-                * Space-fill the tab on the bottom line so that we'll get the
-                * "correct" cursor position.
-                */
-               if ((! win->_scroll && (y == win->_regbottom))
-                || (x <= win->_maxx)) {
-                       chtype blank = (' ' | AttrOf(ch));
-                       while (win->_curx < x) {
-                               if (waddch_literal(win, blank) == ERR)
-                                       return(ERR);
-                       }
-                       break;
-               } else {
-                       wclrtoeol(win);
-                       win->_flags |= _WRAPPED;
-                       if (++y > win->_regbottom) {
-                               x = win->_maxx;
-                               y--;
-                               if (win->_scroll) {
-                                       scroll(win);
-                                       x = 0;
-                               }
-                       } else {
-                               x = 0;
-                       }
-               }
-               break;
-       case '\n':
-               wclrtoeol(win);
-               if (++y > win->_regbottom) {
-                       y--;
-                       if (win->_scroll)
-                               scroll(win);
-                       else
-                               return (ERR);
+    int x, y;
+    int t = 0;
+    const char *s = 0;
+
+    if ((ch & A_ALTCHARSET)
+       || ((t = TextOf(ch)) > 127)
+       || ((s = unctrl(t))[1] == 0))
+       return waddch_literal(win, ch);
+
+    x = win->_curx;
+    y = win->_cury;
+
+    switch (t) {
+    case '\t':
+       x += (TABSIZE - (x % TABSIZE));
+
+       /*
+        * Space-fill the tab on the bottom line so that we'll get the
+        * "correct" cursor position.
+        */
+       if ((!win->_scroll && (y == win->_regbottom))
+           || (x <= win->_maxx)) {
+           chtype blank = (' ' | AttrOf(ch));
+           while (win->_curx < x) {
+               if (waddch_literal(win, blank) == ERR)
+                   return (ERR);
+           }
+           break;
+       } else {
+           wclrtoeol(win);
+           win->_flags |= _WRAPPED;
+           if (++y > win->_regbottom) {
+               x = win->_maxx;
+               y--;
+               if (win->_scroll) {
+                   scroll(win);
+                   x = 0;
                }
-               /* FALLTHRU */
-       case '\r':
+           } else {
                x = 0;
-               win->_flags &= ~_WRAPPED;
-               break;
-       case '\b':
-               if (x == 0)
-                       return (OK);
-               x--;
-               win->_flags &= ~_WRAPPED;
-               break;
-       default:
-               while (*s)
-                       if (waddch_literal(win, (*s++)|AttrOf(ch)) == ERR)
-                               return ERR;
-               return(OK);
+           }
        }
-
-       win->_curx = x;
-       win->_cury = y;
-
-       return(OK);
+       break;
+    case '\n':
+       wclrtoeol(win);
+       if (++y > win->_regbottom) {
+           y--;
+           if (win->_scroll)
+               scroll(win);
+           else
+               return (ERR);
+       }
+       /* FALLTHRU */
+    case '\r':
+       x = 0;
+       win->_flags &= ~_WRAPPED;
+       break;
+    case '\b':
+       if (x == 0)
+           return (OK);
+       x--;
+       win->_flags &= ~_WRAPPED;
+       break;
+    default:
+       while (*s)
+           if (waddch_literal(win, (*s++) | AttrOf(ch)) == ERR)
+               return ERR;
+       return (OK);
+    }
+
+    win->_curx = x;
+    win->_cury = y;
+
+    return (OK);
 }
 
-int _nc_waddch_nosync(WINDOW *win, const chtype c)
+int
+_nc_waddch_nosync(WINDOW *win, const chtype c)
 /* export copy of waddch_nosync() so the string-put functions can use it */
 {
-    return(waddch_nosync(win, c));
+    return (waddch_nosync(win, c));
 }
 
 /*
@@ -258,36 +261,38 @@ int _nc_waddch_nosync(WINDOW *win, const chtype c)
 
 /* These are actual entry points */
 
-int waddch(WINDOW *win, const chtype ch)
+int
+waddch(WINDOW *win, const chtype ch)
 {
-       int code = ERR;
+    int code = ERR;
 
-       TR(TRACE_VIRTPUT|TRACE_CCALLS, (T_CALLED("waddch(%p, %s)"), win, _tracechtype(ch)));
+    TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_CALLED("waddch(%p, %s)"), win,
+           _tracechtype(ch)));
 
-       if (win && (waddch_nosync(win, ch) != ERR))
-       {
-               _nc_synchook(win);
-               code = OK;
-       }
+    if (win && (waddch_nosync(win, ch) != ERR)) {
+       _nc_synchook(win);
+       code = OK;
+    }
 
-       TR(TRACE_VIRTPUT|TRACE_CCALLS, (T_RETURN("%d"), code));
-       return(code);
+    TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_RETURN("%d"), code));
+    return (code);
 }
 
-int wechochar(WINDOW *win, const chtype ch)
+int
+wechochar(WINDOW *win, const chtype ch)
 {
-       int code = ERR;
-
-       TR(TRACE_VIRTPUT|TRACE_CCALLS, (T_CALLED("wechochar(%p, %s)"), win, _tracechtype(ch)));
-
-       if (win && (waddch_nosync(win, ch) != ERR))
-       {
-               bool    save_immed = win->_immed;
-               win->_immed = TRUE;
-               _nc_synchook(win);
-               win->_immed = save_immed;
-               code = OK;
-       }
-       TR(TRACE_VIRTPUT|TRACE_CCALLS, (T_RETURN("%d"), code));
-       return(code);
+    int code = ERR;
+
+    TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_CALLED("wechochar(%p, %s)"), win,
+           _tracechtype(ch)));
+
+    if (win && (waddch_nosync(win, ch) != ERR)) {
+       bool save_immed = win->_immed;
+       win->_immed = TRUE;
+       _nc_synchook(win);
+       win->_immed = save_immed;
+       code = OK;
+    }
+    TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_RETURN("%d"), code));
+    return (code);
 }
index 9ac55e42aba7051daa4cf8cc5df3c1f36e981962..0a72165910f3c0ce03d05348070a29970f4bcf89 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_addstr.c,v 1.16 1998/06/28 00:38:29 tom Exp $")
+MODULE_ID("$Id: lib_addstr.c,v 1.17 2000/04/29 21:15:55 tom Exp $")
 
 int
 waddnstr(WINDOW *win, const char *const astr, int n)
 {
-unsigned const char *str = (unsigned const char *)astr;
-int code = ERR;
+    unsigned const char *str = (unsigned const char *) astr;
+    int code = ERR;
 
-       T((T_CALLED("waddnstr(%p,%s,%d)"), win, _nc_visbuf(astr), n));
-         
-       if (win && (str != 0)) {            
-         T(("... current %s", _traceattr(win->_attrs)));
-         TR(TRACE_VIRTPUT, ("str is not null"));
-         code = OK;
-         if (n < 0)
-           n = (int)strlen(astr);
-         
-         while((n-- > 0) && (*str != '\0')) {
+    T((T_CALLED("waddnstr(%p,%s,%d)"), win, _nc_visbuf(astr), n));
+
+    if (win && (str != 0)) {
+       T(("... current %s", _traceattr(win->_attrs)));
+       TR(TRACE_VIRTPUT, ("str is not null"));
+       code = OK;
+       if (n < 0)
+           n = (int) strlen(astr);
+
+       while ((n-- > 0) && (*str != '\0')) {
            TR(TRACE_VIRTPUT, ("*str = %#x", *str));
-           if (_nc_waddch_nosync(win, (chtype)*str++) == ERR) {
-             code = ERR;
-             break;
+           if (_nc_waddch_nosync(win, (chtype) * str++) == ERR) {
+               code = ERR;
+               break;
            }
-         }
-         _nc_synchook(win);
        }
-       TR(TRACE_VIRTPUT, ("waddnstr returns %d", code));
-       returnCode(code);
+       _nc_synchook(win);
+    }
+    TR(TRACE_VIRTPUT, ("waddnstr returns %d", code));
+    returnCode(code);
 }
 
 int
-waddchnstr(WINDOW *win, const chtype *const astr, int n)
+waddchnstr(WINDOW *win, const chtype * const astr, int n)
 {
-short y = win->_cury;
-short x = win->_curx;
-int code = OK;
-struct ldat *line;
+    NCURSES_SIZE_T y = win->_cury;
+    NCURSES_SIZE_T x = win->_curx;
+    int code = OK;
+    struct ldat *line;
 
-       T((T_CALLED("waddchnstr(%p,%p,%d)"), win, astr, n));
+    T((T_CALLED("waddchnstr(%p,%p,%d)"), win, astr, n));
 
-       if (!win)
-               returnCode(ERR);
+    if (!win)
+       returnCode(ERR);
 
-       if (n < 0) {
-               const chtype *str;
-               n = 0;
-               for (str=(const chtype *)astr; *str!=0; str++)
-                       n++;
-       }
-       if (n > win->_maxx - x + 1)
-               n = win->_maxx - x + 1;
-       if (n == 0)
-               returnCode(code);
+    if (n < 0) {
+       const chtype *str;
+       n = 0;
+       for (str = (const chtype *) astr; *str != 0; str++)
+           n++;
+    }
+    if (n > win->_maxx - x + 1)
+       n = win->_maxx - x + 1;
+    if (n == 0)
+       returnCode(code);
 
-       line = &(win->_line[y]);
-       memcpy(line->text+x, astr, n*sizeof(*astr));
-       CHANGED_RANGE(line, x, x+n-1);
+    line = &(win->_line[y]);
+    memcpy(line->text + x, astr, n * sizeof(*astr));
+    CHANGED_RANGE(line, x, x + n - 1);
 
-       _nc_synchook(win);
-       returnCode(code);
+    _nc_synchook(win);
+    returnCode(code);
 }
index bcd96416f954f32b4770bbdca43c54f42c2c412d..8a682585b5605266b73e36026edd980149837216 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,8 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
-
 /*
 **     lib_box.c
 **
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_box.c,v 1.10 1998/02/11 12:13:56 tom Exp $")
+MODULE_ID("$Id: lib_box.c,v 1.11 2000/04/29 21:12:37 tom Exp $")
 
-int wborder(WINDOW *win, chtype ls, chtype rs, chtype ts,
-       chtype bs, chtype tl, chtype tr, chtype bl, chtype br)
+int
+wborder(WINDOW *win,
+    chtype ls, chtype rs, chtype ts, chtype bs,
+    chtype tl, chtype tr, chtype bl, chtype br)
 {
-short i;
-short endx, endy;
+    NCURSES_SIZE_T i;
+    NCURSES_SIZE_T endx, endy;
 
     T((T_CALLED("wborder(%p,%s,%s,%s,%s,%s,%s,%s,%s)"),
-       win,
-       _tracechtype2(1,ls),
-       _tracechtype2(2,rs),
-       _tracechtype2(3,ts),
-       _tracechtype2(4,bs),
-       _tracechtype2(5,tl),
-       _tracechtype2(6,tr),
-       _tracechtype2(7,bl),
-       _tracechtype2(8,br)));
-
-        if (!win)
-          returnCode(ERR);
-
-       if (ls == 0) ls = ACS_VLINE;
-       if (rs == 0) rs = ACS_VLINE;
-       if (ts == 0) ts = ACS_HLINE;
-       if (bs == 0) bs = ACS_HLINE;
-       if (tl == 0) tl = ACS_ULCORNER;
-       if (tr == 0) tr = ACS_URCORNER;
-       if (bl == 0) bl = ACS_LLCORNER;
-       if (br == 0) br = ACS_LRCORNER;
-
-       ls = _nc_render(win, ls);
-       rs = _nc_render(win, rs);
-       ts = _nc_render(win, ts);
-       bs = _nc_render(win, bs);
-       tl = _nc_render(win, tl);
-       tr = _nc_render(win, tr);
-       bl = _nc_render(win, bl);
-       br = _nc_render(win, br);
-
-       T(("using %#lx, %#lx, %#lx, %#lx, %#lx, %#lx, %#lx, %#lx", ls, rs, ts, bs, tl, tr, bl, br));
-
-       endx = win->_maxx;
-       endy = win->_maxy;
-
-       for (i = 0; i <= endx; i++) {
-               win->_line[0].text[i] = ts;
-               win->_line[endy].text[i] = bs;
-       }
-       win->_line[endy].firstchar = win->_line[0].firstchar = 0;
-       win->_line[endy].lastchar = win->_line[0].lastchar = endx;
-
-       for (i = 0; i <= endy; i++) {
-               win->_line[i].text[0] =  ls;
-               win->_line[i].text[endx] =  rs;
-               win->_line[i].firstchar = 0;
-               win->_line[i].lastchar = endx;
-       }
-       win->_line[0].text[0] = tl;
-       win->_line[0].text[endx] = tr;
-       win->_line[endy].text[0] = bl;
-       win->_line[endy].text[endx] = br;
-
-       _nc_synchook(win);
-       returnCode(OK);
+           win,
+           _tracechtype2(1, ls),
+           _tracechtype2(2, rs),
+           _tracechtype2(3, ts),
+           _tracechtype2(4, bs),
+           _tracechtype2(5, tl),
+           _tracechtype2(6, tr),
+           _tracechtype2(7, bl),
+           _tracechtype2(8, br)));
+
+    if (!win)
+       returnCode(ERR);
+
+    if (ls == 0)
+       ls = ACS_VLINE;
+    if (rs == 0)
+       rs = ACS_VLINE;
+    if (ts == 0)
+       ts = ACS_HLINE;
+    if (bs == 0)
+       bs = ACS_HLINE;
+    if (tl == 0)
+       tl = ACS_ULCORNER;
+    if (tr == 0)
+       tr = ACS_URCORNER;
+    if (bl == 0)
+       bl = ACS_LLCORNER;
+    if (br == 0)
+       br = ACS_LRCORNER;
+
+    ls = _nc_render(win, ls);
+    rs = _nc_render(win, rs);
+    ts = _nc_render(win, ts);
+    bs = _nc_render(win, bs);
+    tl = _nc_render(win, tl);
+    tr = _nc_render(win, tr);
+    bl = _nc_render(win, bl);
+    br = _nc_render(win, br);
+
+    T(("using %#lx, %#lx, %#lx, %#lx, %#lx, %#lx, %#lx, %#lx",
+           ls, rs, ts, bs, tl, tr, bl, br));
+
+    endx = win->_maxx;
+    endy = win->_maxy;
+
+    for (i = 0; i <= endx; i++) {
+       win->_line[0].text[i] = ts;
+       win->_line[endy].text[i] = bs;
+    }
+    win->_line[endy].firstchar = win->_line[0].firstchar = 0;
+    win->_line[endy].lastchar = win->_line[0].lastchar = endx;
+
+    for (i = 0; i <= endy; i++) {
+       win->_line[i].text[0] = ls;
+       win->_line[i].text[endx] = rs;
+       win->_line[i].firstchar = 0;
+       win->_line[i].lastchar = endx;
+    }
+    win->_line[0].text[0] = tl;
+    win->_line[0].text[endx] = tr;
+    win->_line[endy].text[0] = bl;
+    win->_line[endy].text[endx] = br;
+
+    _nc_synchook(win);
+    returnCode(OK);
 }
index cec34161acef4802cbf41c4833d3e247faf1232e..d1e243f37ffd6de5b855cf31e00fb76f410019cf 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_clrbot.c,v 1.14 1998/06/28 00:36:26 tom Exp $")
+MODULE_ID("$Id: lib_clrbot.c,v 1.15 2000/04/29 21:15:26 tom Exp $")
 
-int wclrtobot(WINDOW *win)
+int
+wclrtobot(WINDOW *win)
 {
-int     code = ERR;
+    int code = ERR;
 
-       T((T_CALLED("wclrtobot(%p)"), win));
+    T((T_CALLED("wclrtobot(%p)"), win));
 
-       if (win) {
-               short y;
-               short startx = win->_curx;
-               chtype blank = _nc_background(win);
+    if (win) {
+       NCURSES_SIZE_T y;
+       NCURSES_SIZE_T 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));
+       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]);
+       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);
+           CHANGED_TO_EOL(line, startx, win->_maxx);
 
-                       while (ptr <= end)
-                               *ptr++ = blank;
+           while (ptr <= end)
+               *ptr++ = blank;
 
-                       startx = 0;
-               }
-               _nc_synchook(win);
-               code = OK;
+           startx = 0;
        }
-       returnCode(code);
+       _nc_synchook(win);
+       code = OK;
+    }
+    returnCode(code);
 }
-
index 0c7522278e382aa440ca65e8ec9d25d34cba1bc2..a5d067cbfd5ffbea3f69ca5b08950a00573699c8 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*
 **     lib_clreol.c
 **
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_clreol.c,v 1.15 1998/06/28 00:32:20 tom Exp $")
+MODULE_ID("$Id: lib_clreol.c,v 1.16 2000/04/29 21:14:54 tom Exp $")
 
-int  wclrtoeol(WINDOW *win)
+int
+wclrtoeol(WINDOW *win)
 {
-int     code = ERR;
+    int code = ERR;
 
-       T((T_CALLED("wclrtoeol(%p)"), win));
+    T((T_CALLED("wclrtoeol(%p)"), win));
 
-       if (win) {
-               chtype  blank;
-               chtype  *ptr, *end;
-               struct ldat *line;
-               short y = win->_cury;
-               short x = win->_curx;
+    if (win) {
+       chtype blank;
+       chtype *ptr, *end;
+       struct ldat *line;
+       NCURSES_SIZE_T y = win->_cury;
+       NCURSES_SIZE_T 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);
+       /*
+        * 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);
+       blank = _nc_background(win);
+       line = &win->_line[y];
+       CHANGED_TO_EOL(line, x, win->_maxx);
 
-               ptr = &(line->text[x]);
-               end = &(line->text[win->_maxx]);
+       ptr = &(line->text[x]);
+       end = &(line->text[win->_maxx]);
 
-               while (ptr <= end)
-                       *ptr++ = blank;
+       while (ptr <= end)
+           *ptr++ = blank;
 
-               _nc_synchook(win);
-               code = OK;
-       }
-       returnCode(code);
+       _nc_synchook(win);
+       code = OK;
+    }
+    returnCode(code);
 }
index 297a14c36d6eaf518825f697d0c2918771d9fdb6..71bee42487cd9c19ae0cfe102b92af1aba4f8a78 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
 /* lib_color.c
  *
  * Handles color emulation of SYS V curses
- *
  */
 
 #include <curses.priv.h>
 
 #include <term.h>
+#include <tic.h>
 
-MODULE_ID("$Id: lib_color.c,v 1.36 1999/10/03 00:20:37 Philippe.Blain Exp $")
+MODULE_ID("$Id: lib_color.c,v 1.51 2000/05/20 20:09:22 tom Exp $")
 
 /*
  * These should be screen structure members.  They need to be globals for
- * hystorical reasons.  So we assign them in start_color() and also in
+ * historical reasons.  So we assign them in start_color() and also in
  * set_term()'s screen-switching logic.
  */
-int COLOR_PAIRS;
-int COLORS;
+int COLOR_PAIRS = 0;
+int COLORS = 0;
 
 /*
  * Given a RGB range of 0..1000, we'll normally set the individual values
@@ -57,141 +57,179 @@ int COLORS;
  */
 #define RGB_ON  680
 #define RGB_OFF 0
-
+/* *INDENT-OFF* */
 static const color_t cga_palette[] =
 {
-    /*  R              G               B */
-       {RGB_OFF,       RGB_OFF,        RGB_OFF},       /* COLOR_BLACK */
-       {RGB_ON,        RGB_OFF,        RGB_OFF},       /* COLOR_RED */
-       {RGB_OFF,       RGB_ON,         RGB_OFF},       /* COLOR_GREEN */
-       {RGB_ON,        RGB_ON,         RGB_OFF},       /* COLOR_YELLOW */
-       {RGB_OFF,       RGB_OFF,        RGB_ON},        /* COLOR_BLUE */
-       {RGB_ON,        RGB_OFF,        RGB_ON},        /* COLOR_MAGENTA */
-       {RGB_OFF,       RGB_ON,         RGB_ON},        /* COLOR_CYAN */
-       {RGB_ON,        RGB_ON,         RGB_ON},        /* COLOR_WHITE */
+    /*  R               G               B */
+    {RGB_OFF,          RGB_OFF,        RGB_OFF},       /* COLOR_BLACK */
+    {RGB_ON,           RGB_OFF,        RGB_OFF},       /* COLOR_RED */
+    {RGB_OFF,          RGB_ON,         RGB_OFF},       /* COLOR_GREEN */
+    {RGB_ON,           RGB_ON,         RGB_OFF},       /* COLOR_YELLOW */
+    {RGB_OFF,          RGB_OFF,        RGB_ON},        /* COLOR_BLUE */
+    {RGB_ON,           RGB_OFF,        RGB_ON},        /* COLOR_MAGENTA */
+    {RGB_OFF,          RGB_ON,         RGB_ON},        /* COLOR_CYAN */
+    {RGB_ON,           RGB_ON,         RGB_ON},        /* COLOR_WHITE */
 };
+
 static const color_t hls_palette[] =
 {
-    /*  H      L       S */
-       {0,     0,      0},     /* COLOR_BLACK */
-       {120,   50,     100},   /* COLOR_RED */
-       {240,   50,     100},   /* COLOR_GREEN */
-       {180,   50,     100},   /* COLOR_YELLOW */
-       {330,   50,     100},   /* COLOR_BLUE */
-       {60,    50,     100},   /* COLOR_MAGENTA */
-       {300,   50,     100},   /* COLOR_CYAN */
-       {0,     50,     100},   /* COLOR_WHITE */
+    /*  H       L       S */
+    {  0,      0,      0},             /* COLOR_BLACK */
+    {  120,    50,     100},           /* COLOR_RED */
+    {  240,    50,     100},           /* COLOR_GREEN */
+    {  180,    50,     100},           /* COLOR_YELLOW */
+    {  330,    50,     100},           /* COLOR_BLUE */
+    {  60,     50,     100},           /* COLOR_MAGENTA */
+    {  300,    50,     100},           /* COLOR_CYAN */
+    {  0,      50,     100},           /* COLOR_WHITE */
 };
+/* *INDENT-ON* */
+
+#ifdef NCURSES_EXT_FUNCS
+/*
+ * These are called from _nc_do_color(), which in turn is called from
+ * vidattr - so we have to assume that SP may be null.
+ */
+static int
+default_fg(void)
+{
+    return (SP != 0) ? SP->_default_fg : COLOR_WHITE;
+}
+
+static int
+default_bg(void)
+{
+    return SP != 0 ? SP->_default_bg : COLOR_BLACK;
+}
+#else
+#define default_fg() COLOR_WHITE
+#define default_bg() COLOR_BLACK
+#endif
 
 /*
  * 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)
+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};
+       {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))
+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);
-       }
+    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);
+    }
 }
 
-static void set_foreground_color(int fg, int  (*outc)(int))
+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);
-       }
+    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)
+static bool
+set_original_colors(void)
 {
-       if (orig_pair != 0) {
-               TPUTS_TRACE("orig_pair");
-               putp(orig_pair);
-               return TRUE;
-       }
-       else if (orig_colors != NULL)
-       {
-               TPUTS_TRACE("orig_colors");
-               putp(orig_colors);
-               return TRUE;
-       }
-       return FALSE;
+    if (orig_pair != 0) {
+       TPUTS_TRACE("orig_pair");
+       putp(orig_pair);
+       return TRUE;
+    } else if (orig_colors != NULL) {
+       TPUTS_TRACE("orig_colors");
+       putp(orig_colors);
+       return TRUE;
+    }
+    return FALSE;
 }
 
-int start_color(void)
+int
+start_color(void)
 {
-       T((T_CALLED("start_color()")));
+    int n;
+    const color_t *tp;
+
+    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 (set_original_colors() != TRUE) {
+       set_foreground_color(default_fg(), _nc_outch);
+       set_background_color(default_bg(), _nc_outch);
+    }
+
+    if (VALID_NUMERIC(max_pairs))
+       COLOR_PAIRS = SP->_pair_count = max_pairs;
+    else
+       returnCode(ERR);
+    if ((SP->_color_pairs = typeCalloc(unsigned short, max_pairs)) == 0)
+         returnCode(ERR);
+    SP->_color_pairs[0] = PAIR_OF(default_fg(), default_bg());
+    if (VALID_NUMERIC(max_colors))
+       COLORS = SP->_color_count = max_colors;
+    else
+       returnCode(ERR);
+    SP->_coloron = 1;
+
+    if ((SP->_color_table = typeMalloc(color_t, COLORS)) == 0)
+       returnCode(ERR);
+    tp = (hue_lightness_saturation) ? hls_palette : cga_palette;
+    for (n = 0; n < COLORS; n++) {
+       if (n < 8) {
+           SP->_color_table[n] = tp[n];
+       } else {
+           SP->_color_table[n] = tp[n % 8];
+           if (hue_lightness_saturation) {
+               SP->_color_table[n].green = 100;
+           } else {
+               if (SP->_color_table[n].red)
+                   SP->_color_table[n].red = 1000;
+               if (SP->_color_table[n].green)
+                   SP->_color_table[n].green = 1000;
+               if (SP->_color_table[n].blue)
+                   SP->_color_table[n].blue = 1000;
+           }
        }
+    }
 
-       if (max_pairs != -1)
-               COLOR_PAIRS = SP->_pair_count = max_pairs;
-       else
-               returnCode(ERR);
-       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;
-       else
-               returnCode(ERR);
-       SP->_coloron = 1;
-
-       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
-           memcpy(SP->_color_table, cga_palette, sizeof(color_t) * COLORS);
-
-       T(("started color: COLORS = %d, COLOR_PAIRS = %d", COLORS, COLOR_PAIRS));
-
-       returnCode(OK);
+    T(("started color: COLORS = %d, COLOR_PAIRS = %d", COLORS, COLOR_PAIRS));
+
+    returnCode(OK);
 }
 
 /* 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)
+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;
+    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 */
-    {
+    if (min == max) {          /* black, white and all shades of gray */
        *h = 0;
        *s = 0;
        return;
@@ -200,16 +238,16 @@ static void rgb2hls(short r, short g, short b, short *h, short *l, short *s)
     /* calculate saturation */
     if (*l < 50)
        *s = ((max - min) * 100) / (max + min);
-    else *s = ((max - min) * 100) / (2000 - 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
-       if (g == max)
-           t = 240 + ((b - r) * 60) / (max - min);
-       else
-           t = 360 + ((r - g) * 60) / (max - min);
+       t = 360 + ((r - g) * 60) / (max - min);
 
     *h = t % 360;
 }
@@ -218,212 +256,227 @@ static void rgb2hls(short r, short g, short b, short *h, short *l, short *s)
  * Extension (1997/1/18) - Allow negative f/b values to set default color
  * values.
  */
-int init_pair(short pair, short f, short b)
+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))
-               returnCode(ERR);
-       if (SP->_default_color)
-       {
-               if (f < 0)
-                       f = C_MASK;
-               if (b < 0)
-                       b = C_MASK;
-               if (f >= COLORS && f != C_MASK)
-                       returnCode(ERR);
-               if (b >= COLORS && b != C_MASK)
-                       returnCode(ERR);
-       }
-       else
+    unsigned result;
+
+    T((T_CALLED("init_pair(%d,%d,%d)"), pair, f, b));
+
+    if ((pair < 0) || (pair >= COLOR_PAIRS))
+       returnCode(ERR);
+#ifdef NCURSES_EXT_FUNCS
+    if (SP->_default_color) {
+       if (f < 0)
+           f = C_MASK;
+       if (b < 0)
+           b = C_MASK;
+       if (f >= COLORS && f != C_MASK)
+           returnCode(ERR);
+       if (b >= COLORS && b != C_MASK)
+           returnCode(ERR);
+    } else
+#endif
+    {
        if ((f < 0) || (f >= COLORS)
-        || (b < 0) || (b >= COLORS))
-               returnCode(ERR);
-
-       /*
-        * 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).
-        */
-       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;
-                   }
+           || (b < 0) || (b >= COLORS)
+           || (pair < 1))
+           returnCode(ERR);
+    }
+
+    /*
+     * 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).
+     */
+    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);
            }
+           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;
-
-           T(("initializing pair: pair = %d, fg=(%d,%d,%d), bg=(%d,%d,%d)",
-              pair,
-              tp[f].red, tp[f].green, tp[f].blue,
-              tp[b].red, tp[b].green, tp[b].blue));
-
-           if (initialize_pair)
-           {
-               TPUTS_TRACE("initialize_pair");
-               putp(tparm(initialize_pair,
-                           pair,
-                           tp[f].red, tp[f].green, tp[f].blue,
-                           tp[b].red, tp[b].green, tp[b].blue));
-           }
+    }
+    SP->_color_pairs[pair] = result;
+    if ((int) (SP->_current_attr & A_COLOR) == COLOR_PAIR(pair))
+       SP->_current_attr |= A_COLOR;   /* force attribute update */
+
+    if (initialize_pair) {
+       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,
+               tp[f].red, tp[f].green, tp[f].blue,
+               tp[b].red, tp[b].green, tp[b].blue));
+
+       if (initialize_pair) {
+           TPUTS_TRACE("initialize_pair");
+           putp(tparm(initialize_pair,
+                   pair,
+                   tp[f].red, tp[f].green, tp[f].blue,
+                   tp[b].red, tp[b].green, tp[b].blue));
        }
+    }
 
-       returnCode(OK);
+    returnCode(OK);
 }
 
-int init_color(short color, short r, short g, 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));
-
-       if (initialize_color == NULL)
-               returnCode(ERR);
-
-       if (color < 0 || color >= COLORS)
-               returnCode(ERR);
-       if (r < 0 || r > 1000 || g < 0 ||  g > 1000 || b < 0 || b > 1000)
-               returnCode(ERR);
-
-       if (hue_lightness_saturation)
-           rgb2hls(r, g, b,
-                     &SP->_color_table[color].red,
-                     &SP->_color_table[color].green,
-                     &SP->_color_table[color].blue);
-       else
-       {
-               SP->_color_table[color].red = r;
-               SP->_color_table[color].green = g;
-               SP->_color_table[color].blue = b;
-       }
+    T((T_CALLED("init_color(%d,%d,%d,%d)"), color, r, g, b));
 
-       if (initialize_color)
-       {
-               TPUTS_TRACE("initialize_color");
-               putp(tparm(initialize_color, color, r, g, b));
-       }
-       returnCode(OK);
+    if (initialize_color == NULL)
+       returnCode(ERR);
+
+    if (color < 0 || color >= COLORS)
+       returnCode(ERR);
+    if (r < 0 || r > 1000 || g < 0 || g > 1000 || b < 0 || b > 1000)
+       returnCode(ERR);
+
+    if (hue_lightness_saturation)
+       rgb2hls(r, g, b,
+           &SP->_color_table[color].red,
+           &SP->_color_table[color].green,
+           &SP->_color_table[color].blue);
+    else {
+       SP->_color_table[color].red = r;
+       SP->_color_table[color].green = g;
+       SP->_color_table[color].blue = b;
+    }
+
+    if (initialize_color) {
+       TPUTS_TRACE("initialize_color");
+       putp(tparm(initialize_color, color, r, g, b));
+    }
+    returnCode(OK);
 }
 
-bool can_change_color(void)
+bool
+can_change_color(void)
 {
-       T((T_CALLED("can_change_color()")));
-       returnCode ((can_change != 0) ? TRUE : FALSE);
+    T((T_CALLED("can_change_color()")));
+    returnCode((can_change != 0) ? TRUE : FALSE);
 }
 
-bool has_colors(void)
+bool
+has_colors(void)
 {
-       T((T_CALLED("has_colors()")));
-       returnCode (((max_colors != -1) && (max_pairs != -1)
-                    && (((set_foreground != NULL)
-                         && (set_background != NULL))
-                        || ((set_a_foreground != NULL)
-                            && (set_a_background != NULL))
-                        || set_color_pair)) ? TRUE : FALSE);
+    T((T_CALLED("has_colors()")));
+    returnCode((VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs)
+           && (((set_foreground != NULL)
+                   && (set_background != NULL))
+               || ((set_a_foreground != NULL)
+                   && (set_a_background != NULL))
+               || set_color_pair)) ? TRUE : FALSE);
 }
 
-int color_content(short color, short *r, short *g, short *b)
+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)
        returnCode(ERR);
 
-    if (r) *r = SP->_color_table[color].red;
-    if (g) *g = SP->_color_table[color].green;
-    if (b) *b = SP->_color_table[color].blue;
+    if (r)
+       *r = SP->_color_table[color].red;
+    if (g)
+       *g = SP->_color_table[color].green;
+    if (b)
+       *b = SP->_color_table[color].blue;
     returnCode(OK);
 }
 
-int pair_content(short pair, short *f, short *b)
+int
+pair_content(short pair, short *f, short *b)
 {
-       T((T_CALLED("pair_content(%d,%p,%p)"), pair, f, b));
+    T((T_CALLED("pair_content(%d,%p,%p)"), pair, f, b));
 
-       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);
+    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);
 
-       returnCode(OK);
+    returnCode(OK);
 }
 
-void _nc_do_color(int pair, bool reverse, int (*outc)(int))
+void
+_nc_do_color(int old_pair, int pair, bool reverse, int (*outc) (int))
 {
-    short fg, bg;
+    NCURSES_COLOR_T fg = C_MASK, bg = C_MASK;
+    NCURSES_COLOR_T old_fg, old_bg;
 
-    if (pair == 0)
-    {
-       if (orig_pair)
-       {
-           TPUTS_TRACE("orig_pair");
-           tputs(orig_pair, 1, outc);
-       }
-       else if (set_color_pair)
-       {
+    if (pair < 0 || pair >= COLOR_PAIRS) {
+       return;
+    } else if (pair != 0) {
+       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);
+           return;
+       } else if (SP != 0) {
+           pair_content(pair, &fg, &bg);
        }
     }
-    else
-    {
-       if (set_color_pair)
-       {
-           TPUTS_TRACE("set_color_pair");
-           tputs(tparm(set_color_pair, pair), 1, outc);
+
+    if (old_pair >= 0 && SP != 0) {
+       pair_content(old_pair, &old_fg, &old_bg);
+       if ((fg == C_MASK && old_fg != C_MASK)
+           || (bg == C_MASK && old_bg != C_MASK)) {
+#ifdef NCURSES_EXT_FUNCS
+           /*
+            * A minor optimization - but extension.  If "AX" is specified in
+            * the terminal description, treat it as screen's indicator of ECMA
+            * SGR 39 and SGR 49, and assume the two sequences are independent.
+            */
+           if (SP->_has_sgr_39_49 && old_bg == C_MASK && old_fg != C_MASK) {
+               tputs("\033[39m", 1, outc);
+           } else if (SP->_has_sgr_39_49 && old_fg == C_MASK && old_bg != C_MASK) {
+               tputs("\033[49m", 1, outc);
+           } else
+#endif
+               set_original_colors();
        }
-       else
-       {
-           pair_content(pair, &fg, &bg);
-           if (reverse) {
-               short xx = fg;
-               fg = bg;
-               bg = xx;
-           }
+    } else {
+       set_original_colors();
+       if (old_pair < 0)
+           return;
+    }
 
-           T(("setting colors: pair = %d, fg = %d, bg = %d", pair, fg, bg));
+#ifdef NCURSES_EXT_FUNCS
+    if (fg == C_MASK)
+       fg = default_fg();
+    if (bg == C_MASK)
+       bg = default_bg();
+#endif
+
+    if (reverse) {
+       NCURSES_COLOR_T xx = fg;
+       fg = bg;
+       bg = xx;
+    }
 
-           if (fg == C_MASK || bg == C_MASK)
-           {
-               if (set_original_colors() != TRUE)
-               {
-                       if (fg == C_MASK)
-                               set_foreground_color(COLOR_WHITE, outc);
-                       if (bg == C_MASK)
-                               set_background_color(COLOR_BLACK, outc);
-               }
-           }
-           if (fg != C_MASK)
-           {
-               set_foreground_color(fg, outc);
-           }
-           if (bg != C_MASK)
-           {
-               set_background_color(bg, outc);
-           }
-       }
+    T(("setting colors: pair = %d, fg = %d, bg = %d", pair, fg, bg));
+
+    if (fg != C_MASK) {
+       set_foreground_color(fg, outc);
+    }
+    if (bg != C_MASK) {
+       set_background_color(bg, outc);
     }
 }
index a2dfbd218f740293eb22b0ed82383ceb6a1eb63c..7c090244f29122e18e016e3dbd7e48ac16db4b3d 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
  ****************************************************************************/
 
 /****************************************************************************
- *  Author: Thomas E. Dickey <dickey@clark.net> 1997                        *
+ *  Author: Thomas E. Dickey <dickey@clark.net> 1997,1999                   *
  ****************************************************************************/
+
 #include <curses.priv.h>
 #include <term.h>
 
-MODULE_ID("$Id: lib_dft_fgbg.c,v 1.3 1998/02/11 12:13:54 tom Exp $")
+MODULE_ID("$Id: lib_dft_fgbg.c,v 1.13 2000/07/07 16:50:27 tom Exp $")
 
 /*
  * Modify the behavior of color-pair 0 so that the library doesn't assume that
- * it is black on white.  This is an extension to XSI curses.
- *
- * Invoke this function after 'start_color()'.
+ * it is white on black.  This is an extension to XSI curses.
  */
 int
 use_default_colors(void)
 {
-       T((T_CALLED("use_default_colors()")));
+    T((T_CALLED("use_default_colors()")));
+    returnCode(assume_default_colors(C_MASK, C_MASK));
+}
 
-       if (!SP->_coloron)
-               returnCode(ERR);
+/*
+ * Modify the behavior of color-pair 0 so that the library assumes that it
+ * is something specific, possibly not white on black.
+ */
+int
+assume_default_colors(int fg, int bg)
+{
+    T((T_CALLED("assume_default_colors(%d,%d)"), fg, bg));
 
-       if (!orig_pair && !orig_colors)
-               returnCode(ERR);
+    if (!orig_pair && !orig_colors)
+       returnCode(ERR);
 
-       if (initialize_pair)    /* don't know how to handle this */
-               returnCode(ERR);
+    if (initialize_pair)       /* don't know how to handle this */
+       returnCode(ERR);
 
-       SP->_default_color = TRUE;
-       SP->_color_pairs[0] = PAIR_OF(C_MASK, C_MASK);
-       returnCode(OK);
+    SP->_default_color = (fg < 0 || fg == C_MASK) || (bg < 0 || bg == C_MASK);
+    SP->_has_sgr_39_49 = (tigetflag("AX") == TRUE);
+    SP->_default_fg = (fg >= 0) ? (fg & C_MASK) : C_MASK;
+    SP->_default_bg = (bg >= 0) ? (bg & C_MASK) : C_MASK;
+    if (SP->_color_pairs != 0)
+       init_pair(0, fg, bg);
+    returnCode(OK);
 }
index 324e7a28274150b3de24b3ac6e108fd48e63b644..28f0e5f9f425d0d889d7b030cc29ab6e6ee42833 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            *
 extern int malloc_errfd;       /* FIXME */
 #endif
 
-MODULE_ID("$Id: lib_freeall.c,v 1.15 1999/10/22 21:40:10 tom Exp $")
+MODULE_ID("$Id: lib_freeall.c,v 1.16 1999/11/28 01:34:11 tom Exp $")
 
-static void free_slk(SLK *p)
+static void
+free_slk(SLK *p)
 {
-       if (p != 0) {
-               FreeIfNeeded(p->ent);
-               FreeIfNeeded(p->buffer);
-               free(p);
-       }
+    if (p != 0) {
+       FreeIfNeeded(p->ent);
+       FreeIfNeeded(p->buffer);
+       free(p);
+    }
 }
 
-static void free_tries(struct tries *p)
+static void
+free_tries(struct tries *p)
 {
-       struct tries *q;
-
-       while (p != 0) {
-               q = p->sibling;
-               if (p->child != 0)
-                       free_tries(p->child);
-               free(p);
-               p = q;
-       }
+    struct tries *q;
+
+    while (p != 0) {
+       q = p->sibling;
+       if (p->child != 0)
+           free_tries(p->child);
+       free(p);
+       p = q;
+    }
 }
 
 /*
  * Free all ncurses data.  This is used for testing only (there's no practical
  * use for it as an extension).
  */
-void _nc_freeall(void)
+void
+_nc_freeall(void)
 {
-       WINDOWLIST *p, *q;
+    WINDOWLIST *p, *q;
 
 #if NO_LEAKS
-       _nc_free_tparm();
+    _nc_free_tparm();
 #endif
+    if (SP != 0) {
        while (_nc_windows != 0) {
-               /* Delete only windows that're not a parent */
-               for (p = _nc_windows; p != 0; p = p->next) {
-                       bool found = FALSE;
-
-                       for (q = _nc_windows; q != 0; q = q->next) {
-                               if ((p != q)
-                                && (q->win->_flags & _SUBWIN)
-                                && (p->win == q->win->_parent)) {
-                                       found = TRUE;
-                                       break;
-                               }
-                       }
-
-                       if (!found) {
-                               delwin(p->win);
-                               break;
-                       }
+           /* Delete only windows that're not a parent */
+           for (p = _nc_windows; p != 0; p = p->next) {
+               bool found = FALSE;
+
+               for (q = _nc_windows; q != 0; q = q->next) {
+                   if ((p != q)
+                       && (q->win->_flags & _SUBWIN)
+                       && (p->win == q->win->_parent)) {
+                       found = TRUE;
+                       break;
+                   }
                }
+
+               if (!found) {
+                   delwin(p->win);
+                   break;
+               }
+           }
        }
 
-       if (SP != 0) {
-               free_tries (SP->_keytry);
-               free_tries (SP->_key_ok);
-               free_slk(SP->_slk);
-               FreeIfNeeded(SP->_color_pairs);
-               FreeIfNeeded(SP->_color_table);
+       free_tries(SP->_keytry);
+       free_tries(SP->_key_ok);
+       free_slk(SP->_slk);
+       FreeIfNeeded(SP->_color_pairs);
+       FreeIfNeeded(SP->_color_table);
 #if !BROKEN_LINKER
-               FreeAndNull(SP);
+       FreeAndNull(SP);
 #endif
-       }
-
-       if (cur_term != 0) {
-               _nc_free_termtype(&(cur_term->type));
-               free(cur_term);
-       }
+    }
 
+    if (cur_term != 0) {
+       _nc_free_termtype(&(cur_term->type));
+       free(cur_term);
+    }
 #ifdef TRACE
-       (void) _nc_trace_buf(-1, 0);
+    (void) _nc_trace_buf(-1, 0);
 #endif
 #if HAVE_LIBDBMALLOC
-       malloc_dump(malloc_errfd);
+    malloc_dump(malloc_errfd);
 #elif HAVE_LIBDMALLOC
 #elif HAVE_PURIFY
-       purify_all_inuse();
+    purify_all_inuse();
 #endif
 }
 
-void _nc_free_and_exit(int code)
+void
+_nc_free_and_exit(int code)
 {
-       _nc_freeall();
-       exit(code);
+    _nc_freeall();
+    exit(code);
 }
+
 #else
-void _nc_freeall(void) { }
+void
+_nc_freeall(void)
+{
+}
 #endif
index b740885b81664c3b2d276e0939ebdf87e06f04d9..c5a5dc3ea588858bab4344acc197358f306fb18c 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_getch.c,v 1.43 1999/03/08 02:35:10 tom Exp $")
+MODULE_ID("$Id: lib_getch.c,v 1.48 2000/07/08 11:21:51 tom Exp $")
 
 #include <fifo_defs.h>
 
-int ESCDELAY = 1000;   /* max interval betw. chars in funkeys, in millisecs */
+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;
+    fd_set fdset;
+    int nums = SP->_ifd + 1;
+
+    for (;;) {
+       FD_ZERO(&fdset);
+       FD_SET(SP->_ifd, &fdset);
+       if (SP->_checkfd >= 0) {
+           FD_SET(SP->_checkfd, &fdset);
+           if (SP->_checkfd >= nums)
+               nums = SP->_checkfd + 1;
        }
+       if (SP->_mouse_fd >= 0) {
+           FD_SET(SP->_mouse_fd, &fdset);
+           if (SP->_mouse_fd >= nums)
+               nums = SP->_mouse_fd + 1;
+       }
+       if (select(nums, &fdset, NULL, NULL, NULL) >= 0) {
+           int n;
+
+           if (SP->_mouse_fd >= 0
+               && 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 */
+#endif /* USE_EMX_MOUSE */
 
-static inline int fifo_peek(void)
+static inline int
+fifo_peek(void)
 {
-       int ch = SP->_fifo[peek];
-       T(("peeking at %d", peek));
+    int ch = SP->_fifo[peek];
+    T(("peeking at %d", peek));
 
-       p_inc();
-       return ch;
+    p_inc();
+    return ch;
 }
 
-
-static inline int fifo_pull(void)
+static inline int
+fifo_pull(void)
 {
-int ch;
-       ch = SP->_fifo[head];
-       T(("pulling %d from %d", ch, head));
+    int ch;
+    ch = SP->_fifo[head];
+    T(("pulling %d from %d", ch, head));
 
-       if (peek == head)
-       {
-           h_inc();
-           peek = head;
-       }
-       else
-           h_inc();
+    if (peek == head) {
+       h_inc();
+       peek = head;
+    } else
+       h_inc();
 
 #ifdef TRACE
-       if (_nc_tracing & TRACE_IEVENT) _nc_fifo_dump();
+    if (_nc_tracing & TRACE_IEVENT)
+       _nc_fifo_dump();
 #endif
-       return ch;
+    return ch;
 }
 
-static inline int fifo_push(void)
+static inline int
+fifo_push(void)
 {
-int n;
-unsigned int ch;
+    int n;
+    unsigned int ch;
 
-       if (tail == -1) return ERR;
+    if (tail == -1)
+       return ERR;
 
 #ifdef HIDE_EINTR
-again:
-       errno = 0;
+  again:
+    errno = 0;
 #endif
 
 #if USE_GPM_SUPPORT
-       if ((SP->_mouse_fd >= 0)
-        && (_nc_timed_wait(3, -1, (int *)0) & 2))
-       {
-               SP->_mouse_event(SP);
-               ch = KEY_MOUSE;
-               n = 1;
-       } else
+    if ((SP->_mouse_fd >= 0)
+       && (_nc_timed_wait(3, -1, (int *) 0) & 2)) {
+       SP->_mouse_event(SP);
+       ch = KEY_MOUSE;
+       n = 1;
+    } else
 #endif
-       {
-               unsigned char c2=0;
+    {
+       unsigned char c2 = 0;
 #ifdef USE_EMX_MOUSE
-               n = kbd_mouse_read(&c2);
+       n = kbd_mouse_read(&c2);
 #else
-               n = read(SP->_ifd, &c2, 1);
+       n = read(SP->_ifd, &c2, 1);
 #endif
-               ch = c2 & 0xff;
-       }
+       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.
-        * 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.
-        */
-       if (n <= 0 && errno == EINTR)
-               goto again;
+    /*
+     * Under System V curses with non-restarting signals, getch() returns
+     * 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.
+     */
+    if (n <= 0 && errno == EINTR)
+       goto again;
 #endif
 
-       if ((n == -1) || (n == 0))
-       {
-           T(("read(%d,&ch,1)=%d, errno=%d", SP->_ifd, n, errno));
-           return ERR;
-       }
-       T(("read %d characters", n));
-
-       SP->_fifo[tail] = ch;
-       SP->_fifohold = 0;
-       if (head == -1)
-           head = peek = tail;
-       t_inc();
-       T(("pushed %#x at %d", ch, tail));
+    if ((n == -1) || (n == 0)) {
+       T(("read(%d,&ch,1)=%d, errno=%d", SP->_ifd, n, errno));
+       ch = ERR;
+    }
+    T(("read %d characters", n));
+
+    SP->_fifo[tail] = ch;
+    SP->_fifohold = 0;
+    if (head == -1)
+       head = peek = tail;
+    t_inc();
+    T(("pushed %#x at %d", ch, tail));
 #ifdef TRACE
-       if (_nc_tracing & TRACE_IEVENT) _nc_fifo_dump();
+    if (_nc_tracing & TRACE_IEVENT)
+       _nc_fifo_dump();
 #endif
-       return ch;
+    return ch;
 }
 
-static inline void fifo_clear(void)
+static inline void
+fifo_clear(void)
 {
-int i;
-       for (i = 0; i < FIFO_SIZE; i++)
-               SP->_fifo[i] = 0;
-       head = -1; tail = peek = 0;
+    int i;
+    for (i = 0; i < FIFO_SIZE; i++)
+       SP->_fifo[i] = 0;
+    head = -1;
+    tail = peek = 0;
 }
 
 static int kgetch(WINDOW *);
@@ -188,147 +199,158 @@ static int kgetch(WINDOW *);
 int
 wgetch(WINDOW *win)
 {
-int    ch;
+    int ch;
 
-       T((T_CALLED("wgetch(%p)"), win));
+    T((T_CALLED("wgetch(%p)"), win));
 
-       if (!win)
-         returnCode(ERR);
+    if (!win)
+       returnCode(ERR);
 
-       if (cooked_key_in_fifo())
-       {
-               if (wgetch_should_refresh(win))
-                       wrefresh(win);
+    if (cooked_key_in_fifo()) {
+       if (wgetch_should_refresh(win))
+           wrefresh(win);
 
-               ch = fifo_pull();
-               T(("wgetch returning (pre-cooked): %#x = %s", ch, _trace_key(ch));)
-               returnCode(ch);
-       }
+       ch = fifo_pull();
+       T(("wgetch returning (pre-cooked): %#x = %s", ch, _trace_key(ch)));
+       returnCode(ch);
+    }
 
-       /*
-        * Handle cooked mode.  Grab a string from the screen,
-        * stuff its contents in the FIFO queue, and pop off
-        * the first character to return it.
-        */
-       if (head == -1 && !SP->_raw && !SP->_cbreak)
-       {
-               char    buf[MAXCOLUMNS], *sp;
+    /*
+     * Handle cooked mode.  Grab a string from the screen,
+     * stuff its contents in the FIFO queue, and pop off
+     * the first character to return it.
+     */
+    if (head == -1 && !SP->_raw && !SP->_cbreak) {
+       char buf[MAXCOLUMNS], *sp;
 
-               T(("filling queue in cooked mode"));
+       T(("filling queue in cooked mode"));
 
-               wgetnstr(win, buf, MAXCOLUMNS);
+       wgetnstr(win, buf, MAXCOLUMNS);
 
-               /* ungetch in reverse order */
-               ungetch('\n');
-               for (sp = buf+strlen(buf); sp>buf; sp--)
-                       ungetch(sp[-1]);
+       /* ungetch in reverse order */
+       ungetch('\n');
+       for (sp = buf + strlen(buf); sp > buf; sp--)
+           ungetch(sp[-1]);
 
-               returnCode(fifo_pull());
-       }
+       returnCode(fifo_pull());
+    }
 
-       if (wgetch_should_refresh(win))
-               wrefresh(win);
+    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)
-                   delay = (SP->_cbreak - 1) * 100;
-               else
-                   delay = win->_delay;
+       T(("timed delay in wgetch()"));
+       if (SP->_cbreak > 1)
+           delay = (SP->_cbreak - 1) * 100;
+       else
+           delay = win->_delay;
 
-               T(("delay is %d milliseconds", delay));
+       T(("delay is %d milliseconds", delay));
 
-               if (head == -1) /* fifo is empty */
-                       if (!_nc_timed_wait(3, delay, (int *)0))
-                               returnCode(ERR);
-               /* else go on to read data available */
-       }
+       if (head == -1)         /* fifo is empty */
+           if (!_nc_timed_wait(3, delay, (int *) 0))
+               returnCode(ERR);
+       /* else go on to read data available */
+    }
 
-       if (win->_use_keypad) 
-        {
-               /*
-                * This is tricky.  We only want to get special-key
-                * events one at a time.  But we want to accumulate
-                * mouse events until either (a) the mouse logic tells
-                * us it's picked up a complete gesture, or (b)
-                * there's a detectable time lapse after one.
-                *
-                * Note: if the mouse code starts failing to compose
-                * press/release events into clicks, you should probably
-                * increase the wait with mouseinterval().
-                */
-               int runcount = 0;
-
-               do {
-                       ch = kgetch(win);
-                       if (ch == KEY_MOUSE)
-                       {
-                               ++runcount;
-                               if (SP->_mouse_inline(SP))
-                                   break;
-                       }
-               } while
-                   (ch == KEY_MOUSE
-                    && (_nc_timed_wait(3, SP->_maxclick, (int *)0)
-                        || !SP->_mouse_parse(runcount)));
-               if (runcount > 0 && ch != KEY_MOUSE)
-               {
-                   /* mouse event sequence ended by keystroke, push it */
-                   ungetch(ch);
-                   ch = KEY_MOUSE;
-               }
-       } else {
-               if (head == -1)
-                       fifo_push();
-               ch = fifo_pull();
+    if (win->_use_keypad) {
+       /*
+        * This is tricky.  We only want to get special-key
+        * events one at a time.  But we want to accumulate
+        * mouse events until either (a) the mouse logic tells
+        * us it's picked up a complete gesture, or (b)
+        * there's a detectable time lapse after one.
+        *
+        * Note: if the mouse code starts failing to compose
+        * press/release events into clicks, you should probably
+        * increase the wait with mouseinterval().
+        */
+       int runcount = 0;
+
+       do {
+           ch = kgetch(win);
+           if (ch == KEY_MOUSE) {
+               ++runcount;
+               if (SP->_mouse_inline(SP))
+                   break;
+           }
+       } while
+           (ch == KEY_MOUSE
+           && (_nc_timed_wait(3, SP->_maxclick, (int *) 0)
+               || !SP->_mouse_parse(runcount)));
+       if (runcount > 0 && ch != KEY_MOUSE) {
+           /* mouse event sequence ended by keystroke, push it */
+           ungetch(ch);
+           ch = KEY_MOUSE;
        }
+    } else {
+       if (head == -1)
+           fifo_push();
+       ch = fifo_pull();
+    }
 
-       if (ch == ERR)
-       {
+    if (ch == ERR) {
 #if USE_SIZECHANGE
-           if(SP->_sig_winch)
-           {
-               _nc_update_screensize();
-               /* resizeterm can push KEY_RESIZE */
-               if(cooked_key_in_fifo())
-               {
-                   ch = fifo_pull();
-                   T(("wgetch returning (pre-cooked): %#x = %s", ch, _trace_key(ch));)
-                   returnCode(ch);
-               }
+       if (SP->_sig_winch) {
+           _nc_update_screensize();
+           /* resizeterm can push KEY_RESIZE */
+           if (cooked_key_in_fifo()) {
+               ch = fifo_pull();
+               T(("wgetch returning (pre-cooked): %#x = %s", ch, _trace_key(ch)));
+               returnCode(ch);
            }
-#endif
-           T(("wgetch returning ERR"));
-           returnCode(ERR);
        }
-
-       /*
-        * Simulate ICRNL mode
-        */
-       if ((ch == '\r') && SP->_nl)
-               ch = '\n';
-
-       /* Strip 8th-bit if so desired.  We do this only for characters that
-        * are in the range 128-255, to provide compatibility with terminals
-        * that display only 7-bit characters.  Note that 'ch' may be a
-        * function key at this point, so we mustn't strip _those_.
-        */
-       if ((ch < KEY_MIN) && (ch & 0x80))
-               if (!SP->_use_meta)
-                       ch &= 0x7f;
-
-       if (SP->_echo && ch < KEY_MIN && !(win->_flags & _ISPAD))
-               wechochar(win, (chtype)ch);
-
-       T(("wgetch returning : %#x = %s", ch, _trace_key(ch)));
-
-       returnCode(ch);
+#endif
+       T(("wgetch returning ERR"));
+       returnCode(ERR);
+    }
+
+    /*
+     * If echo() is in effect, display the printable version of the
+     * key on the screen.  Carriage return and backspace are treated
+     * specially by Solaris curses:
+     *
+     * If carriage return is defined as a function key in the
+     * terminfo, e.g., kent, then Solaris may return either ^J (or ^M
+     * if nonl() is set) or KEY_ENTER depending on the echo() mode. 
+     * We echo before translating carriage return based on nonl(),
+     * since the visual result simply moves the cursor to column 0.
+     *
+     * Backspace is a different matter.  Solaris curses does not
+     * translate it to KEY_BACKSPACE if kbs=^H.  This does not depend
+     * on the stty modes, but appears to be a hardcoded special case.
+     * This is a difference from ncurses, which uses the terminfo entry.
+     * However, we provide the same visual result as Solaris, moving the
+     * cursor to the left.
+     */
+    if (SP->_echo && !(win->_flags & _ISPAD)) {
+       chtype backup = (ch == KEY_BACKSPACE) ? '\b' : ch;
+       if (backup < KEY_MIN)
+           wechochar(win, backup);
+    }
+
+    /*
+     * Simulate ICRNL mode
+     */
+    if ((ch == '\r') && SP->_nl)
+       ch = '\n';
+
+    /* Strip 8th-bit if so desired.  We do this only for characters that
+     * are in the range 128-255, to provide compatibility with terminals
+     * that display only 7-bit characters.  Note that 'ch' may be a
+     * function key at this point, so we mustn't strip _those_.
+     */
+    if ((ch < KEY_MIN) && (ch & 0x80))
+       if (!SP->_use_meta)
+           ch &= 0x7f;
+
+    T(("wgetch returning : %#x = %s", ch, _trace_key(ch)));
+
+    returnCode(ch);
 }
 
-
 /*
 **      int
 **      kgetch()
@@ -347,68 +369,63 @@ int       ch;
 static int
 kgetch(WINDOW *win GCC_UNUSED)
 {
-struct tries  *ptr;
-int ch = 0;
-int timeleft = ESCDELAY;
-
-       TR(TRACE_IEVENT, ("kgetch(%p) called", win));
-
-       ptr = SP->_keytry;
-
-       for(;;)
-       {
-               if (!raw_key_in_fifo())
-               {
-                   if(fifo_push() == ERR)
-                   {
-                       peek = head;    /* the keys stay uninterpreted */
-                       return ERR;
-                   }
-               }
-               ch = fifo_peek();
-               if (ch >= KEY_MIN)
-               {
-                   peek = head;
-                   /* assume the key is the last in fifo */
-                   t_dec(); /* remove the key */
-                   return ch;
-               }
-
-               TR(TRACE_IEVENT, ("ch: %s", _trace_key((unsigned char)ch)));
-               while ((ptr != NULL) && (ptr->ch != (unsigned char)ch))
-                       ptr = ptr->sibling;
+    struct tries *ptr;
+    int ch = 0;
+    int timeleft = ESCDELAY;
+
+    TR(TRACE_IEVENT, ("kgetch(%p) called", win));
+
+    ptr = SP->_keytry;
+
+    for (;;) {
+       if (!raw_key_in_fifo()) {
+           if (fifo_push() == ERR) {
+               peek = head;    /* the keys stay uninterpreted */
+               return ERR;
+           }
+       }
+       ch = fifo_peek();
+       if (ch >= KEY_MIN) {
+           peek = head;
+           /* assume the key is the last in fifo */
+           t_dec();            /* remove the key */
+           return ch;
+       }
+
+       TR(TRACE_IEVENT, ("ch: %s", _trace_key((unsigned char) ch)));
+       while ((ptr != NULL) && (ptr->ch != (unsigned char) ch))
+           ptr = ptr->sibling;
 #ifdef TRACE
-               if (ptr == NULL)
-                       {TR(TRACE_IEVENT, ("ptr is null"));}
-               else
-                       TR(TRACE_IEVENT, ("ptr=%p, ch=%d, value=%d",
-                                       ptr, ptr->ch, ptr->value));
+       if (ptr == NULL) {
+           TR(TRACE_IEVENT, ("ptr is null"));
+       } else
+           TR(TRACE_IEVENT, ("ptr=%p, ch=%d, value=%d",
+                   ptr, ptr->ch, ptr->value));
 #endif /* TRACE */
 
-               if (ptr == NULL)
-                       break;
-
-               if (ptr->value != 0) {  /* sequence terminated */
-                       TR(TRACE_IEVENT, ("end of sequence"));
-                       if (peek == tail)
-                           fifo_clear();
-                       else
-                           head = peek;
-                       return(ptr->value);
-               }
-
-               ptr = ptr->child;
-
-               if (!raw_key_in_fifo())
-               {
-                       TR(TRACE_IEVENT, ("waiting for rest of sequence"));
-                       if (!_nc_timed_wait(3, timeleft, &timeleft)) {
-                               TR(TRACE_IEVENT, ("ran out of time"));
-                               break;
-                       }
-               }
+       if (ptr == NULL)
+           break;
+
+       if (ptr->value != 0) {  /* sequence terminated */
+           TR(TRACE_IEVENT, ("end of sequence"));
+           if (peek == tail)
+               fifo_clear();
+           else
+               head = peek;
+           return (ptr->value);
        }
-       ch = fifo_pull();
-       peek = head;
-       return ch;
+
+       ptr = ptr->child;
+
+       if (!raw_key_in_fifo()) {
+           TR(TRACE_IEVENT, ("waiting for rest of sequence"));
+           if (!_nc_timed_wait(3, timeleft, &timeleft)) {
+               TR(TRACE_IEVENT, ("ran out of time"));
+               break;
+           }
+       }
+    }
+    ch = fifo_pull();
+    peek = head;
+    return ch;
 }
index 3b0a602eeee936cffd9020e9f8f14898a8671ce0..fd32d35a38e770ff662e6a33a9a9a54a78dcdbc0 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,8 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
-
 /*
 **     lib_hline.c
 **
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_hline.c,v 1.4 1998/06/28 00:11:01 tom Exp $")
+MODULE_ID("$Id: lib_hline.c,v 1.6 2000/07/04 14:08:09 Philippe.Blain Exp $")
 
-int whline(WINDOW *win, chtype ch, int n)
+int
+whline(WINDOW *win, chtype ch, int n)
 {
-int   code = ERR;
-short start;
-short end;
+    int code = ERR;
+    NCURSES_SIZE_T start;
+    NCURSES_SIZE_T end;
 
-       T((T_CALLED("whline(%p,%s,%d)"), win, _tracechtype(ch), n));
+    T((T_CALLED("whline(%p,%s,%d)"), win, _tracechtype(ch), n));
 
-       if (win) {
-               struct ldat *line = &(win->_line[win->_cury]);
+    if (win) {
+       struct ldat *line = &(win->_line[win->_cury]);
 
-               start = win->_curx;
-               end   = start + n - 1;
-               if (end > win->_maxx)
-                       end   = win->_maxx;
+       start = win->_curx;
+       end = start + n - 1;
+       if (end > win->_maxx)
+           end = win->_maxx;
 
-               CHANGED_RANGE(line, start, end);
+       CHANGED_RANGE(line, start, end);
 
-               if (ch == 0)
-                       ch = ACS_HLINE;
-               ch = _nc_render(win, ch);
+       if (ch == 0)
+           ch = ACS_HLINE;
+       ch = _nc_render(win, ch);
 
-               while ( end >= start) {
-                       line->text[end] = ch;
-                       end--;
-               }
-               code = OK;
+       while (end >= start) {
+           line->text[end] = ch;
+           end--;
        }
-       returnCode(code);
+
+       _nc_synchook(win);
+       code = OK;
+    }
+    returnCode(code);
 }
index cba147318b8efdc34893ebed6ad8c98626fcafba..a2275f9457b60d279f8d95d6ed98952c06beccd0 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,8 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
-
 /*
 **     lib_insstr.c
 **
 #include <curses.priv.h>
 #include <ctype.h>
 
-MODULE_ID("$Id: lib_insstr.c,v 1.13 1999/03/14 00:27:21 tom Exp $")
+MODULE_ID("$Id: lib_insstr.c,v 1.14 2000/04/29 21:16:41 tom Exp $")
 
-int winsnstr(WINDOW *win, const char *s, int n)
+int
+winsnstr(WINDOW *win, const char *s, int n)
 {
-int     code = ERR;
-short  oy;
-short  ox ;
-const unsigned char *str = (const unsigned char *)s;
-const unsigned char *cp;
+    int code = ERR;
+    NCURSES_SIZE_T oy;
+    NCURSES_SIZE_T ox;
+    const unsigned char *str = (const unsigned char *) s;
+    const unsigned char *cp;
 
-        T((T_CALLED("winsnstr(%p,%s,%d)"), win, _nc_visbuf(s), n));
+    T((T_CALLED("winsnstr(%p,%s,%d)"), win, _nc_visbuf(s), n));
 
-       if (win && str) {
-         oy = win->_cury; ox = win->_curx;
-         for (cp = str; *cp && (n <= 0 || (cp - str) < n); cp++) {
+    if (win && str) {
+       oy = win->_cury;
+       ox = win->_curx;
+       for (cp = str; *cp && (n <= 0 || (cp - str) < n); cp++) {
            if (*cp == '\n' || *cp == '\r' || *cp == '\t' || *cp == '\b')
-             _nc_waddch_nosync(win, (chtype)(*cp));
+               _nc_waddch_nosync(win, (chtype) (*cp));
            else if (is7bits(*cp) && iscntrl(*cp)) {
-             winsch(win, ' ' + (chtype)(*cp));
-             winsch(win, '^');
-             win->_curx += 2;
+               winsch(win, ' ' + (chtype) (*cp));
+               winsch(win, '^');
+               win->_curx += 2;
            } else {
-             winsch(win, (chtype)(*cp));
-             win->_curx++;
+               winsch(win, (chtype) (*cp));
+               win->_curx++;
            }
            if (win->_curx > win->_maxx)
-             win->_curx = win->_maxx;
-         }
-         
-         win->_curx = ox;
-         win->_cury = oy;
-         _nc_synchook(win);
-         code = OK;
+               win->_curx = win->_maxx;
        }
-       returnCode(code);
+
+       win->_curx = ox;
+       win->_cury = oy;
+       _nc_synchook(win);
+       code = OK;
+    }
+    returnCode(code);
 }
index d34d48342e4febc339c67c6958a497b70bc5deec..59db16d1aea640570feb10af601ed6704d06c2df 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc.                   *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -64,8 +64,7 @@
  */
 
 #ifdef __EMX__
-#  include "io.h"
-#  include "fcntl.h"
+#  include <io.h>
 #  define  INCL_DOS
 #  define  INCL_VIO
 #  define  INCL_KBD
 #endif
 #endif
 
-MODULE_ID("$Id: lib_mouse.c,v 1.45 1999/10/22 21:39:02 tom Exp $")
+MODULE_ID("$Id: lib_mouse.c,v 1.52 2000/06/29 23:02:26 tom Exp $")
 
 #define MY_TRACE TRACE_ICALLS|TRACE_IEVENT
 
 #define INVALID_EVENT  -1
 
-static int             mousetype;
+static int mousetype;
 #define M_XTERM                -1      /* use xterm's mouse tracking? */
 #define M_NONE         0       /* no mouse device */
 #define M_GPM          1       /* use GPM */
@@ -104,7 +103,7 @@ static Gpm_Connect gpm_connect;
 #endif
 #endif
 
-static mmask_t eventmask;              /* current event mask */
+static mmask_t eventmask;      /* current event mask */
 
 static bool _nc_mouse_parse(int);
 static void _nc_mouse_resume(SCREEN *);
@@ -116,22 +115,23 @@ static void _nc_mouse_wrap(SCREEN *);
  * wgetch() may refer to the size and call _nc_mouse_parse() before circular
  * list overflow.
  */
-static MEVENT  events[EV_MAX];         /* hold the last mouse event seen */
-static MEVENT  *eventp = events;       /* next free slot in event queue */
+static MEVENT events[EV_MAX];  /* hold the last mouse event seen */
+static MEVENT *eventp = events;        /* next free slot in event queue */
 #define NEXT(ep)       ((ep == events + EV_MAX - 1) ? events : ep + 1)
 #define PREV(ep)       ((ep == events) ? events + EV_MAX - 1 : ep - 1)
 
 #ifdef TRACE
-static void _trace_slot(const char *tag)
+static void
+_trace_slot(const char *tag)
 {
-       MEVENT *ep;
+    MEVENT *ep;
 
-       _tracef(tag);
+    _tracef(tag);
 
-       for (ep = events; ep < events + EV_MAX; ep++)
-               _tracef("mouse event queue slot %ld = %s",
-                       (long) (ep - events),
-                       _tracemouse(ep));
+    for (ep = events; ep < events + EV_MAX; ep++)
+       _tracef("mouse event queue slot %ld = %s",
+           (long) (ep - events),
+           _tracemouse(ep));
 }
 #endif
 
@@ -143,8 +143,8 @@ static void _trace_slot(const char *tag)
 static int mouse_wfd;
 static int mouse_thread;
 static int mouse_activated;
-static char mouse_buttons[] = { 0, 1, 3, 2};
-
+static char mouse_buttons[] =
+{0, 1, 3, 2};
 
 #  define M_FD(sp) sp->_mouse_fd
 
@@ -174,34 +174,34 @@ mouse_server(unsigned long ignored GCC_UNUSED)
     unsigned long ignore;
 
     /* open the handle for the mouse */
-    if (MouOpen(NULL,&hmou) == 0) {
+    if (MouOpen(NULL, &hmou) == 0) {
 
-       if (MouSetEventMask(&mask,hmou) == 0
-        && MouDrawPtr(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 (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.
+                *      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);
+                   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);
+                   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);
+                   write_event(mouev.fs & MOUSE_BN3_DOWN,
+                       mouse_buttons[2], mouev.col, mouev.row);
 
              finish:
                oldstate = mouev.fs;
@@ -211,11 +211,11 @@ mouse_server(unsigned long ignored GCC_UNUSED)
        DosWrite(2, errmess, strlen(errmess), &ignore);
        MouClose(hmou);
     }
-    DosExit(EXIT_THREAD, 0L );
+    DosExit(EXIT_THREAD, 0L);
 }
 static void
 server_state(const int state)
-{ /* It would be nice to implement pointer-off and stop looping... */
+{                              /* It would be nice to implement pointer-off and stop looping... */
     mouse_activated = state;
 }
 
@@ -223,44 +223,30 @@ server_state(const int state)
 
 static int initialized;
 
-static void _nc_mouse_init(void)
-/* initialize the mouse */
+static void
+initialize_mousetype(void)
 {
-    int i;
-
-    if (initialized) {
-       return;
-    }
-    initialized = TRUE;
-
-    TR(MY_TRACE, ("_nc_mouse_init() called"));
-
-    for (i = 0; i < EV_MAX; i++)
-       events[i].id = INVALID_EVENT;
-
-    /* we know how to recognize mouse events under xterm */
-    if (key_mouse != 0
-     && getenv("DISPLAY") != 0)
-       mousetype = M_XTERM;
+    static const char *xterm_kmous = "\033[M";
 
+    /* Try gpm first, because gpm may be configured to run in xterm */
 #if USE_GPM_SUPPORT
-    else if (!strncmp(cur_term->type.term_names, "linux", 5))
-    {
-       /* GPM: initialize connection to gpm server */
-       gpm_connect.eventMask = GPM_DOWN|GPM_UP;
-       gpm_connect.defaultMask = ~(gpm_connect.eventMask|GPM_HARD);
-       gpm_connect.minMod = 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;
-       }
+    /* GPM: initialize connection to gpm server */
+    gpm_connect.eventMask = GPM_DOWN | GPM_UP;
+    gpm_connect.defaultMask = ~(gpm_connect.eventMask | GPM_HARD);
+    gpm_connect.minMod = 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;
+       return;
     }
 #endif
 
     /* OS/2 VIO */
 #ifdef USE_EMX_MOUSE
-    if (!mouse_thread && mousetype != M_XTERM && key_mouse) {
+    if (!mouse_thread
+       && strstr(cur_term->type.term_names, "xterm") == 0
+       && key_mouse) {
        int handles[2];
        if (pipe(handles) < 0) {
            perror("mouse pipe error");
@@ -283,19 +269,53 @@ static void _nc_mouse_init(void)
            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)
+           rc = DosCreateThread((unsigned long *) &mouse_thread,
+               mouse_server, 0, 0, 8192);
+           if (rc) {
                printf("mouse thread error %d=%#x", rc, rc);
-           else
+           } else {
                mousetype = M_XTERM;
+               return;
+           }
        }
     }
 #endif
 
-    T(("_nc_mouse_init() set mousetype to %d", mousetype));
+    /* we know how to recognize mouse events under "xterm" */
+    if (key_mouse != 0) {
+       if (!strcmp(key_mouse, xterm_kmous)) {
+           mousetype = M_XTERM;
+           return;
+       }
+    } else if (strstr(cur_term->type.term_names, "xterm") != 0) {
+       (void) _nc_add_to_try(&(SP->_keytry), xterm_kmous, KEY_MOUSE);
+       mousetype = M_XTERM;
+       return;
+    }
+}
+
+static void
+_nc_mouse_init(void)
+/* initialize the mouse */
+{
+    int i;
+
+    if (!initialized) {
+       initialized = TRUE;
+
+       TR(MY_TRACE, ("_nc_mouse_init() called"));
+
+       for (i = 0; i < EV_MAX; i++)
+           events[i].id = INVALID_EVENT;
+
+       initialize_mousetype();
+
+       T(("_nc_mouse_init() set mousetype to %d", mousetype));
+    }
 }
 
-static bool _nc_mouse_event(SCREEN *sp GCC_UNUSED)
+static bool
+_nc_mouse_event(SCREEN * sp GCC_UNUSED)
 /* query to see if there is a pending mouse event */
 {
 #if USE_GPM_SUPPORT
@@ -303,23 +323,27 @@ static bool _nc_mouse_event(SCREEN *sp GCC_UNUSED)
     Gpm_Event ev;
 
     if (gpm_fd >= 0
-     && _nc_timed_wait(2, 0, (int *)0)
-     && Gpm_GetEvent(&ev) == 1)
-    {
+       && (_nc_timed_wait(3, 0, (int *) 0) & 2) != 0
+       && Gpm_GetEvent(&ev) == 1) {
        eventp->id = 0;         /* there's only one mouse... */
 
        eventp->bstate = 0;
-       switch (ev.type & 0x0f)
-       {
-       case(GPM_DOWN):
-           if (ev.buttons & GPM_B_LEFT)   eventp->bstate |= BUTTON1_PRESSED;
-           if (ev.buttons & GPM_B_MIDDLE) eventp->bstate |= BUTTON2_PRESSED;
-           if (ev.buttons & GPM_B_RIGHT)  eventp->bstate |= BUTTON3_PRESSED;
+       switch (ev.type & 0x0f) {
+       case (GPM_DOWN):
+           if (ev.buttons & GPM_B_LEFT)
+               eventp->bstate |= BUTTON1_PRESSED;
+           if (ev.buttons & GPM_B_MIDDLE)
+               eventp->bstate |= BUTTON2_PRESSED;
+           if (ev.buttons & GPM_B_RIGHT)
+               eventp->bstate |= BUTTON3_PRESSED;
            break;
-       case(GPM_UP):
-           if (ev.buttons & GPM_B_LEFT)   eventp->bstate |= BUTTON1_RELEASED;
-           if (ev.buttons & GPM_B_MIDDLE) eventp->bstate |= BUTTON2_RELEASED;
-           if (ev.buttons & GPM_B_RIGHT)  eventp->bstate |= BUTTON3_RELEASED;
+       case (GPM_UP):
+           if (ev.buttons & GPM_B_LEFT)
+               eventp->bstate |= BUTTON1_RELEASED;
+           if (ev.buttons & GPM_B_MIDDLE)
+               eventp->bstate |= BUTTON2_RELEASED;
+           if (ev.buttons & GPM_B_RIGHT)
+               eventp->bstate |= BUTTON3_RELEASED;
            break;
        default:
            break;
@@ -336,20 +360,20 @@ static bool _nc_mouse_event(SCREEN *sp GCC_UNUSED)
 #endif
 
     /* xterm: never have to query, mouse events are in the keyboard stream */
-    return(FALSE);     /* no event waiting */
+    return (FALSE);            /* no event waiting */
 }
 
-static bool _nc_mouse_inline(SCREEN *sp)
+static bool
+_nc_mouse_inline(SCREEN * sp)
 /* mouse report received in the keyboard stream -- parse its info */
 {
     TR(MY_TRACE, ("_nc_mouse_inline() called"));
 
-    if (mousetype == M_XTERM)
-    {
-       unsigned char   kbuf[4];
-       MEVENT  *prev;
-       size_t  grabbed;
-       int     res;
+    if (mousetype == M_XTERM) {
+       unsigned char kbuf[4];
+       MEVENT *prev;
+       size_t grabbed;
+       int res;
 
        /* This code requires that your xterm entry contain the kmous
         * capability and that it be set to the \E[M documented in the
@@ -381,28 +405,27 @@ static bool _nc_mouse_inline(SCREEN *sp)
         * single clist item.  It always does under Linux but often
         * fails to under Solaris.
         */
-       for (grabbed = 0; grabbed < 3; grabbed += res)
-       {
+       for (grabbed = 0; grabbed < 3; grabbed += res) {
 
-       /* For VIO mouse we add extra bit 64 to disambiguate button-up. */
+           /* 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);
+           res = read(M_FD(sp) >= 0 ? M_FD(sp) : sp->_ifd, &kbuf, 3);
 #else
-            res = read(sp->_ifd, kbuf + grabbed, 3-grabbed);
+           res = read(sp->_ifd, kbuf + grabbed, 3 - grabbed);
 #endif
-            if (res == -1)
-                break;
+           if (res == -1)
+               break;
        }
        kbuf[3] = '\0';
 
-       TR(TRACE_IEVENT, ("_nc_mouse_inline sees the following xterm data: '%s'", kbuf));
+       TR(TRACE_IEVENT,
+           ("_nc_mouse_inline sees the following xterm data: '%s'", kbuf));
 
        eventp->id = 0;         /* there's only one mouse... */
 
        /* processing code goes here */
        eventp->bstate = 0;
-       switch (kbuf[0] & 0x3)
-       {
+       switch (kbuf[0] & 0x3) {
        case 0x0:
            eventp->bstate = BUTTON1_PRESSED;
 #ifdef USE_EMX_MOUSE
@@ -434,8 +457,8 @@ static bool _nc_mouse_inline(SCREEN *sp)
             */
            eventp->bstate =
                (BUTTON1_RELEASED |
-                BUTTON2_RELEASED |
-                BUTTON3_RELEASED);
+               BUTTON2_RELEASED |
+               BUTTON3_RELEASED);
            /*
             * ...however, because there are no kinds of mouse events under
             * xterm that can intervene between press and release, we can
@@ -444,11 +467,11 @@ static bool _nc_mouse_inline(SCREEN *sp)
             */
            prev = PREV(eventp);
            if (!(prev->bstate & BUTTON1_PRESSED))
-               eventp->bstate &=BUTTON1_RELEASED;
+               eventp->bstate &= ~BUTTON1_RELEASED;
            if (!(prev->bstate & BUTTON2_PRESSED))
-               eventp->bstate &=BUTTON2_RELEASED;
+               eventp->bstate &= ~BUTTON2_RELEASED;
            if (!(prev->bstate & BUTTON3_PRESSED))
-               eventp->bstate &=BUTTON3_RELEASED;
+               eventp->bstate &= ~BUTTON3_RELEASED;
            break;
        }
 
@@ -464,21 +487,23 @@ 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 %ld",
+       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);
-#if 0  /* this return would be needed for QNX's mods to lib_getch.c */
-       return(TRUE);
+#if 0                          /* this return would be needed for QNX's mods to lib_getch.c */
+       return (TRUE);
 #endif
     }
 
-    return(FALSE);
+    return (FALSE);
 }
 
-static void mouse_activate(bool on)
+static void
+mouse_activate(bool on)
 {
     if (!on && !initialized)
        return;
@@ -508,11 +533,11 @@ static void mouse_activate(bool on)
        /* Make runtime binding to cut down on object size of applications that
         * do not use the mouse (e.g., 'clear').
         */
-       SP->_mouse_event  = _nc_mouse_event;
+       SP->_mouse_event = _nc_mouse_event;
        SP->_mouse_inline = _nc_mouse_inline;
-       SP->_mouse_parse  = _nc_mouse_parse;
+       SP->_mouse_parse = _nc_mouse_parse;
        SP->_mouse_resume = _nc_mouse_resume;
-       SP->_mouse_wrap   = _nc_mouse_wrap;
+       SP->_mouse_wrap = _nc_mouse_wrap;
 
     } else {
 
@@ -540,12 +565,13 @@ static void mouse_activate(bool on)
  *
  **************************************************************************/
 
-static bool _nc_mouse_parse(int runcount)
+static bool
+_nc_mouse_parse(int runcount)
 /* parse a run of atomic mouse events into a gesture */
 {
-    MEVENT     *ep, *runp, *next, *prev = PREV(eventp);
-    int                n;
-    bool       merge;
+    MEVENT *ep, *runp, *next, *prev = PREV(eventp);
+    int n;
+    bool merge;
 
     TR(MY_TRACE, ("_nc_mouse_parse(%d) called", runcount));
 
@@ -570,14 +596,14 @@ static bool _nc_mouse_parse(int runcount)
      * button basis, as long as the device-dependent mouse code puts stuff
      * on the queue in MEVENT format.
      */
-    if (runcount == 1)
-    {
-       TR(MY_TRACE, ("_nc_mouse_parse: returning simple mouse event %s at slot %ld",
-          _tracemouse(prev),
-          (long) (prev - events)));
+    if (runcount == 1) {
+       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;
+           ? ((prev->bstate & eventmask) ? TRUE : FALSE)
+           : FALSE;
     }
 
     /* find the start of the run */
@@ -587,12 +613,11 @@ static bool _nc_mouse_parse(int runcount)
     }
 
 #ifdef TRACE
-    if (_nc_tracing & TRACE_IEVENT)
-    {
+    if (_nc_tracing & TRACE_IEVENT) {
        _trace_slot("before mouse press/release merge:");
        _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
            (long) (runp - events),
-           (long) ((eventp - events) + (EV_MAX-1)) % EV_MAX,
+           (long) ((eventp - events) + (EV_MAX - 1)) % EV_MAX,
            runcount);
     }
 #endif /* TRACE */
@@ -600,36 +625,31 @@ static bool _nc_mouse_parse(int runcount)
     /* first pass; merge press/release pairs */
     do {
        merge = FALSE;
-       for (ep = runp; next = NEXT(ep), next != eventp; ep = next)
-       {
+       for (ep = runp; next = NEXT(ep), next != eventp; ep = next) {
            if (ep->x == next->x && ep->y == next->y
-               && (ep->bstate & (BUTTON1_PRESSED|BUTTON2_PRESSED|BUTTON3_PRESSED))
+               && (ep->bstate & (BUTTON1_PRESSED | BUTTON2_PRESSED | BUTTON3_PRESSED))
                && (!(ep->bstate & BUTTON1_PRESSED)
                    == !(next->bstate & BUTTON1_RELEASED))
                && (!(ep->bstate & BUTTON2_PRESSED)
                    == !(next->bstate & BUTTON2_RELEASED))
                && (!(ep->bstate & BUTTON3_PRESSED)
                    == !(next->bstate & BUTTON3_RELEASED))
-               )
-           {
+               ) {
                if ((eventmask & BUTTON1_CLICKED)
-                       && (ep->bstate & BUTTON1_PRESSED))
-               {
-                   ep->bstate &=~ BUTTON1_PRESSED;
+                   && (ep->bstate & BUTTON1_PRESSED)) {
+                   ep->bstate &= ~BUTTON1_PRESSED;
                    ep->bstate |= BUTTON1_CLICKED;
                    merge = TRUE;
                }
                if ((eventmask & BUTTON2_CLICKED)
-                       && (ep->bstate & BUTTON2_PRESSED))
-               {
-                   ep->bstate &=~ BUTTON2_PRESSED;
+                   && (ep->bstate & BUTTON2_PRESSED)) {
+                   ep->bstate &= ~BUTTON2_PRESSED;
                    ep->bstate |= BUTTON2_CLICKED;
                    merge = TRUE;
                }
                if ((eventmask & BUTTON3_CLICKED)
-                       && (ep->bstate & BUTTON3_PRESSED))
-               {
-                   ep->bstate &=~ BUTTON3_PRESSED;
+                   && (ep->bstate & BUTTON3_PRESSED)) {
+                   ep->bstate &= ~BUTTON3_PRESSED;
                    ep->bstate |= BUTTON3_CLICKED;
                    merge = TRUE;
                }
@@ -641,12 +661,11 @@ static bool _nc_mouse_parse(int runcount)
        (merge);
 
 #ifdef TRACE
-    if (_nc_tracing & TRACE_IEVENT)
-    {
+    if (_nc_tracing & TRACE_IEVENT) {
        _trace_slot("before mouse click merge:");
        _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
            (long) (runp - events),
-           (long) ((eventp - events) + (EV_MAX-1)) % EV_MAX,
+           (long) ((eventp - events) + (EV_MAX - 1)) % EV_MAX,
            runcount);
     }
 #endif /* TRACE */
@@ -668,12 +687,11 @@ static bool _nc_mouse_parse(int runcount)
      * which would get us into portability trouble.
      */
     do {
-       MEVENT  *follower;
+       MEVENT *follower;
 
        merge = FALSE;
        for (ep = runp; next = NEXT(ep), next != eventp; ep = next)
-           if (ep->id != INVALID_EVENT)
-           {
+           if (ep->id != INVALID_EVENT) {
                if (next->id != INVALID_EVENT)
                    continue;
                follower = NEXT(next);
@@ -684,26 +702,22 @@ static bool _nc_mouse_parse(int runcount)
                if ((ep->bstate &
                        (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED))
                    && (follower->bstate &
-                       (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED)))
-               {
+                       (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED))) {
                    if ((eventmask & BUTTON1_DOUBLE_CLICKED)
-                       && (follower->bstate & BUTTON1_CLICKED))
-                   {
-                       follower->bstate &=~ BUTTON1_CLICKED;
+                       && (follower->bstate & BUTTON1_CLICKED)) {
+                       follower->bstate &= ~BUTTON1_CLICKED;
                        follower->bstate |= BUTTON1_DOUBLE_CLICKED;
                        merge = TRUE;
                    }
                    if ((eventmask & BUTTON2_DOUBLE_CLICKED)
-                       && (follower->bstate & BUTTON2_CLICKED))
-                   {
-                       follower->bstate &=~ BUTTON2_CLICKED;
+                       && (follower->bstate & BUTTON2_CLICKED)) {
+                       follower->bstate &= ~BUTTON2_CLICKED;
                        follower->bstate |= BUTTON2_DOUBLE_CLICKED;
                        merge = TRUE;
                    }
                    if ((eventmask & BUTTON3_DOUBLE_CLICKED)
-                       && (follower->bstate & BUTTON3_CLICKED))
-                   {
-                       follower->bstate &=~ BUTTON3_CLICKED;
+                       && (follower->bstate & BUTTON3_CLICKED)) {
+                       follower->bstate &= ~BUTTON3_CLICKED;
                        follower->bstate |= BUTTON3_DOUBLE_CLICKED;
                        merge = TRUE;
                    }
@@ -714,29 +728,25 @@ static bool _nc_mouse_parse(int runcount)
                /* merge double-click events forward */
                if ((ep->bstate &
                        (BUTTON1_DOUBLE_CLICKED
-                        | BUTTON2_DOUBLE_CLICKED
-                        | BUTTON3_DOUBLE_CLICKED))
+                           | BUTTON2_DOUBLE_CLICKED
+                           | BUTTON3_DOUBLE_CLICKED))
                    && (follower->bstate &
-                       (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED)))
-               {
+                       (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED))) {
                    if ((eventmask & BUTTON1_TRIPLE_CLICKED)
-                       && (follower->bstate & BUTTON1_CLICKED))
-                   {
-                       follower->bstate &=~ BUTTON1_CLICKED;
+                       && (follower->bstate & BUTTON1_CLICKED)) {
+                       follower->bstate &= ~BUTTON1_CLICKED;
                        follower->bstate |= BUTTON1_TRIPLE_CLICKED;
                        merge = TRUE;
                    }
                    if ((eventmask & BUTTON2_TRIPLE_CLICKED)
-                       && (follower->bstate & BUTTON2_CLICKED))
-                   {
-                       follower->bstate &=~ BUTTON2_CLICKED;
+                       && (follower->bstate & BUTTON2_CLICKED)) {
+                       follower->bstate &= ~BUTTON2_CLICKED;
                        follower->bstate |= BUTTON2_TRIPLE_CLICKED;
                        merge = TRUE;
                    }
                    if ((eventmask & BUTTON3_TRIPLE_CLICKED)
-                       && (follower->bstate & BUTTON3_CLICKED))
-                   {
-                       follower->bstate &=~ BUTTON3_CLICKED;
+                       && (follower->bstate & BUTTON3_CLICKED)) {
+                       follower->bstate &= ~BUTTON3_CLICKED;
                        follower->bstate |= BUTTON3_TRIPLE_CLICKED;
                        merge = TRUE;
                    }
@@ -748,12 +758,11 @@ static bool _nc_mouse_parse(int runcount)
        (merge);
 
 #ifdef TRACE
-    if (_nc_tracing & TRACE_IEVENT)
-    {
+    if (_nc_tracing & TRACE_IEVENT) {
        _trace_slot("before mouse event queue compaction:");
        _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
            (long) (runp - events),
-           (long) ((eventp - events) + (EV_MAX-1)) % EV_MAX,
+           (long) ((eventp - events) + (EV_MAX - 1)) % EV_MAX,
            runcount);
     }
 #endif /* TRACE */
@@ -766,28 +775,28 @@ static bool _nc_mouse_parse(int runcount)
        if (prev->id == INVALID_EVENT || !(prev->bstate & eventmask)) {
            eventp = prev;
        }
-
 #ifdef TRACE
-    if (_nc_tracing & TRACE_IEVENT)
-    {
+    if (_nc_tracing & TRACE_IEVENT) {
        _trace_slot("after mouse event queue compaction:");
        _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
            (long) (runp - events),
-           (long) ((eventp - events) + (EV_MAX-1)) % EV_MAX,
+           (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 %ld",
-               _tracemouse(ep),
-               (long) (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? */
-    return(PREV(eventp)->id != INVALID_EVENT);
+    return (PREV(eventp)->id != INVALID_EVENT);
 }
 
-static void _nc_mouse_wrap(SCREEN *sp GCC_UNUSED)
+static void
+_nc_mouse_wrap(SCREEN * sp GCC_UNUSED)
 /* release mouse -- called by endwin() before shellout/exit */
 {
     TR(MY_TRACE, ("_nc_mouse_wrap() called"));
@@ -799,13 +808,14 @@ static void _nc_mouse_wrap(SCREEN *sp GCC_UNUSED)
        break;
 #if USE_GPM_SUPPORT
        /* GPM: pass all mouse events to next client */
-       case M_GPM:
-           break;
+    case M_GPM:
+       break;
 #endif
     }
 }
 
-static void _nc_mouse_resume(SCREEN *sp GCC_UNUSED)
+static void
+_nc_mouse_resume(SCREEN * sp GCC_UNUSED)
 /* re-connect to mouse -- called by doupdate() after shellout */
 {
     TR(MY_TRACE, ("_nc_mouse_resume() called"));
@@ -823,22 +833,22 @@ static void _nc_mouse_resume(SCREEN *sp GCC_UNUSED)
  *
  **************************************************************************/
 
-int getmouse(MEVENT *aevent)
+int
+getmouse(MEVENT * aevent)
 /* grab a copy of the current mouse event */
 {
     T((T_CALLED("getmouse(%p)"), aevent));
 
-    if (aevent && (mousetype != M_NONE))
-    {
+    if (aevent && (mousetype != M_NONE)) {
        /* compute the current-event pointer */
-       MEVENT  *prev = PREV(eventp);
+       MEVENT *prev = PREV(eventp);
 
        /* copy the event we find there */
        *aevent = *prev;
 
        TR(TRACE_IEVENT, ("getmouse: returning event %s from slot %ld",
-           _tracemouse(prev),
-           (long) (prev - events)));
+               _tracemouse(prev),
+               (long) (prev - events)));
 
        prev->id = INVALID_EVENT;       /* so the queue slot becomes free */
        returnCode(OK);
@@ -846,7 +856,8 @@ int getmouse(MEVENT *aevent)
     returnCode(ERR);
 }
 
-int ungetmouse(MEVENT *aevent)
+int
+ungetmouse(MEVENT * aevent)
 /* enqueue a synthesized mouse event to be seen by the next wgetch() */
 {
     /* stick the given event in the next-free slot */
@@ -859,7 +870,8 @@ int ungetmouse(MEVENT *aevent)
     return ungetch(KEY_MOUSE);
 }
 
-mmask_t mousemask(mmask_t newmask, mmask_t *oldmask)
+mmask_t
+mousemask(mmask_t newmask, mmask_t * oldmask)
 /* set the mouse event mask */
 {
     mmask_t result = 0;
@@ -873,16 +885,15 @@ mmask_t mousemask(mmask_t newmask, mmask_t *oldmask)
        returnCode(0);
 
     _nc_mouse_init();
-    if ( mousetype != M_NONE )
-    {
+    if (mousetype != M_NONE) {
        eventmask = newmask &
            (BUTTON_ALT | BUTTON_CTRL | BUTTON_SHIFT
-            | BUTTON1_PRESSED | BUTTON1_RELEASED | BUTTON1_CLICKED
-            | BUTTON1_DOUBLE_CLICKED | BUTTON1_TRIPLE_CLICKED
-            | BUTTON2_PRESSED | BUTTON2_RELEASED | BUTTON2_CLICKED
-            | BUTTON2_DOUBLE_CLICKED | BUTTON2_TRIPLE_CLICKED
-            | BUTTON3_PRESSED | BUTTON3_RELEASED | BUTTON3_CLICKED
-            | BUTTON3_DOUBLE_CLICKED | BUTTON3_TRIPLE_CLICKED);
+           | BUTTON1_PRESSED | BUTTON1_RELEASED | BUTTON1_CLICKED
+           | BUTTON1_DOUBLE_CLICKED | BUTTON1_TRIPLE_CLICKED
+           | BUTTON2_PRESSED | BUTTON2_RELEASED | BUTTON2_CLICKED
+           | BUTTON2_DOUBLE_CLICKED | BUTTON2_TRIPLE_CLICKED
+           | BUTTON3_PRESSED | BUTTON3_RELEASED | BUTTON3_CLICKED
+           | BUTTON3_DOUBLE_CLICKED | BUTTON3_TRIPLE_CLICKED);
 
        mouse_activate(eventmask != 0);
 
@@ -892,21 +903,22 @@ mmask_t mousemask(mmask_t newmask, mmask_t *oldmask)
     returnCode(result);
 }
 
-bool wenclose(const WINDOW *win, int y, int x)
+bool
+wenclose(const WINDOW *win, int y, int x)
 /* check to see if given window encloses given screen location */
 {
-    if (win)
-    {
+    if (win) {
        y -= win->_yoffset;
        return ((win->_begy <= y &&
-                win->_begx <= x &&
-                (win->_begx + win->_maxx) >= x &&
-                (win->_begy + win->_maxy) >= y) ? TRUE : FALSE);
+               win->_begx <= x &&
+               (win->_begx + win->_maxx) >= x &&
+               (win->_begy + win->_maxy) >= y) ? TRUE : FALSE);
     }
     return FALSE;
 }
 
-int mouseinterval(int maxclick)
+int
+mouseinterval(int maxclick)
 /* set the maximum mouse interval within which to recognize a click */
 {
     int oldval;
@@ -919,46 +931,44 @@ int mouseinterval(int maxclick)
        oldval = DEFAULT_MAXCLICK;
     }
 
-    return(oldval);
+    return (oldval);
 }
 
 /* This may be used by other routines to ask for the existence of mouse
    support */
-int _nc_has_mouse(void) {
-  return (mousetype==M_NONE ? 0:1);
+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
+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;
+    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;
+       if (result) {
+           *pX = x;
+           *pY = y;
        }
     }
-  return(result);
+    return (result);
 }
 
 /* lib_mouse.c ends here */
index 6f5bddff33ea3bd80b8035569bc3f9b6a3f55c01..68415d6e620d953e42b84d54d154900c4fce0b3a 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*
 **     lib_move.c
 **
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_move.c,v 1.8 1998/02/11 12:13:53 tom Exp $")
+MODULE_ID("$Id: lib_move.c,v 1.9 2000/04/29 21:11:19 tom Exp $")
 
 int
 wmove(WINDOW *win, int y, int x)
 {
-       T((T_CALLED("wmove(%p,%d,%d)"), win, y, x));
-
-       if (win && 
-           x >= 0  &&  x <= win->_maxx  &&
-           y >= 0  &&  y <= win->_maxy)
-       {
-               win->_curx = (short)x;
-               win->_cury = (short)y;
-
-               win->_flags &= ~_WRAPPED;
-               win->_flags |= _HASMOVED;
-               returnCode(OK);
-       } else
-               returnCode(ERR);
+    T((T_CALLED("wmove(%p,%d,%d)"), win, y, x));
+
+    if (win &&
+       x >= 0 && x <= win->_maxx &&
+       y >= 0 && y <= win->_maxy) {
+       win->_curx = (NCURSES_SIZE_T) x;
+       win->_cury = (NCURSES_SIZE_T) y;
+
+       win->_flags &= ~_WRAPPED;
+       win->_flags |= _HASMOVED;
+       returnCode(OK);
+    } else
+       returnCode(ERR);
 }
index 9a4919bf5292480e2c61f87df1d2d19d78062036..08e35cf501822152e7bdd4c423d5a66b4ffb7586 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,8 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
-
 /*
 **     lib_newterm.c
 **
 #define _POSIX_SOURCE
 #endif
 
-#include <term.h>      /* clear_screen, cup & friends, cur_term */
+#include <term.h>              /* clear_screen, cup & friends, cur_term */
+#include <tic.h>
 
-MODULE_ID("$Id: lib_newterm.c,v 1.41 1999/07/24 20:07:48 tom Exp $")
+MODULE_ID("$Id: lib_newterm.c,v 1.46 2000/07/01 22:26:22 tom Exp $")
 
-#ifndef ONLCR          /* Allows compilation under the QNX 4.2 OS */
+#ifndef ONLCR                  /* Allows compilation under the QNX 4.2 OS */
 #define ONLCR 0
 #endif
 
@@ -62,20 +61,21 @@ MODULE_ID("$Id: lib_newterm.c,v 1.41 1999/07/24 20:07:48 tom Exp $")
  * The newterm function also initializes terminal settings, and since initscr
  * is supposed to behave as if it calls newterm, we do it here.
  */
-static inline int _nc_initscr(void)
+static inline int
+_nc_initscr(void)
 {
-       /* for extended XPG4 conformance requires cbreak() at this point */
-       /* (SVr4 curses does this anyway) */
-       cbreak();
+    /* for extended XPG4 conformance requires cbreak() at this point */
+    /* (SVr4 curses does this anyway) */
+    cbreak();
 
 #ifdef TERMIOS
-       cur_term->Nttyb.c_lflag &= ~(ECHO|ECHONL);
-       cur_term->Nttyb.c_iflag &= ~(ICRNL|INLCR|IGNCR);
-       cur_term->Nttyb.c_oflag &= ~(ONLCR);
+    cur_term->Nttyb.c_lflag &= ~(ECHO | ECHONL);
+    cur_term->Nttyb.c_iflag &= ~(ICRNL | INLCR | IGNCR);
+    cur_term->Nttyb.c_oflag &= ~(ONLCR);
 #else
-       cur_term->Nttyb.sg_flags &= ~(ECHO|CRMOD);
+    cur_term->Nttyb.sg_flags &= ~(ECHO | CRMOD);
 #endif
-       return _nc_set_tty_mode(&cur_term->Nttyb);
+    return _nc_set_tty_mode(&cur_term->Nttyb);
 }
 
 /*
@@ -86,121 +86,138 @@ static inline int _nc_initscr(void)
  */
 static int filter_mode = FALSE;
 
-void filter(void)
+void
+filter(void)
 {
     filter_mode = TRUE;
 }
 
-SCREEN * newterm(NCURSES_CONST char *name, FILE *ofp, FILE *ifp)
+SCREEN *
+newterm(NCURSES_CONST char *name, FILE * ofp, FILE * ifp)
 {
-int    errret;
-int     slk_format = _nc_slk_format;
-SCREEN* current;
+    int errret;
+    int slk_format = _nc_slk_format;
+    SCREEN *current;
 #ifdef TRACE
-int t = _nc_getenv_num("NCURSES_TRACE");
+    int t = _nc_getenv_num("NCURSES_TRACE");
 
-       if (t >= 0)
-               trace(t);
+    if (t >= 0)
+       trace(t);
 #endif
 
-       T((T_CALLED("newterm(\"%s\",%p,%p)"), name, ofp, ifp));
+    T((T_CALLED("newterm(\"%s\",%p,%p)"), name, ofp, ifp));
 
-       /* this loads the capability entry, then sets LINES and COLS */
-       if (setupterm(name, fileno(ofp), &errret) == ERR)
-               return 0;
+    /* this loads the capability entry, then sets LINES and COLS */
+    if (setupterm(name, fileno(ofp), &errret) == ERR)
+       return 0;
 
-       /* implement filter mode */
-       if (filter_mode) {
-               LINES = 1;
+    /* implement filter mode */
+    if (filter_mode) {
+       LINES = 1;
 
-               if (init_tabs != -1)
-                       TABSIZE = init_tabs;
-               else
-                       TABSIZE = 8;
+       if (VALID_NUMERIC(init_tabs))
+           TABSIZE = init_tabs;
+       else
+           TABSIZE = 8;
 
-               T(("TABSIZE = %d", TABSIZE));
+       T(("TABSIZE = %d", TABSIZE));
 
-               clear_screen = 0;
-               cursor_down = parm_down_cursor = 0;
-               cursor_address = 0;
-               cursor_up = parm_up_cursor = 0;
-               row_address = 0;
+       clear_screen = 0;
+       cursor_down = parm_down_cursor = 0;
+       cursor_address = 0;
+       cursor_up = parm_up_cursor = 0;
+       row_address = 0;
 
-               cursor_home = carriage_return;
-       }
+       cursor_home = carriage_return;
+    }
 
-       /* 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. */
-       if (num_labels <= 0 || !SLK_STDFMT(slk_format))
-           if (slk_format)
-             {
-               if (ERR==_nc_ripoffline(-SLK_LINES(slk_format),
-                                       _nc_slk_initialize))
-                 return 0;
-             }
-       /* this actually allocates the screen structure, and saves the
-        * original terminal settings.
-        */
-       current = SP;
-       _nc_set_screen(0);
-       if (_nc_setupscreen(LINES, COLS, ofp) == ERR) {
-               _nc_set_screen(current);
+    /* 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. */
+    if (num_labels <= 0 || !SLK_STDFMT(slk_format))
+       if (slk_format) {
+           if (ERR == _nc_ripoffline(-SLK_LINES(slk_format),
+                   _nc_slk_initialize))
                return 0;
        }
-
-       /* if the terminal type has real soft labels, set those up */
-       if (slk_format && num_labels > 0 && SLK_STDFMT(slk_format))
-           _nc_slk_initialize(stdscr, COLS);
-
-       SP->_ifd        = fileno(ifp);
-       SP->_checkfd    = fileno(ifp);
-       typeahead(fileno(ifp));
+    /* this actually allocates the screen structure, and saves the
+     * original terminal settings.
+     */
+    current = SP;
+    _nc_set_screen(0);
+    if (_nc_setupscreen(LINES, COLS, ofp) == ERR) {
+       _nc_set_screen(current);
+       return 0;
+    }
+
+    /* if the terminal type has real soft labels, set those up */
+    if (slk_format && num_labels > 0 && SLK_STDFMT(slk_format))
+       _nc_slk_initialize(stdscr, COLS);
+
+    SP->_ifd = fileno(ifp);
+    SP->_checkfd = fileno(ifp);
+    typeahead(fileno(ifp));
 #ifdef TERMIOS
-       SP->_use_meta   = ((cur_term->Ottyb.c_cflag & CSIZE) == CS8 &&
-                           !(cur_term->Ottyb.c_iflag & ISTRIP));
+    SP->_use_meta = ((cur_term->Ottyb.c_cflag & CSIZE) == CS8 &&
+       !(cur_term->Ottyb.c_iflag & ISTRIP));
 #else
-       SP->_use_meta   = FALSE;
+    SP->_use_meta = FALSE;
 #endif
-       SP->_endwin     = FALSE;
-
-       /* Check whether we can optimize scrolling under dumb terminals in case
-        * we do not have any of these capabilities, scrolling optimization
-        * will be useless.
-        */
-       SP->_scrolling = ((scroll_forward && scroll_reverse) ||
-                         ((parm_rindex || parm_insert_line || insert_line) &&
-                          (parm_index  || parm_delete_line || delete_line)));
-
-       baudrate();     /* sets a field in the SP structure */
-
-       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.
-        */
+    SP->_endwin = FALSE;
+
+    /* Check whether we can optimize scrolling under dumb terminals in case
+     * we do not have any of these capabilities, scrolling optimization
+     * will be useless.
+     */
+    SP->_scrolling = ((scroll_forward && scroll_reverse) ||
+       ((parm_rindex || parm_insert_line || insert_line) &&
+           (parm_index || parm_delete_line || delete_line)));
+
+    baudrate();                        /* sets a field in the SP structure */
+
+    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);
+    SP->_use_rmso = SGR0_TEST(exit_standout_mode);
+    SP->_use_rmul = SGR0_TEST(exit_underline_mode);
+
+#ifdef USE_WIDEC_SUPPORT
+    /*
+     * XFree86 xterm can be configured to support UTF-8 based on environment
+     * variable settings.
+     */
+    {
+       char *s;
+       if (((s = getenv("LC_ALL")) != 0
+               || (s = getenv("LC_CTYPE")) != 0
+               || (s = getenv("LANG")) != 0)
+           && strstr(s, "UTF-8") != 0) {
+           SP->_outch = _nc_utf8_outch;
+       }
+    }
+#endif
 
-       /* compute movement costs so we can do better move optimization */
-       _nc_mvcur_init();
+    /* compute movement costs so we can do better move optimization */
+    _nc_mvcur_init();
 
-       /* initialize terminal to a sane state */
-       _nc_screen_init();
+    /* initialize terminal to a sane state */
+    _nc_screen_init();
 
-       /* Initialize the terminal line settings. */
-       _nc_initscr();
+    /* Initialize the terminal line settings. */
+    _nc_initscr();
 
-       _nc_signal_handler(TRUE);
+    _nc_signal_handler(TRUE);
 
-       T((T_RETURN("%p"), SP));
-       return(SP);
+    T((T_RETURN("%p"), SP));
+    return (SP);
 }
index d7fc02b3216e0e0089663d0a2aa4e856f8c1f55e..ececa58a314d9aac87afa82d66a67bc9587cd358 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,8 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
-
 /*
 **     lib_newwin.c
 **
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_newwin.c,v 1.21 1999/10/03 00:42:03 tom Exp $")
+MODULE_ID("$Id: lib_newwin.c,v 1.24 2000/04/29 18:49:51 tom Exp $")
 
-void _nc_freewin(WINDOW *win)
+void
+_nc_freewin(WINDOW *win)
 {
-WINDOWLIST *p, *q;
-int    i;
-
-       if (win != 0) {
-               for (p = _nc_windows, q = 0; p != 0; q = p, p = p->next) {
-                       if (p->win == win) {
-                               if (q == 0)
-                                       _nc_windows = p->next;
-                               else
-                                       q->next = p->next;
-                               free(p);
-
-                               if (! (win->_flags & _SUBWIN)) {
-                                       for (i = 0; i <= win->_maxy && win->_line[i].text; i++)
-                                               FreeIfNeeded(win->_line[i].text);
-                               }
-                               free(win->_line);
-                               free(win);
-
-                               if (win == curscr) curscr = 0;
-                               if (win == stdscr) stdscr = 0;
-                               if (win == newscr) newscr = 0;
-
-                               T(("...deleted win=%p", win));
-                               break;
-                       }
+    WINDOWLIST *p, *q;
+    int i;
+
+    if (win != 0) {
+       for (p = _nc_windows, q = 0; p != 0; q = p, p = p->next) {
+           if (p->win == win) {
+               if (q == 0)
+                   _nc_windows = p->next;
+               else
+                   q->next = p->next;
+               free(p);
+
+               if (!(win->_flags & _SUBWIN)) {
+                   for (i = 0; i <= win->_maxy; i++)
+                       FreeIfNeeded(win->_line[i].text);
                }
+               free(win->_line);
+               free(win);
+
+               if (win == curscr)
+                   curscr = 0;
+               if (win == stdscr)
+                   stdscr = 0;
+               if (win == newscr)
+                   newscr = 0;
+
+               T(("...deleted win=%p", win));
+               break;
+           }
        }
+    }
 }
 
-WINDOW * newwin(int num_lines, int num_columns, int begy, int begx)
+WINDOW *
+newwin(int num_lines, int num_columns, int begy, int begx)
 {
-WINDOW *win;
-chtype *ptr;
-int    i;
+    WINDOW *win;
+    chtype *ptr;
+    int i;
 
-       T((T_CALLED("newwin(%d,%d,%d,%d)"), num_lines, num_columns, begy, begx));
+    T((T_CALLED("newwin(%d,%d,%d,%d)"), num_lines, num_columns, begy, begx));
 
-       if (begy < 0 || begx < 0 || num_lines < 0 || num_columns < 0)
-               returnWin(0);
+    if (begy < 0 || begx < 0 || num_lines < 0 || num_columns < 0)
+       returnWin(0);
 
-       if (num_lines == 0)
-           num_lines = SP->_lines_avail - begy;
-       if (num_columns == 0)
-           num_columns = screen_columns - begx;
+    if (num_lines == 0)
+       num_lines = SP->_lines_avail - begy;
+    if (num_columns == 0)
+       num_columns = screen_columns - begx;
 
-       if (num_columns + begx > SP->_columns || num_lines + begy > SP->_lines_avail)
-               returnWin(0);
+    if (num_columns + begx > SP->_columns || num_lines + begy > SP->_lines_avail)
+       returnWin(0);
 
-       if ((win = _nc_makenew(num_lines, num_columns, begy, begx, 0)) == 0)
-               returnWin(0);
+    if ((win = _nc_makenew(num_lines, num_columns, begy, begx, 0)) == 0)
+       returnWin(0);
 
-       for (i = 0; i < num_lines; i++) {
-           if ((win->_line[i].text = typeCalloc(chtype, (unsigned)num_columns)) == 0) {
-               _nc_freewin(win);
-               returnWin(0);
-           }
-           for (ptr = win->_line[i].text; ptr < win->_line[i].text + num_columns; )
-               *ptr++ = ' ';
+    for (i = 0; i < num_lines; i++) {
+       win->_line[i].text = typeCalloc(chtype, (unsigned) num_columns);
+       if (win->_line[i].text == 0) {
+           _nc_freewin(win);
+           returnWin(0);
        }
+       for (ptr = win->_line[i].text; ptr < win->_line[i].text +
+           num_columns;)
+           *ptr++ = ' ';
+    }
 
-       T(("newwin: returned window is %p", win));
+    T(("newwin: returned window is %p", win));
 
-       returnWin(win);
+    returnWin(win);
 }
 
-WINDOW * derwin(WINDOW *orig, int num_lines, int num_columns, int begy, int begx)
+WINDOW *
+derwin(WINDOW *orig, int num_lines, int num_columns, int begy, int begx)
 {
-WINDOW *win;
-int    i;
-int     flags = _SUBWIN;
+    WINDOW *win;
+    int i;
+    int flags = _SUBWIN;
 
-       T((T_CALLED("derwin(%p,%d,%d,%d,%d)"), orig, num_lines, num_columns, begy, begx));
+    T((T_CALLED("derwin(%p,%d,%d,%d,%d)"), orig, num_lines, num_columns,
+           begy, begx));
 
-       /*
-       ** make sure window fits inside the original one
-       */
-       if ( begy < 0 || begx < 0 || orig == 0 || num_lines < 0 || num_columns < 0)
-           returnWin(0);
-       if ( begy + num_lines > orig->_maxy + 1
-               || begx + num_columns > orig->_maxx + 1)
-           returnWin(0);
+    /*
+       ** make sure window fits inside the original one
+     */
+    if (begy < 0 || begx < 0 || orig == 0 || num_lines < 0 || num_columns < 0)
+       returnWin(0);
+    if (begy + num_lines > orig->_maxy + 1
+       || begx + num_columns > orig->_maxx + 1)
+       returnWin(0);
 
-       if (num_lines == 0)
-           num_lines = orig->_maxy + 1 - begy; 
+    if (num_lines == 0)
+       num_lines = orig->_maxy + 1 - begy;
 
-       if (num_columns == 0)
-           num_columns = orig->_maxx + 1 - begx; 
+    if (num_columns == 0)
+       num_columns = orig->_maxx + 1 - begx;
 
-       if (orig->_flags & _ISPAD)
-         flags |= _ISPAD;
+    if (orig->_flags & _ISPAD)
+       flags |= _ISPAD;
 
-       if ((win = _nc_makenew(num_lines, num_columns, orig->_begy + begy, orig->_begx + begx, flags)) == 0)
-           returnWin(0);
+    if ((win = _nc_makenew(num_lines, num_columns, orig->_begy + begy,
+               orig->_begx + begx, flags)) == 0)
+       returnWin(0);
 
-       win->_pary = begy;
-       win->_parx = begx;
-       win->_attrs = orig->_attrs;
-       win->_bkgd = orig->_bkgd;
+    win->_pary = begy;
+    win->_parx = begx;
+    win->_attrs = orig->_attrs;
+    win->_bkgd = orig->_bkgd;
 
-       for (i = 0; i < num_lines; i++)
-           win->_line[i].text = &orig->_line[begy++].text[begx];
+    for (i = 0; i < num_lines; i++)
+       win->_line[i].text = &orig->_line[begy++].text[begx];
 
-       win->_parent = orig;
+    win->_parent = orig;
 
-       T(("derwin: returned window is %p", win));
+    T(("derwin: returned window is %p", win));
 
-       returnWin(win);
+    returnWin(win);
 }
 
-
-WINDOW *subwin(WINDOW *w, int l, int c, int y, int x)
+WINDOW *
+subwin(WINDOW *w, int l, int c, int y, int x)
 {
-       T((T_CALLED("subwin(%p, %d, %d, %d, %d)"), w, l, c, y, x));
-       T(("parent has begy = %d, begx = %d", w->_begy, w->_begx));
+    T((T_CALLED("subwin(%p, %d, %d, %d, %d)"), w, l, c, y, x));
+    T(("parent has begy = %d, begx = %d", w->_begy, w->_begx));
+
+    returnWin(derwin(w, l, c, y - w->_begy, x - w->_begx));
+}
 
-       returnWin(derwin(w, l, c, y - w->_begy, x - w->_begx));
+static bool
+dimension_limit(int value)
+{
+    NCURSES_SIZE_T test = value;
+    return (test == value && value > 0);
 }
 
 WINDOW *
 _nc_makenew(int num_lines, int num_columns, int begy, int begx, int flags)
 {
-int    i;
-WINDOWLIST *wp;
-WINDOW *win;
-bool    is_pad = (flags & _ISPAD);
-
-       T(("_nc_makenew(%d,%d,%d,%d)", num_lines, num_columns, begy, begx));
-
-       if (num_lines <= 0 || num_columns <= 0)
-               return 0;
-
-       if ((wp = typeCalloc(WINDOWLIST, 1)) == 0)
-               return 0;
-
-       if ((win = typeCalloc(WINDOW, 1)) == 0)
-               return 0;
-
-       if ((win->_line = typeCalloc(struct ldat, ((unsigned)num_lines))) == 0) {
-               free(win);
-               return 0;
-       }
-
-       win->_curx       = 0;
-       win->_cury       = 0;
-       win->_maxy       = num_lines - 1;
-       win->_maxx       = num_columns - 1;
-       win->_begy       = begy;
-       win->_begx       = begx;
-       win->_yoffset    = SP->_topstolen;
-
-       win->_flags      = flags;
-       win->_attrs      = A_NORMAL;
-       win->_bkgd       = BLANK;
-
-       win->_clear      = is_pad ? FALSE : (num_lines == screen_lines  &&  num_columns == screen_columns);
-       win->_idlok      = FALSE;
-       win->_idcok      = TRUE;
-       win->_scroll     = FALSE;
-       win->_leaveok    = FALSE;
-       win->_use_keypad = FALSE;
-       win->_delay      = -1;
-       win->_immed      = FALSE;
-       win->_sync       = 0;
-       win->_parx       = -1;
-       win->_pary       = -1;
-       win->_parent     = 0;
-
-       win->_regtop     = 0;
-       win->_regbottom  = num_lines - 1;
-
-       win->_pad._pad_y      = -1;
-       win->_pad._pad_x      = -1;
-       win->_pad._pad_top    = -1;
-       win->_pad._pad_bottom = -1;
-       win->_pad._pad_left   = -1;
-       win->_pad._pad_right  = -1;
-
-       for (i = 0; i < num_lines; i++)
-       {
-           /*
-            * This used to do
-            *
-            * win->_line[i].firstchar = win->_line[i].lastchar = _NOCHANGE;
-            *
-            * which marks the whole window unchanged.  That's how
-            * SVr1 curses did it, but SVr4 curses marks the whole new
-            * window changed.
-            *
-            * With the old SVr1-like code, say you have stdscr full of
-            * characters, then create a new window with newwin(),
-            * then do a printw(win, "foo        ");, the trailing spaces are
-            * completely ignored by the following refreshes.  So, you
-            * get "foojunkjunk" on the screen instead of "foo        " as
-            * you actually intended.
-            *
-            * SVr4 doesn't do this.  Instead the spaces are actually written.
-            * So that's how we want ncurses to behave.
-            */
-           win->_line[i].firstchar = 0;
-           win->_line[i].lastchar = num_columns-1;
-
-           if_USE_SCROLL_HINTS(win->_line[i].oldindex = i);
-       }
-
-       if (!is_pad && (begx + num_columns == screen_columns)) {
-               win->_flags |= _ENDLINE;
-
-               if (begx == 0  &&  num_lines == screen_lines  &&  begy == 0)
-                       win->_flags |= _FULLWIN;
-
-               if (begy + num_lines == screen_lines)
-                       win->_flags |= _SCROLLWIN;
-       }
-
-       wp->next = _nc_windows;
-       wp->win  = win;
-       _nc_windows = wp;
-
-       T((T_CREATE("window %p"), win));
-
-       return(win);
+    int i;
+    WINDOWLIST *wp;
+    WINDOW *win;
+    bool is_pad = (flags & _ISPAD);
+
+    T(("_nc_makenew(%d,%d,%d,%d)", num_lines, num_columns, begy, begx));
+
+    if (!dimension_limit(num_lines) || !dimension_limit(num_columns))
+       return 0;
+
+    if ((wp = typeCalloc(WINDOWLIST, 1)) == 0)
+       return 0;
+
+    if ((win = typeCalloc(WINDOW, 1)) == 0)
+         return 0;
+
+    if ((win->_line = typeCalloc(struct ldat, ((unsigned) num_lines))) == 0) {
+       free(win);
+       return 0;
+    }
+
+    win->_curx = 0;
+    win->_cury = 0;
+    win->_maxy = num_lines - 1;
+    win->_maxx = num_columns - 1;
+    win->_begy = begy;
+    win->_begx = begx;
+    win->_yoffset = SP->_topstolen;
+
+    win->_flags = flags;
+    win->_attrs = A_NORMAL;
+    win->_bkgd = BLANK;
+
+    win->_clear = is_pad ? FALSE : (num_lines == screen_lines && num_columns
+       == screen_columns);
+    win->_idlok = FALSE;
+    win->_idcok = TRUE;
+    win->_scroll = FALSE;
+    win->_leaveok = FALSE;
+    win->_use_keypad = FALSE;
+    win->_delay = -1;
+    win->_immed = FALSE;
+    win->_sync = 0;
+    win->_parx = -1;
+    win->_pary = -1;
+    win->_parent = 0;
+
+    win->_regtop = 0;
+    win->_regbottom = num_lines - 1;
+
+    win->_pad._pad_y = -1;
+    win->_pad._pad_x = -1;
+    win->_pad._pad_top = -1;
+    win->_pad._pad_bottom = -1;
+    win->_pad._pad_left = -1;
+    win->_pad._pad_right = -1;
+
+    for (i = 0; i < num_lines; i++) {
+       /*
+        * This used to do
+        *
+        * win->_line[i].firstchar = win->_line[i].lastchar = _NOCHANGE;
+        *
+        * which marks the whole window unchanged.  That's how
+        * SVr1 curses did it, but SVr4 curses marks the whole new
+        * window changed.
+        *
+        * With the old SVr1-like code, say you have stdscr full of
+        * characters, then create a new window with newwin(),
+        * then do a printw(win, "foo        ");, the trailing spaces are
+        * completely ignored by the following refreshes.  So, you
+        * get "foojunkjunk" on the screen instead of "foo        " as
+        * you actually intended.
+        *
+        * SVr4 doesn't do this.  Instead the spaces are actually written.
+        * So that's how we want ncurses to behave.
+        */
+       win->_line[i].firstchar = 0;
+       win->_line[i].lastchar = num_columns - 1;
+
+       if_USE_SCROLL_HINTS(win->_line[i].oldindex = i);
+    }
+
+    if (!is_pad && (begx + num_columns == screen_columns)) {
+       win->_flags |= _ENDLINE;
+
+       if (begx == 0 && num_lines == screen_lines && begy == 0)
+           win->_flags |= _FULLWIN;
+
+       if (begy + num_lines == screen_lines)
+           win->_flags |= _SCROLLWIN;
+    }
+
+    wp->next = _nc_windows;
+    wp->win = win;
+    _nc_windows = wp;
+
+    T((T_CREATE("window %p"), win));
+
+    return (win);
 }
index 75d4a638148d6547327cfaff9b2aa2292ea8b8e3..bfaffdefda5a627d606bdfad85ce86ec423cd7c6 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*
  *     nl.c
  *
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_nl.c,v 1.4 1999/10/22 22:31:51 tom Exp $")
+MODULE_ID("$Id: lib_nl.c,v 1.6 2000/02/13 00:59:39 tom Exp $")
 
 #ifdef __EMX__
 #include <io.h>
-#include <fcntl.h>
 #endif
 
-int nl(void)
+int
+nl(void)
 {
-       T((T_CALLED("nl()")));
+    T((T_CALLED("nl()")));
 
-       SP->_nl = TRUE;
+    SP->_nl = TRUE;
 
 #ifdef __EMX__
-       _nc_flush();
-       _fsetmode(NC_OUTPUT, "t");
+    _nc_flush();
+    _fsetmode(NC_OUTPUT, "t");
 #endif
 
-       returnCode(OK);
+    returnCode(OK);
 }
 
-int nonl(void)
+int
+nonl(void)
 {
-       T((T_CALLED("nonl()")));
+    T((T_CALLED("nonl()")));
 
-       SP->_nl = FALSE;
+    SP->_nl = FALSE;
 
 #ifdef __EMX__
-       _nc_flush();
-       _fsetmode(NC_OUTPUT, "b");
+    _nc_flush();
+    _fsetmode(NC_OUTPUT, "b");
 #endif
 
-       returnCode(OK);
+    returnCode(OK);
 }
index d4e341c05c753bda93d6e235aaa3b20df01d05a2..af7dd3b501945d9760bace4bcab7fcc955477103 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*
  * lib_pad.c
  * newpad      -- create a new pad
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_pad.c,v 1.27 1998/06/28 00:10:16 tom Exp $")
+MODULE_ID("$Id: lib_pad.c,v 1.29 2000/04/29 21:19:44 tom Exp $")
 
-WINDOW *newpad(int l, int c)
+WINDOW *
+newpad(int l, int c)
 {
-WINDOW *win;
-chtype *ptr;
-int i;
+    WINDOW *win;
+    chtype *ptr;
+    int i;
 
-       T((T_CALLED("newpad(%d, %d)"), l, c));
+    T((T_CALLED("newpad(%d, %d)"), l, c));
 
-       if (l <= 0 || c <= 0)
-               returnWin(0);
+    if (l <= 0 || c <= 0)
+       returnWin(0);
 
-       if ((win = _nc_makenew(l,c,0,0,_ISPAD)) == NULL)
-               returnWin(0);
+    if ((win = _nc_makenew(l, c, 0, 0, _ISPAD)) == NULL)
+       returnWin(0);
 
-       for (i = 0; i < l; i++) {
-           if_USE_SCROLL_HINTS(win->_line[i].oldindex = _NEWINDEX);
-           if ((win->_line[i].text = typeCalloc(chtype, ((size_t)c))) == 0) {
-               _nc_freewin(win);
-               returnWin(0);
-           }
-           for (ptr = win->_line[i].text; ptr < win->_line[i].text + c; )
-               *ptr++ = ' ';
+    for (i = 0; i < l; i++) {
+       if_USE_SCROLL_HINTS(win->_line[i].oldindex = _NEWINDEX);
+       if ((win->_line[i].text = typeCalloc(chtype, ((size_t) c))) == 0) {
+           _nc_freewin(win);
+           returnWin(0);
        }
+       for (ptr = win->_line[i].text; ptr < win->_line[i].text + c;)
+           *ptr++ = ' ';
+    }
 
-       returnWin(win);
+    returnWin(win);
 }
 
-WINDOW *subpad(WINDOW *orig, int l, int c, int begy, int begx)
+WINDOW *
+subpad(WINDOW *orig, int l, int c, int begy, int begx)
 {
-WINDOW *win = (WINDOW *)0;
+    WINDOW *win = (WINDOW *) 0;
 
-       T((T_CALLED("subpad(%d, %d)"), l, c));
+    T((T_CALLED("subpad(%d, %d)"), l, c));
 
-       if (orig) {
-         if (!(orig->_flags & _ISPAD) || ((win = derwin(orig, l, c, begy, begx)) == NULL))
+    if (orig) {
+       if (!(orig->_flags & _ISPAD)
+           || ((win = derwin(orig, l, c, begy, begx)) == NULL))
            returnWin(0);
-       }
-       returnWin(win);
+    }
+    returnWin(win);
 }
 
-int prefresh(WINDOW *win, int pminrow, int pmincol,
-       int sminrow, int smincol, int smaxrow, int smaxcol)
+int
+prefresh(WINDOW *win, int pminrow, int pmincol,
+    int sminrow, int smincol, int smaxrow, int smaxcol)
 {
-       T((T_CALLED("prefresh()")));
-       if (pnoutrefresh(win, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol) != ERR
-        && doupdate() != ERR) {
-               returnCode(OK);
-       }
-       returnCode(ERR);
+    T((T_CALLED("prefresh()")));
+    if (pnoutrefresh(win, pminrow, pmincol, sminrow, smincol, smaxrow,
+           smaxcol) != ERR
+       && doupdate() != ERR) {
+       returnCode(OK);
+    }
+    returnCode(ERR);
 }
 
-int pnoutrefresh(WINDOW *win, int pminrow, int pmincol,
-       int sminrow, int smincol, int smaxrow, int smaxcol)
+int
+pnoutrefresh(WINDOW *win, int pminrow, int pmincol,
+    int sminrow, int smincol, int smaxrow, int smaxcol)
 {
-const  int my_len = 2; /* parameterize the threshold for hardscroll */
-short  i, j;
-short  m, n;
-short  pmaxrow;
-short  pmaxcol;
-short  displaced;
-bool   wide;
-
-       T((T_CALLED("pnoutrefresh(%p, %d, %d, %d, %d, %d, %d)"),
-               win, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol));
-
-       if (win == 0)
-               returnCode(ERR);
-
-       if (!(win->_flags & _ISPAD))
-               returnCode(ERR);
+    const int my_len = 2;      /* parameterize the threshold for hardscroll */
+    NCURSES_SIZE_T i, j;
+    NCURSES_SIZE_T m, n;
+    NCURSES_SIZE_T pmaxrow;
+    NCURSES_SIZE_T pmaxcol;
+    NCURSES_SIZE_T displaced;
+    bool wide;
+
+    T((T_CALLED("pnoutrefresh(%p, %d, %d, %d, %d, %d, %d)"),
+           win, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol));
+
+    if (win == 0)
+       returnCode(ERR);
 
-       /* negative values are interpreted as zero */
-       if (pminrow < 0) pminrow = 0;
-       if (pmincol < 0) pmincol = 0;
-       if (sminrow < 0) sminrow = 0;
-       if (smincol < 0) smincol = 0;
+    if (!(win->_flags & _ISPAD))
+       returnCode(ERR);
 
+    /* negative values are interpreted as zero */
+    if (pminrow < 0)
+       pminrow = 0;
+    if (pmincol < 0)
+       pmincol = 0;
+    if (sminrow < 0)
+       sminrow = 0;
+    if (smincol < 0)
+       smincol = 0;
+
+    pmaxrow = pminrow + smaxrow - sminrow;
+    pmaxcol = pmincol + smaxcol - smincol;
+
+    T((" pminrow + smaxrow - sminrow %d, win->_maxy %d", pmaxrow, win->_maxy));
+    T((" pmincol + smaxcol - smincol %d, win->_maxx %d", pmaxcol, win->_maxx));
+
+    /*
+     * Trim the caller's screen size back to the actual limits.
+     */
+    if (pmaxrow > win->_maxy) {
+       smaxrow -= (pmaxrow - win->_maxy);
        pmaxrow = pminrow + smaxrow - sminrow;
+    }
+    if (pmaxcol > win->_maxx) {
+       smaxcol -= (pmaxcol - win->_maxx);
        pmaxcol = pmincol + smaxcol - smincol;
+    }
 
-       T((" pminrow + smaxrow - sminrow %d, win->_maxy %d", pmaxrow, win->_maxy));
-       T((" pmincol + smaxcol - smincol %d, win->_maxx %d", pmaxcol, win->_maxx));
+    if (smaxrow > screen_lines
+       || smaxcol > screen_columns
+       || sminrow > smaxrow
+       || smincol > smaxcol)
+       returnCode(ERR);
 
-       /*
-        * Trim the caller's screen size back to the actual limits.
-        */
-       if (pmaxrow > win->_maxy) {
-               smaxrow -= (pmaxrow - win->_maxy);
-               pmaxrow = pminrow + smaxrow - sminrow;
-       }
-       if (pmaxcol > win->_maxx) {
-               smaxcol -= (pmaxcol - win->_maxx);
-               pmaxcol = pmincol + smaxcol - smincol;
+    T(("pad being refreshed"));
+
+    if (win->_pad._pad_y >= 0) {
+       displaced = pminrow - win->_pad._pad_y
+           - (sminrow - win->_pad._pad_top);
+       T(("pad being shifted by %d line(s)", displaced));
+    } else
+       displaced = 0;
+
+    /*
+     * For pure efficiency, we'd want to transfer scrolling information
+     * from the pad to newscr whenever the window is wide enough that
+     * its update will dominate the cost of the update for the horizontal
+     * band of newscr that it occupies.  Unfortunately, this threshold
+     * tends to be complex to estimate, and in any case scrolling the
+     * whole band and rewriting the parts outside win's image would look
+     * really ugly.  So.  What we do is consider the pad "wide" if it
+     * either (a) occupies the whole width of newscr, or (b) occupies
+     * all but at most one column on either vertical edge of the screen
+     * (this caters to fussy people who put boxes around full-screen
+     * windows).  Note that changing this formula will not break any code,
+     * merely change the costs of various update cases.
+     */
+    wide = (smincol < my_len && smaxcol > (newscr->_maxx - my_len));
+
+    for (i = pminrow, m = sminrow + win->_yoffset;
+       i <= pmaxrow && m <= newscr->_maxy;
+       i++, m++) {
+       register struct ldat *nline = &newscr->_line[m];
+       register struct ldat *oline = &win->_line[i];
+
+       for (j = pmincol, n = smincol; j <= pmaxcol; j++, n++) {
+           if (oline->text[j] != nline->text[n]) {
+               nline->text[n] = oline->text[j];
+               CHANGED_CELL(nline, n);
+           }
        }
 
-       if (smaxrow > screen_lines
-        || smaxcol > screen_columns
-        || sminrow > smaxrow
-        || smincol > smaxcol)
-               returnCode(ERR);
-
-       T(("pad being refreshed"));
-
-       if (win->_pad._pad_y >= 0) {
-               displaced = pminrow - win->_pad._pad_y
-                         -(sminrow - win->_pad._pad_top);
-               T(("pad being shifted by %d line(s)", displaced));
-       } else
-               displaced = 0;
-
-       /*
-        * For pure efficiency, we'd want to transfer scrolling information
-        * from the pad to newscr whenever the window is wide enough that
-        * its update will dominate the cost of the update for the horizontal
-        * band of newscr that it occupies.  Unfortunately, this threshold
-        * tends to be complex to estimate, and in any case scrolling the
-        * whole band and rewriting the parts outside win's image would look
-        * really ugly.  So.  What we do is consider the pad "wide" if it
-        * either (a) occupies the whole width of newscr, or (b) occupies
-        * all but at most one column on either vertical edge of the screen
-        * (this caters to fussy people who put boxes around full-screen
-        * windows).  Note that changing this formula will not break any code,
-        * merely change the costs of various update cases.
-        */
-       wide = (smincol < my_len && smaxcol > (newscr->_maxx - my_len));
-
-       for (i = pminrow, m = sminrow + win->_yoffset;
-               i <= pmaxrow && m <= newscr->_maxy;
-                       i++, m++) {
-               register struct ldat    *nline = &newscr->_line[m];
-               register struct ldat    *oline = &win->_line[i];
-
-               for (j = pmincol, n = smincol; j <= pmaxcol; j++, n++) {
-                       if (oline->text[j] != nline->text[n]) {
-                               nline->text[n] = oline->text[j];
-                               CHANGED_CELL(nline,n);
-                       }
-               }
-
 #if USE_SCROLL_HINTS
-               if (wide) {
-                   int nind = m + displaced;
-                   if (oline->oldindex < 0
-                    || nind < sminrow
-                    || nind > smaxrow) {
+       if (wide) {
+           int nind = m + displaced;
+           if (oline->oldindex < 0
+               || nind < sminrow
+               || nind > smaxrow) {
+               nind = _NEWINDEX;
+           } else if (displaced) {
+               register struct ldat *pline = &curscr->_line[nind];
+               for (j = 0; j <= my_len; j++) {
+                   int k = newscr->_maxx - j;
+                   if (pline->text[j] != nline->text[j]
+                       || pline->text[k] != nline->text[k]) {
                        nind = _NEWINDEX;
-                   } else if (displaced) {
-                       register struct ldat *pline = &curscr->_line[nind];
-                       for (j = 0; j <= my_len; j++) {
-                           int k = newscr->_maxx - j;
-                           if (pline->text[j] != nline->text[j]
-                            || pline->text[k] != nline->text[k]) {
-                               nind = _NEWINDEX;
-                               break;
-                           }
-                       }
+                       break;
                    }
-
-                   nline->oldindex = nind;
                }
-#endif /* USE_SCROLL_HINTS */
-               oline->firstchar = oline->lastchar = _NOCHANGE;
-               if_USE_SCROLL_HINTS(oline->oldindex = i);
-       }
+           }
 
-       /*
-        * Clean up debris from scrolling or resizing the pad, so we do not
-        * accidentally pick up the index value during the next call to this
-        * procedure.  The only rows that should have an index value are those
-        * that are displayed during this cycle.
-        */
+           nline->oldindex = nind;
+       }
+#endif /* USE_SCROLL_HINTS */
+       oline->firstchar = oline->lastchar = _NOCHANGE;
+       if_USE_SCROLL_HINTS(oline->oldindex = i);
+    }
+
+    /*
+     * Clean up debris from scrolling or resizing the pad, so we do not
+     * accidentally pick up the index value during the next call to this
+     * procedure.  The only rows that should have an index value are those
+     * that are displayed during this cycle.
+     */
 #if USE_SCROLL_HINTS
-       for (i = pminrow-1; (i >= 0) && (win->_line[i].oldindex >= 0); i--)
-               win->_line[i].oldindex = _NEWINDEX;
-       for (i = pmaxrow+1; (i <= win->_maxy) && (win->_line[i].oldindex >= 0); i++)
-               win->_line[i].oldindex = _NEWINDEX;
+    for (i = pminrow - 1; (i >= 0) && (win->_line[i].oldindex >= 0); i--)
+       win->_line[i].oldindex = _NEWINDEX;
+    for (i = pmaxrow + 1; (i <= win->_maxy)
+       && (win->_line[i].oldindex >= 0); i++)
+       win->_line[i].oldindex = _NEWINDEX;
 #endif
 
-       win->_begx = smincol;
-       win->_begy = sminrow;
+    win->_begx = smincol;
+    win->_begy = sminrow;
+
+    if (win->_clear) {
+       win->_clear = FALSE;
+       newscr->_clear = TRUE;
+    }
+
+    /*
+     * Use the pad's current position, if it will be visible.
+     * If not, don't do anything; it's not an error.
+     */
+    if (win->_leaveok == FALSE
+       && win->_cury >= pminrow
+       && win->_curx >= pmincol
+       && win->_cury <= pmaxrow
+       && win->_curx <= pmaxcol) {
+       newscr->_cury = win->_cury - pminrow + win->_begy + win->_yoffset;
+       newscr->_curx = win->_curx - pmincol + win->_begx;
+    }
+    newscr->_leaveok = win->_leaveok;
+    win->_flags &= ~_HASMOVED;
+
+    /*
+     * Update our cache of the line-numbers that we displayed from the pad.
+     * We will use this on subsequent calls to this function to derive
+     * values to stuff into 'oldindex[]' -- for scrolling optimization.
+     */
+    win->_pad._pad_y = pminrow;
+    win->_pad._pad_x = pmincol;
+    win->_pad._pad_top = sminrow;
+    win->_pad._pad_left = smincol;
+    win->_pad._pad_bottom = smaxrow;
+    win->_pad._pad_right = smaxcol;
+
+    returnCode(OK);
+}
 
-       if (win->_clear) {
-           win->_clear = FALSE;
-           newscr->_clear = TRUE;
-       }
+int
+pechochar(WINDOW *pad, const chtype ch)
+{
+    T((T_CALLED("pechochar(%p, %s)"), pad, _tracechtype(ch)));
 
-       /*
-        * Use the pad's current position, if it will be visible.
-        * If not, don't do anything; it's not an error.
-        */
-       if (win->_leaveok == FALSE
-        && win->_cury  >= pminrow
-        && win->_curx  >= pmincol
-        && win->_cury  <= pmaxrow
-        && win->_curx  <= pmaxcol) {
-               newscr->_cury = win->_cury - pminrow + win->_begy + win->_yoffset;
-               newscr->_curx = win->_curx - pmincol + win->_begx;
-       }
-       win->_flags &= ~_HASMOVED;
-
-       /*
-        * Update our cache of the line-numbers that we displayed from the pad.
-        * We will use this on subsequent calls to this function to derive
-        * values to stuff into 'oldindex[]' -- for scrolling optimization.
-        */
-       win->_pad._pad_y      = pminrow;
-       win->_pad._pad_x      = pmincol;
-       win->_pad._pad_top    = sminrow;
-       win->_pad._pad_left   = smincol;
-       win->_pad._pad_bottom = smaxrow;
-       win->_pad._pad_right  = smaxcol;
+    if (pad == 0)
+       returnCode(ERR);
 
-       returnCode(OK);
-}
+    if (!(pad->_flags & _ISPAD))
+       returnCode(wechochar(pad, ch));
 
-int pechochar(WINDOW *pad, const chtype ch)
-{
-       T((T_CALLED("pechochar(%p, %s)"), pad, _tracechtype(ch)));
-
-       if (pad == 0)
-         returnCode(ERR);
-
-       if (!(pad->_flags & _ISPAD))
-               returnCode(wechochar(pad,ch));
-
-       waddch(pad, ch);
-       prefresh(pad, pad->_pad._pad_y,
-                     pad->_pad._pad_x,
-                     pad->_pad._pad_top,
-                     pad->_pad._pad_left,
-                     pad->_pad._pad_bottom,
-                     pad->_pad._pad_right);
-       
-       returnCode(OK);
+    waddch(pad, ch);
+    prefresh(pad, pad->_pad._pad_y,
+       pad->_pad._pad_x,
+       pad->_pad._pad_top,
+       pad->_pad._pad_left,
+       pad->_pad._pad_bottom,
+       pad->_pad._pad_right);
+
+    returnCode(OK);
 }
index 88e3b75a56a1ac195af5f9b5a4b57d7ac2d16028..910664b0187a3c83e8bb1f191a72007762a117f6 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,8 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
-
 /*
  *     lib_refresh.c
  *
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_refresh.c,v 1.24 1999/07/31 11:36:37 juergen Exp $")
+MODULE_ID("$Id: lib_refresh.c,v 1.25 2000/04/29 21:17:08 tom Exp $")
 
-int wrefresh(WINDOW *win)
+int
+wrefresh(WINDOW *win)
 {
-int code;
-
-       T((T_CALLED("wrefresh(%p)"), win));
-
-       if (win == curscr) {
-               curscr->_clear = TRUE;
-               code = doupdate();
-       } else if ((code = wnoutrefresh(win)) == OK) {
-               if (win->_clear)
-                       newscr->_clear = TRUE;
-               code = doupdate();
-               /*
-                * Reset the clearok() flag in case it was set for the special
-                * case in hardscroll.c (if we don't reset it here, we'll get 2
-                * refreshes because the flag is copied from stdscr to newscr).
-                * Resetting the flag shouldn't do any harm, anyway.
-                */
-               win->_clear = FALSE;
-       }
-       returnCode(code);
-}
-
-int wnoutrefresh(WINDOW *win)
-{
-short  limit_x;
-short  i, j;
-short  begx;
-short  begy;
-short  m, n;
-bool   wide;
-
-       T((T_CALLED("wnoutrefresh(%p)"), win));
-#ifdef TRACE
-       if (_nc_tracing & TRACE_UPDATE)
-           _tracedump("...win", win);
-#endif /* TRACE */
-
-       /*
-        * This function will break badly if we try to refresh a pad.
-        */
-       if ((win == 0)
-        || (win->_flags & _ISPAD))
-               returnCode(ERR);
+    int code;
 
-       /* put them here so "win == 0" won't break our code */
-       begx = win->_begx;
-       begy = win->_begy;
-
-       newscr->_bkgd  = win->_bkgd;
-       newscr->_attrs = win->_attrs;
-
-       /* merge in change information from all subwindows of this window */
-       wsyncdown(win);
+    T((T_CALLED("wrefresh(%p)"), win));
 
+    if (win == curscr) {
+       curscr->_clear = TRUE;
+       code = doupdate();
+    } else if ((code = wnoutrefresh(win)) == OK) {
+       if (win->_clear)
+           newscr->_clear = TRUE;
+       code = doupdate();
        /*
-        * For pure efficiency, we'd want to transfer scrolling information
-        * from the window to newscr whenever the window is wide enough that
-        * its update will dominate the cost of the update for the horizontal
-        * band of newscr that it occupies.  Unfortunately, this threshold
-        * tends to be complex to estimate, and in any case scrolling the
-        * whole band and rewriting the parts outside win's image would look
-        * really ugly.  So.  What we do is consider the window "wide" if it
-        * either (a) occupies the whole width of newscr, or (b) occupies
-        * all but at most one column on either vertical edge of the screen
-        * (this caters to fussy people who put boxes around full-screen
-        * windows).  Note that changing this formula will not break any code,
-        * merely change the costs of various update cases.
+        * Reset the clearok() flag in case it was set for the special
+        * case in hardscroll.c (if we don't reset it here, we'll get 2
+        * refreshes because the flag is copied from stdscr to newscr).
+        * Resetting the flag shouldn't do any harm, anyway.
         */
-       wide = (begx <= 1 && win->_maxx >= (newscr->_maxx - 1));
-
-       win->_flags &= ~_HASMOVED;
+       win->_clear = FALSE;
+    }
+    returnCode(code);
+}
 
-       /*
-        * Microtweaking alert!  This double loop is one of the genuine
-        * hot spots in the code.  Even gcc doesn't seem to do enough
-        * common-subexpression chunking to make it really tense,
-        * so we'll force the issue.
-        */
+int
+wnoutrefresh(WINDOW *win)
+{
+    NCURSES_SIZE_T limit_x;
+    NCURSES_SIZE_T i, j;
+    NCURSES_SIZE_T begx;
+    NCURSES_SIZE_T begy;
+    NCURSES_SIZE_T m, n;
+    bool wide;
+
+    T((T_CALLED("wnoutrefresh(%p)"), win));
+#ifdef TRACE
+    if (_nc_tracing & TRACE_UPDATE)
+       _tracedump("...win", win);
+#endif /* TRACE */
 
-       /* limit(n) */
+    /*
+     * This function will break badly if we try to refresh a pad.
+     */
+    if ((win == 0)
+       || (win->_flags & _ISPAD))
+       returnCode(ERR);
+
+    /* put them here so "win == 0" won't break our code */
+    begx = win->_begx;
+    begy = win->_begy;
+
+    newscr->_bkgd = win->_bkgd;
+    newscr->_attrs = win->_attrs;
+
+    /* merge in change information from all subwindows of this window */
+    wsyncdown(win);
+
+    /*
+     * For pure efficiency, we'd want to transfer scrolling information
+     * from the window to newscr whenever the window is wide enough that
+     * its update will dominate the cost of the update for the horizontal
+     * band of newscr that it occupies.  Unfortunately, this threshold
+     * tends to be complex to estimate, and in any case scrolling the
+     * whole band and rewriting the parts outside win's image would look
+     * really ugly.  So.  What we do is consider the window "wide" if it
+     * either (a) occupies the whole width of newscr, or (b) occupies
+     * all but at most one column on either vertical edge of the screen
+     * (this caters to fussy people who put boxes around full-screen
+     * windows).  Note that changing this formula will not break any code,
+     * merely change the costs of various update cases.
+     */
+    wide = (begx <= 1 && win->_maxx >= (newscr->_maxx - 1));
+
+    win->_flags &= ~_HASMOVED;
+
+    /*
+     * Microtweaking alert!  This double loop is one of the genuine
+     * hot spots in the code.  Even gcc doesn't seem to do enough
+     * 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;
-       /* 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++) {
-               register struct ldat    *nline = &newscr->_line[m];
-               register struct ldat    *oline = &win->_line[i];
 
-               if (oline->firstchar != _NOCHANGE) {
-                       int last = oline->lastchar;
+    for (i = 0, m = begy + win->_yoffset;
+       i <= win->_maxy && m <= newscr->_maxy;
+       i++, m++) {
+       register struct ldat *nline = &newscr->_line[m];
+       register struct ldat *oline = &win->_line[i];
 
-                       if (last > limit_x)
-                               last = limit_x;
+       if (oline->firstchar != _NOCHANGE) {
+           int last = oline->lastchar;
 
-                       for (j = oline->firstchar, n = j + begx; j <= last; j++, n++) {
-                               if (oline->text[j] != nline->text[n]) {
-                                       nline->text[n] = oline->text[j];
-                                       CHANGED_CELL(nline, n);
-                               }
-                       }
+           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];
+                   CHANGED_CELL(nline, n);
                }
+           }
 
+       }
 #if USE_SCROLL_HINTS
-               if (wide) {
-                   int oind = oline->oldindex;
+       if (wide) {
+           int oind = oline->oldindex;
 
-                   nline->oldindex = (oind == _NEWINDEX) ? _NEWINDEX : begy + oind + win->_yoffset;
-               }
+           nline->oldindex = (oind == _NEWINDEX) ? _NEWINDEX : begy + oind
+               + win->_yoffset;
+       }
 #endif /* USE_SCROLL_HINTS */
 
-               oline->firstchar = oline->lastchar = _NOCHANGE;
-               if_USE_SCROLL_HINTS(oline->oldindex = i);
-       }
+       oline->firstchar = oline->lastchar = _NOCHANGE;
+       if_USE_SCROLL_HINTS(oline->oldindex = i);
+    }
 
-       if (win->_clear) {
-               win->_clear = FALSE;
-               newscr->_clear = TRUE;
-       }
+    if (win->_clear) {
+       win->_clear = FALSE;
+       newscr->_clear = TRUE;
+    }
+
+    if (!win->_leaveok) {
+       newscr->_cury = win->_cury + win->_begy + win->_yoffset;
+       newscr->_curx = win->_curx + win->_begx;
+    }
+    newscr->_leaveok = win->_leaveok;
 
-       if (! win->_leaveok) {
-               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);
+    if (_nc_tracing & TRACE_UPDATE)
+       _tracedump("newscr", newscr);
 #endif /* TRACE */
-       returnCode(OK);
+    returnCode(OK);
 }
index 197bb221a07c26c63e2f7c586f6852ffad70dae7..c2e3831da2550ace967a7a0432cc05cab973c8a1 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,8 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
-
 /*
 **     lib_scroll.c
 **
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_scroll.c,v 1.16 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: lib_scroll.c,v 1.17 2000/04/29 21:10:51 tom Exp $")
 
-void _nc_scroll_window(WINDOW *win, int const n, short const top, short const bottom, chtype blank)
+void
+_nc_scroll_window(WINDOW *win, int const n, NCURSES_SIZE_T const top,
+    NCURSES_SIZE_T const bottom, chtype blank)
 {
-int    line, j;
-size_t to_copy = (size_t)(sizeof(chtype) * (win->_maxx + 1));
-
-       TR(TRACE_MOVE, ("_nc_scroll_window(%p, %d, %d, %d)", win, n, top,bottom)); 
-
-       /*
-        * This used to do a line-text pointer-shuffle instead of text copies.
-        * That (a) doesn't work when the window is derived and doesn't have
-        * its own storage, (b) doesn't save you a lot on modern machines
-        * anyway.  Your typical memcpy implementations are coded in
-        * assembler using a tight BLT loop; for the size of copies we're
-        * talking here, the total execution time is dominated by the one-time
-        * setup cost.  So there is no point in trying to be excessively
-        * clever -- esr.
-        */
-
-       /* shift n lines downwards */
-       if (n < 0) {
-               for (line = bottom; line >= top-n; line--) {
-                       memcpy(win->_line[line].text,
-                              win->_line[line+n].text,
-                              to_copy);
-                       if_USE_SCROLL_HINTS(win->_line[line].oldindex = win->_line[line+n].oldindex);
-               }
-               for (line = top; line < top-n; line++) {
-                       for (j = 0; j <= win->_maxx; j ++)
-                               win->_line[line].text[j] = blank;
-                       if_USE_SCROLL_HINTS(win->_line[line].oldindex = _NEWINDEX);
-               }
-       }
-
-       /* shift n lines upwards */
-       if (n > 0) {
-               for (line = top; line <= bottom-n; line++) {
-                       memcpy(win->_line[line].text,
-                              win->_line[line+n].text,
-                              to_copy);
-                       if_USE_SCROLL_HINTS(win->_line[line].oldindex = win->_line[line+n].oldindex);
-               }
-               for (line = bottom; line > bottom-n; line--) {
-                       for (j = 0; j <= win->_maxx; j ++)
-                               win->_line[line].text[j] = blank;
-                       if_USE_SCROLL_HINTS(win->_line[line].oldindex = _NEWINDEX);
-               }
+    int line, j;
+    size_t to_copy = (size_t) (sizeof(chtype) * (win->_maxx + 1));
+
+    TR(TRACE_MOVE, ("_nc_scroll_window(%p, %d, %d, %d)", win, n, top, bottom));
+
+    /*
+     * This used to do a line-text pointer-shuffle instead of text copies.
+     * That (a) doesn't work when the window is derived and doesn't have
+     * its own storage, (b) doesn't save you a lot on modern machines
+     * anyway.  Your typical memcpy implementations are coded in
+     * assembler using a tight BLT loop; for the size of copies we're
+     * talking here, the total execution time is dominated by the one-time
+     * setup cost.  So there is no point in trying to be excessively
+     * clever -- esr.
+     */
+
+    /* shift n lines downwards */
+    if (n < 0) {
+       for (line = bottom; line >= top - n; line--) {
+           memcpy(win->_line[line].text,
+               win->_line[line + n].text,
+               to_copy);
+           if_USE_SCROLL_HINTS(win->_line[line].oldindex = win->_line[line
+                   + n].oldindex);
+       }
+       for (line = top; line < top - n; line++) {
+           for (j = 0; j <= win->_maxx; j++)
+               win->_line[line].text[j] = blank;
+           if_USE_SCROLL_HINTS(win->_line[line].oldindex = _NEWINDEX);
+       }
+    }
+
+    /* shift n lines upwards */
+    if (n > 0) {
+       for (line = top; line <= bottom - n; line++) {
+           memcpy(win->_line[line].text,
+               win->_line[line + n].text,
+               to_copy);
+           if_USE_SCROLL_HINTS(win->_line[line].oldindex = win->_line[line
+                   + n].oldindex);
+       }
+       for (line = bottom; line > bottom - n; line--) {
+           for (j = 0; j <= win->_maxx; j++)
+               win->_line[line].text[j] = blank;
+           if_USE_SCROLL_HINTS(win->_line[line].oldindex = _NEWINDEX);
        }
-       touchline(win, top, bottom-top+1);
+    }
+    touchline(win, top, bottom - top + 1);
 }
 
 int
 wscrl(WINDOW *win, int n)
 {
-       T((T_CALLED("wscrl(%p,%d)"), win, n));
+    T((T_CALLED("wscrl(%p,%d)"), win, n));
 
-       if (!win || !win->_scroll)
-               returnCode(ERR);
+    if (!win || !win->_scroll)
+       returnCode(ERR);
 
-       if (n == 0)
-               returnCode(OK);
+    if (n == 0)
+       returnCode(OK);
 
-       if ((n > (win->_regbottom - win->_regtop)) || 
-           (-n > (win->_regbottom - win->_regtop)))
-           returnCode(ERR);
+    if ((n > (win->_regbottom - win->_regtop)) ||
+       (-n > (win->_regbottom - win->_regtop)))
+       returnCode(ERR);
 
-       _nc_scroll_window(win, n, win->_regtop, win->_regbottom, _nc_background(win));
+    _nc_scroll_window(win, n, win->_regtop, win->_regbottom, _nc_background(win));
 
-       _nc_synchook(win);
-       returnCode(OK);
+    _nc_synchook(win);
+    returnCode(OK);
 }
index ddeab2498bfdcceaa78f4d9a626a02668b043e3f..b47c047f4623604d8f8af9a7319f0ca910778147 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,8 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
-
 /*
 **     lib_scrreg.c
 **
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_scrreg.c,v 1.7 1998/02/11 12:13:53 tom Exp $")
+MODULE_ID("$Id: lib_scrreg.c,v 1.8 2000/04/29 21:13:04 tom Exp $")
 
-int wsetscrreg(WINDOW *win, int top, int bottom)
+int
+wsetscrreg(WINDOW *win, int top, int bottom)
 {
-       T((T_CALLED("wsetscrreg(%p,%d,%d)"), win, top, bottom));
-
-       if (win &&
-           top >= 0  && top <= win->_maxy &&
-           bottom >= 0  &&  bottom <= win->_maxy &&
-           bottom > top)
-         {
-           win->_regtop        = (short)top;
-           win->_regbottom = (short)bottom;
-           
-           returnCode(OK);
-         } else
-           returnCode(ERR);
+    T((T_CALLED("wsetscrreg(%p,%d,%d)"), win, top, bottom));
+
+    if (win &&
+       top >= 0 && top <= win->_maxy &&
+       bottom >= 0 && bottom <= win->_maxy &&
+       bottom > top) {
+       win->_regtop = (NCURSES_SIZE_T) top;
+       win->_regbottom = (NCURSES_SIZE_T) bottom;
+
+       returnCode(OK);
+    } else
+       returnCode(ERR);
 }
index 443236cf9cdafadf0e163d846fbf4a65d098876b..b4d547fcf514ec6471f475351157e4cef0920196 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
 
 #include <curses.priv.h>
 
-#include <term.h>      /* cur_term */
+#include <term.h>              /* cur_term */
+#include <tic.h>
 
-MODULE_ID("$Id: lib_set_term.c,v 1.46 1999/07/24 20:05:49 tom Exp $")
+MODULE_ID("$Id: lib_set_term.c,v 1.55 2000/07/02 00:22:18 tom Exp $")
 
-SCREEN * set_term(SCREEN *screenp)
+SCREEN *
+set_term(SCREEN * screenp)
 {
-SCREEN *oldSP;
+    SCREEN *oldSP;
 
-       T((T_CALLED("set_term(%p)"), screenp));
+    T((T_CALLED("set_term(%p)"), screenp));
 
-       oldSP = SP;
-       _nc_set_screen(screenp);
+    oldSP = SP;
+    _nc_set_screen(screenp);
 
-       set_curterm(SP->_term);
-       curscr      = SP->_curscr;
-       newscr      = SP->_newscr;
-       stdscr      = SP->_stdscr;
-       COLORS      = SP->_color_count;
-       COLOR_PAIRS = SP->_pair_count;
-       memcpy(acs_map, SP->_acs_map, sizeof(chtype)*ACS_LEN);
+    set_curterm(SP->_term);
+    curscr = SP->_curscr;
+    newscr = SP->_newscr;
+    stdscr = SP->_stdscr;
+    COLORS = SP->_color_count;
+    COLOR_PAIRS = SP->_pair_count;
+    memcpy(acs_map, SP->_acs_map, sizeof(chtype) * ACS_LEN);
 
-       T((T_RETURN("%p"), oldSP));
-       return(oldSP);
+    T((T_RETURN("%p"), oldSP));
+    return (oldSP);
 }
 
-static void _nc_free_keytry(struct tries *kt)
+static void
+_nc_free_keytry(struct tries *kt)
 {
-       if (kt != 0) {
-               _nc_free_keytry(kt->child);
-               _nc_free_keytry(kt->sibling);
-               free(kt);
-       }
+    if (kt != 0) {
+       _nc_free_keytry(kt->child);
+       _nc_free_keytry(kt->sibling);
+       free(kt);
+    }
 }
 
 /*
  * Free the storage associated with the given SCREEN sp.
  */
-void delscreen(SCREEN *sp)
+void
+delscreen(SCREEN * sp)
 {
-       SCREEN **scan = &_nc_screen_chain;
+    SCREEN **scan = &_nc_screen_chain;
 
-       T((T_CALLED("delscreen(%p)"), sp));
+    T((T_CALLED("delscreen(%p)"), sp));
 
-       while(*scan)
-       {
-           if (*scan == sp)
-           {
-               *scan = sp->_next_screen;
-               break;
-           }
-           scan = &(*scan)->_next_screen;
+    while (*scan) {
+       if (*scan == sp) {
+           *scan = sp->_next_screen;
+           break;
        }
+       scan = &(*scan)->_next_screen;
+    }
+
+    _nc_freewin(sp->_curscr);
+    _nc_freewin(sp->_newscr);
+    _nc_freewin(sp->_stdscr);
+    _nc_free_keytry(sp->_keytry);
+    _nc_free_keytry(sp->_key_ok);
+
+    FreeIfNeeded(sp->_color_table);
+    FreeIfNeeded(sp->_color_pairs);
+
+    FreeIfNeeded(sp->oldhash);
+    FreeIfNeeded(sp->newhash);
+
+    del_curterm(sp->_term);
+
+    /*
+     * If the associated output stream has been closed, we can discard the
+     * set-buffer.  Limit the error check to EBADF, since fflush may fail
+     * for other reasons than trying to operate upon a closed stream.
+     */
+    if (sp->_ofp != 0
+       && sp->_setbuf != 0
+       && fflush(sp->_ofp) != 0
+       && errno == EBADF) {
+       free(sp->_setbuf);
+    }
+
+    free(sp);
+
+    /*
+     * If this was the current screen, reset everything that the
+     * application might try to use (except cur_term, which may have
+     * multiple references in different screens).
+     */
+    if (sp == SP) {
+       curscr = 0;
+       newscr = 0;
+       stdscr = 0;
+       COLORS = 0;
+       COLOR_PAIRS = 0;
+       _nc_set_screen(0);
+    }
+    returnVoid;
+}
 
-       _nc_freewin(sp->_curscr);
-       _nc_freewin(sp->_newscr);
-       _nc_freewin(sp->_stdscr);
-       _nc_free_keytry(sp->_keytry);
-       _nc_free_keytry(sp->_key_ok);
-
-       FreeIfNeeded(sp->_color_table);
-       FreeIfNeeded(sp->_color_pairs);
+static ripoff_t rippedoff[5];
+static ripoff_t *rsp = rippedoff;
+#define N_RIPS SIZEOF(rippedoff)
 
-       FreeIfNeeded(sp->oldhash);
-       FreeIfNeeded(sp->newhash);
+static bool
+no_mouse_event(SCREEN * sp GCC_UNUSED)
+{
+    return FALSE;
+}
 
-       del_curterm(sp->_term);
+static bool
+no_mouse_inline(SCREEN * sp GCC_UNUSED)
+{
+    return FALSE;
+}
 
-       free(sp);
+static bool
+no_mouse_parse(int code GCC_UNUSED)
+{
+    return TRUE;
+}
 
-       /*
-        * If this was the current screen, reset everything that the
-        * application might try to use (except cur_term, which may have
-        * multiple references in different screens).
-        */
-       if (sp == SP) {
-               curscr = 0;
-               newscr = 0;
-               stdscr = 0;
-               COLORS = 0;
-               COLOR_PAIRS = 0;
-               _nc_set_screen(0);
-       }
-       returnVoid;
+static void
+no_mouse_resume(SCREEN * sp GCC_UNUSED)
+{
 }
 
-static ripoff_t rippedoff[5];
-static ripoff_t *rsp = rippedoff;
-#define N_RIPS SIZEOF(rippedoff)
+static void
+no_mouse_wrap(SCREEN * sp GCC_UNUSED)
+{
+}
 
-static bool no_mouse_event (SCREEN *sp GCC_UNUSED) { return FALSE; }
-static bool no_mouse_inline(SCREEN *sp GCC_UNUSED) { return FALSE; }
-static bool no_mouse_parse (int code   GCC_UNUSED) { return TRUE; }
-static void no_mouse_resume(SCREEN *sp GCC_UNUSED) { }
-static void no_mouse_wrap  (SCREEN *sp GCC_UNUSED) { }
+#if defined(NCURSES_EXT_FUNCS) && defined(USE_COLORFGBG)
+static char *
+extract_fgbg(char *src, int *result)
+{
+    char *dst = 0;
+    long value = strtol(src, &dst, 0);
+
+    if (dst == 0) {
+       dst = src;
+    } else if (value >= 0) {
+       *result = value % max_colors;
+    }
+    while (*dst != 0 && *dst != ';')
+       dst++;
+    if (*dst == ';')
+       dst++;
+    return dst;
+}
+#endif
 
-int _nc_setupscreen(short slines, short const scolumns, FILE *output)
+int
+_nc_setupscreen(short slines, short const scolumns, FILE * output)
 /* OS-independent screen initializations */
 {
-int    bottom_stolen = 0;
-size_t i;
-
-        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;
-       SP->_lines_avail = slines;
-       SP->_columns     = scolumns;
-       SP->_cursrow     = -1;
-       SP->_curscol     = -1;
-       SP->_nl          = TRUE;
-       SP->_raw         = FALSE;
-       SP->_cbreak      = 0;
-       SP->_echo        = TRUE;
-       SP->_fifohead    = -1;
-       SP->_endwin      = TRUE;
-       SP->_ofp         = output;
-       SP->_cursor      = -1;  /* cannot know real cursor shape */
+    int bottom_stolen = 0;
+    size_t i;
+
+    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;
+    SP->_lines_avail = slines;
+    SP->_columns = scolumns;
+    SP->_cursrow = -1;
+    SP->_curscol = -1;
+    SP->_nl = TRUE;
+    SP->_raw = 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;
+    SP->_no_padding = getenv("NCURSES_NO_PADDING") != 0;
+    TR(TRACE_CHARPUT | TRACE_MOVE, ("padding will%s be used",
+           SP->_no_padding ? " not" : ""));
 #endif
-
-       SP->_maxclick     = DEFAULT_MAXCLICK;
-       SP->_mouse_event  = no_mouse_event;
-       SP->_mouse_inline = no_mouse_inline;
-       SP->_mouse_parse  = no_mouse_parse;
-       SP->_mouse_resume = no_mouse_resume;
-       SP->_mouse_wrap   = no_mouse_wrap;
-       SP->_mouse_fd     = -1;
-
-       /* initialize the panel hooks */
-       SP->_panelHook.top_panel = (struct panel*)0;
-       SP->_panelHook.bottom_panel = (struct panel*)0;
-       SP->_panelHook.stdscr_pseudo_panel = (struct panel*)0;
-
+#ifdef NCURSES_EXT_FUNCS
+    SP->_default_color = FALSE;
+    SP->_has_sgr_39_49 = FALSE;
+    SP->_default_fg = COLOR_WHITE;
+    SP->_default_bg = COLOR_BLACK;
+#ifdef USE_COLORFGBG
+    /*
+     * If rxvt's $COLORFGBG variable is set, use it to specify the assumed
+     * default colors.  Note that rxvt (mis)uses bold colors, equating a bold
+     * color to that value plus 8.  We'll only use the non-bold color for now -
+     * decide later if it is worth having default attributes as well.
+     */
+    if (getenv("COLORFGBG") != 0) {
+       char *p = getenv("COLORFGBG");
+       p = extract_fgbg(p, &(SP->_default_fg));
+       p = extract_fgbg(p, &(SP->_default_bg));
+    }
+#endif
+#endif /* NCURSES_EXT_FUNCS */
+
+    SP->_maxclick = DEFAULT_MAXCLICK;
+    SP->_mouse_event = no_mouse_event;
+    SP->_mouse_inline = no_mouse_inline;
+    SP->_mouse_parse = no_mouse_parse;
+    SP->_mouse_resume = no_mouse_resume;
+    SP->_mouse_wrap = no_mouse_wrap;
+    SP->_mouse_fd = -1;
+
+    /* initialize the panel hooks */
+    SP->_panelHook.top_panel = (struct panel *) 0;
+    SP->_panelHook.bottom_panel = (struct panel *) 0;
+    SP->_panelHook.stdscr_pseudo_panel = (struct panel *) 0;
+
+    /*
+     * If we've no magic cookie support, we suppress attributes that xmc
+     * would affect, i.e., the attributes that affect the rendition of a
+     * space.  Note that this impacts the alternate character set mapping
+     * as well.
+     */
+    if (magic_cookie_glitch > 0) {
+
+       SP->_xmc_triggers = termattrs() & (
+           A_ALTCHARSET |
+           A_BLINK |
+           A_BOLD |
+           A_REVERSE |
+           A_STANDOUT |
+           A_UNDERLINE
+           );
+       SP->_xmc_suppress = SP->_xmc_triggers & (chtype) ~ (A_BOLD);
+
+       T(("magic cookie attributes %s", _traceattr(SP->_xmc_suppress)));
+#if USE_XMC_SUPPORT
        /*
-        * If we've no magic cookie support, we suppress attributes that xmc
-        * would affect, i.e., the attributes that affect the rendition of a
-        * space.  Note that this impacts the alternate character set mapping
-        * as well.
+        * To keep this simple, suppress all of the optimization hooks
+        * except for clear_screen and the cursor addressing.
         */
-       if (magic_cookie_glitch > 0) {
-
-               SP->_xmc_triggers = termattrs() & (
-                               A_ALTCHARSET |
-                               A_BLINK |
-                               A_BOLD |
-                               A_REVERSE |
-                               A_STANDOUT |
-                               A_UNDERLINE
-                               );
-               SP->_xmc_suppress = SP->_xmc_triggers & (chtype)~(A_BOLD);
-
-               T(("magic cookie attributes %s", _traceattr(SP->_xmc_suppress)));
-#if USE_XMC_SUPPORT
-               /*
-                * To keep this simple, suppress all of the optimization hooks
-                * except for clear_screen and the cursor addressing.
-                */
-               clr_eol = 0;
-               clr_eos = 0;
-               set_attributes = 0;
+       clr_eol = 0;
+       clr_eos = 0;
+       set_attributes = 0;
 #else
-               magic_cookie_glitch = -1;
-               acs_chars = 0;
+       magic_cookie_glitch = ABSENT_NUMERIC;
+       acs_chars = 0;
 #endif
-       }
-       _nc_init_acs();
-       memcpy(SP->_acs_map, acs_map, sizeof(chtype)*ACS_LEN);
+    }
+    _nc_init_acs();
+    memcpy(SP->_acs_map, acs_map, sizeof(chtype) * ACS_LEN);
 
-       _nc_idcok = TRUE;
-       _nc_idlok = FALSE;
+    _nc_idcok = TRUE;
+    _nc_idlok = FALSE;
 
-       _nc_windows = 0; /* no windows yet */
+    _nc_windows = 0;           /* no windows yet */
 
-       SP->oldhash = 0;
-       SP->newhash = 0;
+    SP->oldhash = 0;
+    SP->newhash = 0;
 
-       T(("creating newscr"));
-       if ((newscr = newwin(slines, scolumns, 0, 0)) == 0)
-               return ERR;
+    T(("creating newscr"));
+    if ((newscr = newwin(slines, scolumns, 0, 0)) == 0)
+       return ERR;
 
-       T(("creating curscr"));
-       if ((curscr = newwin(slines, scolumns, 0, 0)) == 0)
-               return ERR;
+    T(("creating curscr"));
+    if ((curscr = newwin(slines, scolumns, 0, 0)) == 0)
+       return ERR;
 
-       SP->_newscr = newscr;
-       SP->_curscr = curscr;
+    SP->_newscr = newscr;
+    SP->_curscr = curscr;
 #if USE_SIZECHANGE
-       SP->_resize = resizeterm;
+    SP->_resize = resizeterm;
 #endif
 
-       newscr->_clear = TRUE;
-       curscr->_clear = FALSE;
-
-       for (i=0, rsp = rippedoff; rsp->line && (i < N_RIPS); rsp++, i++) {
-         if (rsp->hook) {
-             WINDOW *w;
-             int count = (rsp->line < 0) ? -rsp->line : rsp->line;
-
-             if (rsp->line < 0) {
-                 w = newwin(count,scolumns,SP->_lines_avail - count,0);
-                 if (w) {
-                     rsp->w = w;
-                     rsp->hook(w, scolumns);
-                     bottom_stolen += count;
-                 }
-                 else
+    newscr->_clear = TRUE;
+    curscr->_clear = FALSE;
+
+    for (i = 0, rsp = rippedoff; rsp->line && (i < N_RIPS); rsp++, i++) {
+       if (rsp->hook) {
+           WINDOW *w;
+           int count = (rsp->line < 0) ? -rsp->line : rsp->line;
+
+           if (rsp->line < 0) {
+               w = newwin(count, scolumns, SP->_lines_avail - count, 0);
+               if (w) {
+                   rsp->w = w;
+                   rsp->hook(w, scolumns);
+                   bottom_stolen += count;
+               } else
                    return ERR;
-             } else {
-                 w = newwin(count,scolumns, 0, 0);
-                 if (w) {
-                     rsp->w = w;
-                     rsp->hook(w, scolumns);
-                     SP->_topstolen += count;
-                 }
-                 else
+           } else {
+               w = newwin(count, scolumns, 0, 0);
+               if (w) {
+                   rsp->w = w;
+                   rsp->hook(w, scolumns);
+                   SP->_topstolen += count;
+               } else
                    return ERR;
-             }
-             SP->_lines_avail -= count;
-         }
-         rsp->line = 0;
+           }
+           SP->_lines_avail -= count;
        }
-       /* reset the stack */
-       rsp = rippedoff;
+       rsp->line = 0;
+    }
+    /* reset the stack */
+    rsp = rippedoff;
 
-       T(("creating stdscr"));
-       assert ((SP->_lines_avail + SP->_topstolen + bottom_stolen) == slines);
-       if ((stdscr = newwin(LINES = SP->_lines_avail, scolumns, 0, 0)) == 0)
-               return ERR;
-       SP->_stdscr = stdscr;
+    T(("creating stdscr"));
+    assert((SP->_lines_avail + SP->_topstolen + bottom_stolen) == slines);
+    if ((stdscr = newwin(LINES = SP->_lines_avail, scolumns, 0, 0)) == 0)
+       return ERR;
+    SP->_stdscr = stdscr;
 
-       def_shell_mode();
-       def_prog_mode();
+    def_shell_mode();
+    def_prog_mode();
 
-       return OK;
+    return OK;
 }
 
 /* The internal implementation interprets line as the number of
    lines to rip off from the top or bottom.
    */
 int
-_nc_ripoffline(int line, int (*init)(WINDOW *,int))
+_nc_ripoffline(int line, int (*init) (WINDOW *, int))
 {
     if (line == 0)
-       return(OK);
+       return (OK);
 
     if (rsp >= rippedoff + N_RIPS)
-       return(ERR);
+       return (ERR);
 
     rsp->line = line;
     rsp->hook = init;
-    rsp->w    = 0;
+    rsp->w = 0;
     rsp++;
 
-    return(OK);
+    return (OK);
 }
 
 int
-ripoffline(int line, int (*init)(WINDOW *, int))
+ripoffline(int line, int (*init) (WINDOW *, int))
 {
     T((T_CALLED("ripoffline(%d,%p)"), line, init));
 
     if (line == 0)
        returnCode(OK);
 
-    returnCode(_nc_ripoffline ((line<0) ? -1 : 1, init));
+    returnCode(_nc_ripoffline((line < 0) ? -1 : 1, init));
 }
index 9b9b09a4d064a2b0b11b748c7cbf593b821cfa08..21eae687c67f5a3745da3e6579650fe15b8954fa 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 <ctype.h>
 #include <term.h>      /* num_labels, label_*, plab_norm */
 
-MODULE_ID("$Id: lib_slk.c,v 1.16 1999/03/03 23:44:22 juergen Exp $")
+MODULE_ID("$Id: lib_slk.c,v 1.17 1999/10/30 23:00:16 tom Exp $")
 
 /*
  * We'd like to move these into the screen context structure, but cannot,
  * because slk_init() is called before initscr()/newterm().
  */
-int _nc_slk_format;  /* one more than format specified in slk_init() */
+int _nc_slk_format = 0;  /* one more than format specified in slk_init() */
 
 /*
  * Paint the info line for the PC style SLK emulation.
index 007ef55cd3baa162468f363911606bc0c0c91850..e48b864f497da09fafdaf9e5c2274ec10053e2e7 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,8 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
-
 /*
 **     lib_vline.c
 **
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_vline.c,v 1.4 1998/06/28 00:10:12 tom Exp $")
+MODULE_ID("$Id: lib_vline.c,v 1.5 2000/04/29 21:14:11 tom Exp $")
 
-int wvline(WINDOW *win, chtype ch, int n)
+int
+wvline(WINDOW *win, chtype ch, int n)
 {
-int   code = ERR;
-short row, col;
-short end;
+    int code = ERR;
+    NCURSES_SIZE_T row, col;
+    NCURSES_SIZE_T end;
 
-       T((T_CALLED("wvline(%p,%s,%d)"), win, _tracechtype(ch), n));
+    T((T_CALLED("wvline(%p,%s,%d)"), win, _tracechtype(ch), n));
 
-       if (win) {
-               row = win->_cury;
-               col = win->_curx;
-               end = row + n - 1;
-               if (end > win->_maxy)
-                       end = win->_maxy;
+    if (win) {
+       row = win->_cury;
+       col = win->_curx;
+       end = row + n - 1;
+       if (end > win->_maxy)
+           end = win->_maxy;
 
-               if (ch == 0)
-                       ch = ACS_VLINE;
-               ch = _nc_render(win, ch);
+       if (ch == 0)
+           ch = ACS_VLINE;
+       ch = _nc_render(win, ch);
 
-               while(end >= row) {
-                       struct ldat *line = &(win->_line[end]);
-                       line->text[col] = ch;
-                       CHANGED_CELL(line, col);
-                       end--;
-               }
-
-               _nc_synchook(win);
-               code = OK;
+       while (end >= row) {
+           struct ldat *line = &(win->_line[end]);
+           line->text[col] = ch;
+           CHANGED_CELL(line, col);
+           end--;
        }
-       returnCode(code);
+
+       _nc_synchook(win);
+       code = OK;
+    }
+    returnCode(code);
 }
index 74d46ae9efa4214e57453baba2ddf2d96bb7d2da..a2fe4d86d650c54bf25004d90ded65fe364cc41b 100644 (file)
@@ -32,7 +32,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: version.c,v 1.1 1999/10/23 13:28:49 tom Exp $")
+MODULE_ID("$Id: version.c,v 1.2 1999/12/04 21:27:23 tom Exp $")
 
 const char *
 curses_version(void)
@@ -40,9 +40,8 @@ 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,
+    sprintf(my_version, "ncurses %s.%d",
+       NCURSES_VERSION,
        NCURSES_VERSION_PATCH);
     returnPtr(my_version);
 }
index 1b91476cbfd3dbced32d97e6943597da5f50752c..8121ff154dd58085c1d567821d9d12e104043700 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -32,7 +32,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: wresize.c,v 1.12 1999/02/27 18:57:31 tom Exp $")
+MODULE_ID("$Id: wresize.c,v 1.16 2000/03/05 00:14:35 tom Exp $")
 
 /*
  * Reallocate a curses WINDOW struct to either shrink or grow to the specified
@@ -47,120 +47,133 @@ MODULE_ID("$Id: wresize.c,v 1.12 1999/02/27 18:57:31 tom Exp $")
 int
 wresize(WINDOW *win, int ToLines, int ToCols)
 {
-       register int row;
-       int size_x, size_y;
-       struct ldat *pline;
-       chtype blank;
+    register int row;
+    int size_x, size_y;
+    struct ldat *pline;
+    chtype blank;
 
 #ifdef TRACE
-       T((T_CALLED("wresize(%p,%d,%d)"), win, ToLines, ToCols));
-       if (win) {
-         TR(TRACE_UPDATE, ("...beg (%d, %d), max(%d,%d), reg(%d,%d)",
-                           win->_begy, win->_begx,
-                           win->_maxy, win->_maxx,
-                           win->_regtop, win->_regbottom));
-         if (_nc_tracing & TRACE_UPDATE)
+    T((T_CALLED("wresize(%p,%d,%d)"), win, ToLines, ToCols));
+    if (win) {
+       TR(TRACE_UPDATE, ("...beg (%d, %d), max(%d,%d), reg(%d,%d)",
+               win->_begy, win->_begx,
+               win->_maxy, win->_maxx,
+               win->_regtop, win->_regbottom));
+       if (_nc_tracing & TRACE_UPDATE)
            _tracedump("...before", win);
-       }
+    }
 #endif
 
-       if (!win || --ToLines < 0 || --ToCols < 0)
-               returnCode(ERR);
+    if (!win || --ToLines < 0 || --ToCols < 0)
+       returnCode(ERR);
 
-       size_x = win->_maxx;
-       size_y = win->_maxy;
+    size_x = win->_maxx;
+    size_y = win->_maxy;
 
-       if (ToLines == size_y
-        && ToCols  == size_x)
-               returnCode(OK);
-
-       pline  = (win->_flags & _SUBWIN) ? win->_parent->_line : 0;
+    if (ToLines == size_y
+       && ToCols == size_x)
+       returnCode(OK);
 
+    if ((win->_flags & _SUBWIN)) {
        /*
-        * If the number of lines has changed, adjust the size of the overall
-        * vector:
+        * Check if the new limits will fit into the parent window's size.  If
+        * not, do not resize.  We could adjust the location of the subwindow,
+        * but the application may not like that.
         */
-       if (ToLines != size_y) {
-               if (! (win->_flags & _SUBWIN)) {
-                       for (row = ToLines+1; row <= size_y; row++)
-                               free((char *)(win->_line[row].text));
-               }
-
-               win->_line = ld_ALLOC(win->_line, ToLines+1);
-               if (win->_line == 0)
-                       returnCode(ERR);
-
-               for (row = size_y+1; row <= ToLines; row++) {
-                       win->_line[row].text      = 0;
-                       win->_line[row].firstchar = 0;
-                       win->_line[row].lastchar  = ToCols;
-                       if ((win->_flags & _SUBWIN)) {
-                               win->_line[row].text =
-                               &pline[win->_begy + row].text[win->_begx];
-                       }
-               }
+       if (win->_pary + ToLines > win->_parent->_maxy
+           || win->_parx + ToCols > win->_parent->_maxx) {
+           returnCode(ERR);
        }
-
-       /*
-        * Adjust the width of the columns:
-        */
-       blank = _nc_background(win);
-       for (row = 0; row <= ToLines; row++) {
-               chtype  *s      = win->_line[row].text;
-               int     begin   = (s == 0) ? 0 : size_x + 1;
-               int     end     = ToCols;
-
-               if_USE_SCROLL_HINTS(win->_line[row].oldindex = row);
-
-               if (ToCols != size_x || s == 0) {
-                       if (! (win->_flags & _SUBWIN)) {
-                               win->_line[row].text = s = c_ALLOC(s, ToCols+1);
-                               if (win->_line[row].text == 0)
-                                       returnCode(ERR);
-                       } else if (s == 0) {
-                               win->_line[row].text = s =
-                               &pline[win->_begy + row].text[win->_begx];
-                       }
-
-                       if (end >= begin) {     /* growing */
-                               if (win->_line[row].firstchar < begin)
-                                       win->_line[row].firstchar = begin;
-                               win->_line[row].lastchar = ToCols;
-                               do {
-                                       s[end] = blank;
-                               } while (--end >= begin);
-                       } else {                /* shrinking */
-                               win->_line[row].firstchar = 0;
-                               win->_line[row].lastchar  = ToCols;
-                       }
-               }
+       pline = win->_parent->_line;
+    } else {
+       pline = 0;
+    }
+
+    /*
+     * If the number of lines has changed, adjust the size of the overall
+     * vector:
+     */
+    if (ToLines != size_y) {
+       if (!(win->_flags & _SUBWIN)) {
+           for (row = ToLines + 1; row <= size_y; row++)
+               free((char *) (win->_line[row].text));
        }
 
-       /*
-        * Finally, adjust the parameters showing screen size and cursor
-        * position:
-        */
-       win->_maxx = ToCols;
-       win->_maxy = ToLines;
-
-       if (win->_regtop > win->_maxy)
-               win->_regtop = win->_maxy;
-       if (win->_regbottom > win->_maxy
-        || win->_regbottom == size_y)
-               win->_regbottom = win->_maxy;
-
-       if (win->_curx > win->_maxx)
-               win->_curx = win->_maxx;
-       if (win->_cury > win->_maxy)
-               win->_cury = win->_maxy;
+       win->_line = ld_ALLOC(win->_line, ToLines + 1);
+       if (win->_line == 0)
+           returnCode(ERR);
+
+       for (row = size_y + 1; row <= ToLines; row++) {
+           win->_line[row].text = 0;
+           win->_line[row].firstchar = 0;
+           win->_line[row].lastchar = ToCols;
+           if ((win->_flags & _SUBWIN)) {
+               win->_line[row].text =
+                   &pline[win->_pary + row].text[win->_parx];
+           }
+       }
+    }
+
+    /*
+     * Adjust the width of the columns:
+     */
+    blank = _nc_background(win);
+    for (row = 0; row <= ToLines; row++) {
+       chtype *s = win->_line[row].text;
+       int begin = (s == 0) ? 0 : size_x + 1;
+       int end = ToCols;
+
+       if_USE_SCROLL_HINTS(win->_line[row].oldindex = row);
+
+       if (ToCols != size_x || s == 0) {
+           if (!(win->_flags & _SUBWIN)) {
+               win->_line[row].text = s = c_ALLOC(s, ToCols + 1);
+               if (win->_line[row].text == 0)
+                   returnCode(ERR);
+           } else if (s == 0) {
+               win->_line[row].text = s =
+                   &pline[win->_pary + row].text[win->_parx];
+           }
+
+           if (end >= begin) { /* growing */
+               if (win->_line[row].firstchar < begin)
+                   win->_line[row].firstchar = begin;
+               win->_line[row].lastchar = ToCols;
+               do {
+                   s[end] = blank;
+               } while (--end >= begin);
+           } else {            /* shrinking */
+               win->_line[row].firstchar = 0;
+               win->_line[row].lastchar = ToCols;
+           }
+       }
+    }
+
+    /*
+     * Finally, adjust the parameters showing screen size and cursor
+     * position:
+     */
+    win->_maxx = ToCols;
+    win->_maxy = ToLines;
+
+    if (win->_regtop > win->_maxy)
+       win->_regtop = win->_maxy;
+    if (win->_regbottom > win->_maxy
+       || win->_regbottom == size_y)
+       win->_regbottom = win->_maxy;
+
+    if (win->_curx > win->_maxx)
+       win->_curx = win->_maxx;
+    if (win->_cury > win->_maxy)
+       win->_cury = win->_maxy;
 
 #ifdef TRACE
-       TR(TRACE_UPDATE, ("...beg (%d, %d), max(%d,%d), reg(%d,%d)",
-               win->_begy, win->_begx,
-               win->_maxy, win->_maxx,
-               win->_regtop, win->_regbottom));
-       if (_nc_tracing & TRACE_UPDATE)
-               _tracedump("...after:", win);
+    TR(TRACE_UPDATE, ("...beg (%d, %d), max(%d,%d), reg(%d,%d)",
+           win->_begy, win->_begx,
+           win->_maxy, win->_maxx,
+           win->_regtop, win->_regbottom));
+    if (_nc_tracing & TRACE_UPDATE)
+       _tracedump("...after:", win);
 #endif
-       returnCode(OK);
+    returnCode(OK);
 }
index 76a923059e766c21ef33cabb300fcdc5e4be8d81..d3d5f296ef8b5f4cab04fc4b6ab5b4e6e4df45cc 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -33,7 +33,7 @@
 
 
 /*
- * $Id: curses.priv.h,v 1.144 1999/10/22 23:15:37 tom Exp $
+ * $Id: curses.priv.h,v 1.162 2000/06/24 21:06:10 tom Exp $
  *
  *     curses.priv.h
  *
@@ -97,8 +97,13 @@ extern int errno;
 #include <nc_panel.h>
 
 /* Some systems have a broken 'select()', but workable 'poll()'.  Use that */
-#if HAVE_POLL && HAVE_SYS_STROPTS_H && HAVE_POLL_H
+#if HAVE_WORKING_POLL
 #define USE_FUNC_POLL 1
+#ifdef HAVE_POLL_H
+#include <poll.h>
+#else
+#include <sys/poll.h>
+#endif
 #else
 #define USE_FUNC_POLL 0
 #endif
@@ -305,7 +310,7 @@ struct screen {
        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 */
+       /* used in tty_update.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)                */
@@ -317,6 +322,8 @@ 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             _cuf_ch_cost;   /* cost of (parm_cursor_right)      */
+       int             _inline_cost;   /* cost of inline-move              */
        int             _smir_cost;     /* cost of (enter_insert_mode)      */
        int             _rmir_cost;     /* cost of (exit_insert_mode)       */
        int             _ip_cost;       /* cost of (insert_padding)         */
@@ -332,7 +339,12 @@ struct screen {
        int             _color_count;   /* count of colors in palette        */
        unsigned short  *_color_pairs;  /* screen's color pair list          */
        int             _pair_count;    /* count of color pairs              */
-       int             _default_color; /* use default colors                */
+#ifdef NCURSES_EXT_FUNCS
+       bool            _default_color; /* use default colors                */
+       bool            _has_sgr_39_49; /* has ECMA default color support    */
+       int             _default_fg;    /* assumed default foreground        */
+       int             _default_bg;    /* assumed default background        */
+#endif
        chtype          _xmc_suppress;  /* attributes to suppress if xmc     */
        chtype          _xmc_triggers;  /* attributes to process if xmc      */
        chtype          _acs_map[ACS_LEN];
@@ -390,6 +402,7 @@ struct screen {
        unsigned long   *oldhash, *newhash;
 
        bool            _cleanup;       /* cleanup after int/quit signal */
+       int             (*_outch)(int); /* output handler if not putc */
 };
 
 extern SCREEN *_nc_screen_chain;
@@ -454,6 +467,14 @@ typedef    struct {
 #define        F_OK    0               /* Test for existence.  */
 #endif
 
+#if HAVE_FCNTL_H
+#include <fcntl.h>             /* may define O_BINARY  */
+#endif
+
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
 #define TextOf(c)    ((c) & (chtype)A_CHARTEXT)
 #define AttrOf(c)    ((c) & (chtype)A_ATTRIBUTES)
 
@@ -484,10 +505,12 @@ typedef   struct {
        line->lastchar = end
 
 #define SIZEOF(v) (sizeof(v)/sizeof(v[0]))
-#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 FreeIfNeeded(p)  if ((p) != 0) free(p)
+
+/* FreeAndNull() is not a comma-separated expression because some compilers
+ * do not accept a mixture of void with values.
+ */
 #define FreeAndNull(p)   free(p); p = 0
 
 #include <nc_alloc.h>
@@ -540,15 +563,15 @@ extern const char *_nc_visbuf2(int, const char *);
 #define XMC_CHANGES(c) ((c) & SP->_xmc_suppress)
 
 
-#define toggle_attr_on(S,at) \
+#define toggle_attr_on(S,at) {\
    if (PAIR_NUMBER(at) > 0)\
       (S) = ((S) & ALL_BUT_COLOR) | (at);\
    else\
       (S) |= (at);\
-   T(("new attribute is %s", _traceattr((S))))
+   T(("new attribute is %s", _traceattr((S))));}
 
 
-#define toggle_attr_off(S,at) \
+#define toggle_attr_off(S,at) {\
    if (IGNORE_COLOR_OFF == TRUE) {\
       if (PAIR_NUMBER(at) == 0xff) /* turn off color */\
         (S) &= ~(at);\
@@ -560,7 +583,7 @@ extern const char *_nc_visbuf2(int, const char *);
       else /* leave color alone */\
         (S) &= ~(at);\
    }\
-   T(("new attribute is %s", _traceattr((S))));
+   T(("new attribute is %s", _traceattr((S))));}
 
 #define DelCharCost(count) \
                ((parm_dch != 0) \
@@ -593,19 +616,10 @@ extern const char *_nc_visbuf2(int, const char *);
                        }
 #else
 #define UpdateAttrs(c) if (SP->_current_attr != AttrOf(c)) \
-                               vidattr(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)
-
-#ifdef NCURSES_EXPANDED
+#if defined(NCURSES_EXPANDED) && defined(NCURSES_EXT_FUNCS)
 
 #undef  toggle_attr_on
 #define toggle_attr_on(S,at) _nc_toggle_attr_on(&(S), at)
@@ -615,10 +629,6 @@ extern void _nc_toggle_attr_on(attr_t *, attr_t);
 #define toggle_attr_off(S,at) _nc_toggle_attr_off(&(S), at)
 extern void _nc_toggle_attr_off(attr_t *, attr_t);
 
-#undef  can_clear_with
-#define can_clear_with(ch) _nc_can_clear_with(ch)
-extern int _nc_can_clear_with(chtype);
-
 #undef  DelCharCost
 #define DelCharCost(count) _nc_DelCharCost(count)
 extern int _nc_DelCharCost(int);
@@ -641,13 +651,6 @@ extern void _nc_expanded(void);
 #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);
@@ -687,7 +690,7 @@ extern int _nc_has_mouse(void);
 extern char * _nc_printf_string(const char *fmt, va_list ap);
 
 /* tries.c */
-extern void _nc_add_to_try(struct tries **tree, char *str, unsigned short code);
+extern void _nc_add_to_try(struct tries **tree, const char *str, unsigned short code);
 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);
@@ -707,18 +710,19 @@ 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_do_color(int, int, bool, int (*)(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_flush(void);
 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_set_buffer(FILE *, bool);
 extern void _nc_signal_handler(bool);
 extern void _nc_synchook(WINDOW *win);
 extern void _nc_trace_tries(struct tries *tree);
@@ -727,6 +731,10 @@ extern void _nc_trace_tries(struct tries *tree);
 extern void _nc_update_screensize(void);
 #endif
 
+#ifdef USE_WIDEC_SUPPORT
+extern int _nc_utf8_outch(int);
+#endif
+
 /* scroll indices */
 extern int *_nc_oldnums;
 
@@ -737,7 +745,6 @@ extern int *_nc_oldnums;
                _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
index 83a1e0e7d348888f5544789f0ec4503f28417afb..82f3e06fdcf3bc38d3a51a2b5bd74bdbe0a92c42 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc.                   *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *  Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,1998,1999         *
+ *  Author: Thomas E. Dickey <dickey@clark.net> 1996-2000                   *
  ****************************************************************************/
 /* LINTLIBRARY */
 
@@ -42,6 +42,10 @@ int  *_nc_oldnums;
 void   _nc_scroll_optimize(void)
                { /* void */ }
 
+#undef _nc_linedump
+void   _nc_linedump(void)
+               { /* void */ }
+
 /* ./tty/hashmap.c */
 
 #include <term.h>
@@ -196,6 +200,8 @@ int wclrtoeol(
 
 /* ./base/lib_color.c */
 
+#include <tic.h>
+
 #undef COLOR_PAIRS
 int    COLOR_PAIRS;
 #undef COLORS
@@ -245,6 +251,7 @@ int pair_content(
 
 #undef _nc_do_color
 void   _nc_do_color(
+               int     old_pair, 
                int     pair, 
                bool    reverse, 
                int     (*outc)(
@@ -446,6 +453,10 @@ int        echochar(
                const chtype z)
                { return(*(int *)0); }
 
+#undef erase
+int    erase(void)
+               { return(*(int *)0); }
+
 #undef getbkgd
 chtype getbkgd(
                WINDOW  *z)
@@ -888,6 +899,18 @@ void       timeout(
                int     z)
                { /* void */ }
 
+#undef touchline
+int    touchline(
+               WINDOW  *a1, 
+               int     a2, 
+               int     z)
+               { return(*(int *)0); }
+
+#undef touchwin
+int    touchwin(
+               WINDOW  *z)
+               { return(*(int *)0); }
+
 #undef untouchwin
 int    untouchwin(
                WINDOW  *z)
@@ -1059,8 +1082,6 @@ int       winchnstr(
 
 /* ./base/lib_initscr.c */
 
-#include <tic.h>
-
 #undef initscr
 WINDOW *initscr(void)
                { return(*(WINDOW **)0); }
@@ -1192,6 +1213,9 @@ int       mvcur(
                int     xnew)
                { return(*(int *)0); }
 
+#undef _nc_optimize_enable
+int    _nc_optimize_enable;
+
 /* ./base/lib_mvwin.c */
 
 #undef mvwin
@@ -1677,21 +1701,47 @@ int     wtouchln(
 
 /* ./trace/lib_traceatr.c */
 
-#undef _nc_lib_traceatr
-void   _nc_lib_traceatr(void)
-               { /* void */ }
+#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); }
+
+#undef _tracechtype
+char   *_tracechtype(
+               chtype  ch)
+               { return(*(char **)0); }
 
 /* ./trace/lib_tracedmp.c */
 
-#undef _nc_lib_tracedmp
-void   _nc_lib_tracedmp(void)
+#undef _tracedump
+void   _tracedump(
+               const char *name, 
+               WINDOW  *win)
                { /* void */ }
 
 /* ./trace/lib_tracemse.c */
 
-#undef _nc_lib_tracemouse
-void   _nc_lib_tracemouse(void)
-               { /* void */ }
+#undef _tracemouse
+char   *_tracemouse(
+               MEVENT const *ep)
+               { return(*(char **)0); }
 
 /* ./tty/lib_tstp.c */
 
@@ -1705,6 +1755,10 @@ void     _nc_signal_handler(
 
 /* ./base/lib_ungetch.c */
 
+#undef _nc_fifo_dump
+void   _nc_fifo_dump(void)
+               { /* void */ }
+
 #undef ungetch
 int    ungetch(
                int     ch)
@@ -1819,6 +1873,7 @@ char      *_nc_printf_string(
 /* ./tty/tty_update.c */
 
 #include <sys/time.h>
+#include <sys/times.h>
 
 #undef doupdate
 int    doupdate(void)
@@ -1936,6 +1991,12 @@ int      keyok(
 int    use_default_colors(void)
                { return(*(int *)0); }
 
+#undef assume_default_colors
+int    assume_default_colors(
+               int     fg, 
+               int     bg)
+               { return(*(int *)0); }
+
 /* ./base/lib_freeall.c */
 
 #include <term_entry.h>
@@ -2017,7 +2078,7 @@ int       _nc_access(
 #undef _nc_add_to_try
 void   _nc_add_to_try(
                struct tries **tree, 
-               char    *str, 
+               const char *str, 
                unsigned short code)
                { /* void */ }
 
@@ -2191,7 +2252,7 @@ ENTRY     *_nc_tail;
 
 #undef _nc_free_entries
 void   _nc_free_entries(
-               ENTRY   *head)
+               ENTRY   *headp)
                { /* void */ }
 
 #undef _nc_entry_match
@@ -2211,7 +2272,8 @@ void      _nc_read_entry_source(
                { /* void */ }
 
 #undef _nc_resolve_uses
-int    _nc_resolve_uses(void)
+int    _nc_resolve_uses(
+               bool    fullresolve)
                { return(*(int *)0); }
 
 /* ./tinfo/comp_scan.c */
@@ -2226,6 +2288,10 @@ long     _nc_comment_start;
 long   _nc_comment_end;
 #undef _nc_start_line
 long   _nc_start_line;
+#undef _nc_curr_token
+struct token _nc_curr_token;
+#undef _nc_disable_period
+bool   _nc_disable_period;
 
 #undef _nc_get_token
 int    _nc_get_token(void)
@@ -2233,7 +2299,8 @@ int       _nc_get_token(void)
 
 #undef _nc_trans_string
 char   _nc_trans_string(
-               char    *ptr)
+               char    *ptr, 
+               char    *last)
                { return(*(char *)0); }
 
 #undef _nc_push_token
@@ -2301,11 +2368,10 @@ char    *_nc_home_terminfo(void)
 
 #include <init_keytry.h>
 
-#endif
+#undef _nc_tinfo_fkeys
+struct tinfo_fkeys _nc_tinfo_fkeys[];
 
-#undef _nc_tinfo_fkeysf
-struct tinfo_fkeys *_nc_tinfo_fkeysf(void)
-               { return(*(struct tinfo_fkeys **)0); }
+#endif
 
 #undef _nc_init_keytry
 void   _nc_init_keytry(void)
@@ -2645,6 +2711,10 @@ int      delay_output(
                int     ms)
                { return(*(int *)0); }
 
+#undef _nc_flush
+void   _nc_flush(void)
+               { /* void */ }
+
 #undef _nc_outch
 int    _nc_outch(
                int     ch)
@@ -2665,10 +2735,12 @@ int     tputs(
 
 /* ./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 trace
 void   trace(
@@ -2686,8 +2758,34 @@ 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); }
+
+#undef _nc_retrace_ptr
+char   *_nc_retrace_ptr(
+               char    *code)
+               { return(*(char **)0); }
+
+#undef _nc_retrace_win
+WINDOW *_nc_retrace_win(
+               WINDOW  *code)
+               { return(*(WINDOW **)0); }
+
 /* ./trace/lib_tracebits.c */
 
+typedef struct {
+    unsigned int val;
+    const char *name;
+} BITNAMES;
+
 #undef _nc_tracebits
 char   *_nc_tracebits(void)
                { return(*(char **)0); }
@@ -2774,8 +2872,6 @@ char      *const strnames[] = {0};
 char   *const strfnames[] = {0};
 
 /* ./tinfo/parse_entry.c */
-#undef _nc_curr_token
-struct token _nc_curr_token;
 
 #undef _nc_parse_entry
 int    _nc_parse_entry(
@@ -2790,7 +2886,10 @@ int      _nc_capcmp(
                const char *t)
                { return(*(int *)0); }
 
-typedef struct {const char *from; const char *to;} assoc;
+typedef struct {
+    const char *from;
+    const char *to;
+} assoc;
 
 /* ./tinfo/read_entry.c */
 
index 4b9c5dfecefb0775a6d45e442b09516cdf49e23e..12ed6a5f6abab16cd7839ca8a374b69d82df1184 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: modules,v 1.70 1999/10/23 12:39:12 tom Exp $
+# $Id: modules,v 1.72 2000/02/13 01:03:28 tom Exp $
 ##############################################################################
-# Copyright (c) 1998,1999 Free Software Foundation, Inc.                     #
+# Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.                #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -27,7 +27,7 @@
 # authorization.                                                             #
 ##############################################################################
 #
-# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,1998
+# Author: Thomas E. Dickey <dickey@clark.net> 1996-1998
 #
 
 @ base
@@ -165,7 +165,7 @@ 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_termcap    lib             $(tinfo)        ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h $(INCDIR)/capdefaults.c
 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
@@ -177,7 +177,7 @@ 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             $(tinfo)        ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h ../include/parametrized.h
+parse_entry    lib             $(tinfo)        ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h ../include/parametrized.h $(INCDIR)/capdefaults.c
 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)
index 95a9e965c5a78e0e21b5796aa2b8f7570bfaa06f..601fb663b7b6f7a0d491dd334b7f775352c47061 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: add_tries.c,v 1.1 1998/11/08 00:04:18 tom Exp $")
+MODULE_ID("$Id: add_tries.c,v 1.2 2000/03/18 22:23:56 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))
 
-void _nc_add_to_try(struct tries **tree, char *str, unsigned short code)
+void
+_nc_add_to_try(struct tries **tree, const char *str, unsigned short code)
 {
-       static bool     out_of_memory = FALSE;
-       struct tries    *ptr, *savedptr;
-       unsigned char   *txt = (unsigned char *)str;
-
-       if (txt == 0 || *txt == '\0' || out_of_memory || code == 0)
-               return;
-
-       if ((*tree) != 0) {
-               ptr = savedptr = (*tree);
-
-               for (;;) {
-                       unsigned char cmp = *txt;
-
-                       while (!CMP_TRY(ptr->ch, cmp)
-                              &&  ptr->sibling != 0)
-                               ptr = ptr->sibling;
-       
-                       if (CMP_TRY(ptr->ch, cmp)) {
-                               if (*(++txt) == '\0') {
-                                       ptr->value = code;
-                                       return;
-                               }
-                               if (ptr->child != 0)
-                                       ptr = ptr->child;
-                               else
-                                       break;
-                       } else {
-                               if ((ptr->sibling = typeCalloc(struct tries,1)) == 0) {
-                                       out_of_memory = TRUE;
-                                       return;
-                               }
-
-                               savedptr = ptr = ptr->sibling;
-                               SET_TRY(ptr,txt);
-                               ptr->value = 0;
-
-                               break;
-                       }
-               } /* end for (;;) */
-       } else {   /* (*tree) == 0 :: First sequence to be added */
-               savedptr = ptr = (*tree) = typeCalloc(struct tries,1);
-
-               if (ptr == 0) {
-                       out_of_memory = TRUE;
-                       return;
+    static bool out_of_memory = FALSE;
+    struct tries *ptr, *savedptr;
+    unsigned const char *txt = (unsigned const char *) str;
+
+    if (txt == 0 || *txt == '\0' || out_of_memory || code == 0)
+       return;
+
+    if ((*tree) != 0) {
+       ptr = savedptr = (*tree);
+
+       for (;;) {
+           unsigned char cmp = *txt;
+
+           while (!CMP_TRY(ptr->ch, cmp)
+               && ptr->sibling != 0)
+               ptr = ptr->sibling;
+
+           if (CMP_TRY(ptr->ch, cmp)) {
+               if (*(++txt) == '\0') {
+                   ptr->value = code;
+                   return;
+               }
+               if (ptr->child != 0)
+                   ptr = ptr->child;
+               else
+                   break;
+           } else {
+               if ((ptr->sibling = typeCalloc(struct tries, 1)) == 0) {
+                   out_of_memory = TRUE;
+                   return;
                }
 
-               SET_TRY(ptr,txt);
+               savedptr = ptr = ptr->sibling;
+               SET_TRY(ptr, txt);
                ptr->value = 0;
+
+               break;
+           }
+       }                       /* end for (;;) */
+    } else {                   /* (*tree) == 0 :: First sequence to be added */
+       savedptr = ptr = (*tree) = typeCalloc(struct tries, 1);
+
+       if (ptr == 0) {
+           out_of_memory = TRUE;
+           return;
        }
 
-           /* at this point, we are adding to the try.  ptr->child == 0 */
+       SET_TRY(ptr, txt);
+       ptr->value = 0;
+    }
 
-       while (*txt) {
-               ptr->child = typeCalloc(struct tries,1);
+    /* at this point, we are adding to the try.  ptr->child == 0 */
 
-               ptr = ptr->child;
+    while (*txt) {
+       ptr->child = typeCalloc(struct tries, 1);
 
-               if (ptr == 0) {
-                       out_of_memory = TRUE;
+       ptr = ptr->child;
 
-                       while ((ptr = savedptr) != 0) {
-                               savedptr = ptr->child;
-                               free(ptr);
-                       }
+       if (ptr == 0) {
+           out_of_memory = TRUE;
 
-                       return;
-               }
+           while ((ptr = savedptr) != 0) {
+               savedptr = ptr->child;
+               free(ptr);
+           }
 
-               SET_TRY(ptr,txt);
-               ptr->value = 0;
+           return;
        }
 
-       ptr->value = code;
-       return;
+       SET_TRY(ptr, txt);
+       ptr->value = 0;
+    }
+
+    ptr->value = code;
+    return;
 }
index 570b48a9af8066b1296a2df0bce35450ad05ec22..17489372e46437534585f040a9b95aaafc980f2a 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*
  * alloc_entry.c -- allocation functions for terminfo entries
  *
 #include <tic.h>
 #include <term_entry.h>
 
-MODULE_ID("$Id: alloc_entry.c,v 1.30 1999/03/01 02:03:45 tom Exp $")
+MODULE_ID("$Id: alloc_entry.c,v 1.32 2000/03/12 00:16:31 tom Exp $")
 
 #define ABSENT_OFFSET    -1
 #define CANCELLED_OFFSET -2
 
 #define MAX_STRTAB     4096    /* documented maximum entry size */
 
-static char    stringbuf[MAX_STRTAB];  /* buffer for string capabilities */
-static size_t  next_free;              /* next free character in stringbuf */
+static char stringbuf[MAX_STRTAB];     /* buffer for string capabilities */
+static size_t next_free;       /* next free character in stringbuf */
 
-void _nc_init_entry(TERMTYPE *const tp)
+void
+_nc_init_entry(TERMTYPE * const tp)
 /* initialize a terminal type data block */
 {
-int    i;
+    int i;
 
 #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;
+    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);
+    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_boolean(i, tp)
+       tp->Booleans[i] = FALSE;
 
-       for_each_number(i,tp)
-               tp->Numbers[i] = ABSENT_NUMERIC;
+    for_each_number(i, tp)
+       tp->Numbers[i] = ABSENT_NUMERIC;
 
-       for_each_string(i,tp)
-               tp->Strings[i] = ABSENT_STRING;
+    for_each_string(i, tp)
+       tp->Strings[i] = ABSENT_STRING;
 
-       next_free = 0;
+    next_free = 0;
 }
 
-ENTRY *_nc_copy_entry(ENTRY *oldp)
+ENTRY *
+_nc_copy_entry(ENTRY * oldp)
 {
-       ENTRY *newp = typeCalloc(ENTRY,1);
+    ENTRY *newp = typeCalloc(ENTRY, 1);
 
-       if (newp != 0) {
-           *newp = *oldp;
-           _nc_copy_termtype(&(newp->tterm), &(oldp->tterm));
-       }
-       return newp;
+    if (newp != 0) {
+       *newp = *oldp;
+       _nc_copy_termtype(&(newp->tterm), &(oldp->tterm));
+    }
+    return newp;
 }
 
-char *_nc_save_str(const char *const string)
+char *
+_nc_save_str(const char *const string)
 /* save a copy of string in the string buffer */
 {
-size_t old_next_free = next_free;
-size_t len = strlen(string) + 1;
-
-       if (next_free + len < MAX_STRTAB)
-       {
-               strcpy(&stringbuf[next_free], string);
-               DEBUG(7, ("Saved string %s", _nc_visbuf(string)));
-               DEBUG(7, ("at location %d", (int) next_free));
-               next_free += len;
-       }
-       return(stringbuf + old_next_free);
+    size_t old_next_free = next_free;
+    size_t len = strlen(string) + 1;
+
+    if (next_free + len < MAX_STRTAB) {
+       strcpy(&stringbuf[next_free], string);
+       DEBUG(7, ("Saved string %s", _nc_visbuf(string)));
+       DEBUG(7, ("at location %d", (int) next_free));
+       next_free += len;
+    }
+    return (stringbuf + old_next_free);
 }
 
-void _nc_wrap_entry(ENTRY *const ep)
+void
+_nc_wrap_entry(ENTRY * const ep)
 /* copy the string parts to allocated storage, preserving pointers to it */
 {
-int    offsets[MAX_ENTRY_SIZE/2], useoffsets[MAX_USES];
-int    i, n;
-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] = tp->Strings[i] - stringbuf;
-       }
+    int offsets[MAX_ENTRY_SIZE / 2], useoffsets[MAX_USES];
+    int i, n;
+    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] = tp->Strings[i] - stringbuf;
+    }
 
-       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;
-       }
+    for (i = 0; i < ep->nuses; i++) {
+       if (ep->uses[i].name == 0)
+           useoffsets[i] = ABSENT_OFFSET;
+       else
+           useoffsets[i] = ep->uses[i].name - stringbuf;
+    }
 
-       if ((tp->str_table = typeMalloc(char, next_free)) == (char *)0)
-               _nc_err_abort("Out of memory");
-       (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
-                       tp->Strings[i] = tp->str_table + offsets[i];
-       }
+    if ((tp->str_table = typeMalloc(char, next_free)) == (char *) 0)
+         _nc_err_abort("Out of memory");
+    (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
+           tp->Strings[i] = tp->str_table + offsets[i];
+    }
 
 #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;
-               }
+    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 *)(tp->str_table + useoffsets[i]);
-       }
+    for (i = 0; i < ep->nuses; i++) {
+       if (useoffsets[i] == ABSENT_OFFSET)
+           ep->uses[i].name = 0;
+       else
+           ep->uses[i].name = (tp->str_table + useoffsets[i]);
+    }
 }
 
-void _nc_merge_entry(TERMTYPE *const to, TERMTYPE *const from)
+void
+_nc_merge_entry(TERMTYPE * const to, TERMTYPE * const from)
 /* merge capabilities from `from' entry into `to' entry */
 {
-    int        i;
+    int i;
 
 #if NCURSES_XNAMES
     _nc_align_termtype(to, from);
 #endif
-    for_each_boolean(i, from)
-    {
-       int     mergebool = from->Booleans[i];
+    for_each_boolean(i, from) {
+       int mergebool = from->Booleans[i];
 
        if (mergebool == CANCELLED_BOOLEAN)
            to->Booleans[i] = FALSE;
@@ -198,9 +200,8 @@ void _nc_merge_entry(TERMTYPE *const to, TERMTYPE *const from)
            to->Booleans[i] = mergebool;
     }
 
-    for_each_number(i, from)
-    {
-       int     mergenum = from->Numbers[i];
+    for_each_number(i, from) {
+       int mergenum = from->Numbers[i];
 
        if (mergenum == CANCELLED_NUMERIC)
            to->Numbers[i] = ABSENT_NUMERIC;
@@ -213,9 +214,8 @@ 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_each_string(i, from)
-    {
-       char    *mergestring = from->Strings[i];
+    for_each_string(i, from) {
+       char *mergestring = from->Strings[i];
 
        if (mergestring == CANCELLED_STRING)
            to->Strings[i] = ABSENT_STRING;
index a1bf9b0733f022b835437119475e4304fcd20c55..660381a32b5f036100398457ba33678a8f4b8ca1 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1999,2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -30,7 +30,6 @@
  *  Author: Thomas E. Dickey <dickey@clark.net> 1999                        *
  ****************************************************************************/
 
-
 /*
  * align_ttype.c --  functions for TERMTYPE
  *
 #include <tic.h>
 #include <term_entry.h>
 
-MODULE_ID("$Id: alloc_ttype.c,v 1.6 1999/03/01 22:10:44 tom Exp $")
+MODULE_ID("$Id: alloc_ttype.c,v 1.8 2000/03/25 17:03:11 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)
+static int
+merge_names(char **dst, char **a, int na, char **b, int nb)
 {
     int n = 0;
     while (na && nb) {
@@ -78,7 +78,8 @@ static int merge_names(char **dst, char **a, int na, char **b, int nb)
     return n;
 }
 
-static bool find_name(char **table, int length, char *name)
+static bool
+find_name(char **table, int length, char *name)
 {
     while (length-- > 0) {
        if (!strcmp(*table++, name)) {
@@ -90,7 +91,9 @@ static bool find_name(char **table, int length, char *name)
     return FALSE;
 }
 
-static void realign_data(TERMTYPE *to, char **ext_Names, int ext_Booleans, int ext_Numbers, int ext_Strings)
+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);
@@ -98,9 +101,9 @@ static void realign_data(TERMTYPE *to, char **ext_Names, int ext_Booleans, int e
     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--) {
+       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 {
@@ -112,24 +115,24 @@ static void realign_data(TERMTYPE *to, char **ext_Names, int ext_Booleans, int e
     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])) {
+       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;
+       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 = 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;
@@ -142,7 +145,8 @@ static void realign_data(TERMTYPE *to, char **ext_Names, int ext_Booleans, int e
 /*
  * Returns the first index in ext_Names[] for the given token-type
  */
-static int _nc_first_ext_name(TERMTYPE *tp, int token_type)
+static int
+_nc_first_ext_name(TERMTYPE * tp, int token_type)
 {
     int first;
 
@@ -166,20 +170,21 @@ static int _nc_first_ext_name(TERMTYPE *tp, int token_type)
 /*
  * Returns the last index in ext_Names[] for the given token-type
  */
-static int _nc_last_ext_name(TERMTYPE *tp, int token_type)
+static int
+_nc_last_ext_name(TERMTYPE * tp, int token_type)
 {
     int last;
 
     switch (token_type) {
     case BOOLEAN:
-       last  = tp->ext_Booleans;
+       last = tp->ext_Booleans;
        break;
     case NUMBER:
-       last  = tp->ext_Booleans + tp->ext_Numbers;
+       last = tp->ext_Booleans + tp->ext_Numbers;
        break;
     default:
     case STRING:
-       last  = NUM_EXT_NAMES(tp);
+       last = NUM_EXT_NAMES(tp);
        break;
     }
     return last;
@@ -188,11 +193,12 @@ static int _nc_last_ext_name(TERMTYPE *tp, int token_type)
 /*
  * Lookup an entry from extended-names, returning -1 if not found
  */
-static int _nc_find_ext_name(TERMTYPE *tp, char *name, int token_type)
+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);
+    unsigned last = _nc_last_ext_name(tp, token_type);
 
     for (j = first; j < last; j++) {
        if (!strcmp(name, tp->ext_Names[j])) {
@@ -206,7 +212,8 @@ static int _nc_find_ext_name(TERMTYPE *tp, char *name, int token_type)
  * 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)
+static int
+_nc_ext_data_index(TERMTYPE * tp, int n, int token_type)
 {
     switch (token_type) {
     case BOOLEAN:
@@ -214,12 +221,12 @@ static int _nc_ext_data_index(TERMTYPE *tp, int n, int token_type)
        break;
     case NUMBER:
        n += (tp->num_Numbers - tp->ext_Numbers)
-          - (tp->ext_Booleans);
+           - (tp->ext_Booleans);
        break;
     default:
     case STRING:
        n += (tp->num_Strings - tp->ext_Strings)
-          - (tp->ext_Booleans + tp->ext_Numbers);
+           - (tp->ext_Booleans + tp->ext_Numbers);
     }
     return n;
 }
@@ -228,7 +235,8 @@ static int _nc_ext_data_index(TERMTYPE *tp, int n, int token_type)
  * 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)
+static void
+_nc_del_ext_name(TERMTYPE * tp, char *name, int token_type)
 {
     int j;
     int first, last;
@@ -236,28 +244,28 @@ static void _nc_del_ext_name(TERMTYPE *tp, char *name, int token_type)
     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];
+           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->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->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->Strings[j] = tp->Strings[j + 1];
            tp->ext_Strings -= 1;
            tp->num_Strings -= 1;
            break;
@@ -269,10 +277,11 @@ static void _nc_del_ext_name(TERMTYPE *tp, char *name, int token_type)
  * 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)
+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 last = _nc_last_ext_name(tp, token_type);
     unsigned total = NUM_EXT_NAMES(tp) + 1;
     unsigned j, k;
 
@@ -287,8 +296,8 @@ static int _nc_ins_ext_name(TERMTYPE *tp, char *name, int token_type)
     }
 
     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];
+    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);
 
@@ -297,22 +306,22 @@ static int _nc_ins_ext_name(TERMTYPE *tp, char *name, int token_type)
        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];
+       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];
+       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];
+       for (k = tp->num_Strings - 1; k > j; k--)
+           tp->Strings[k] = tp->Strings[k - 1];
        break;
     }
     return j;
@@ -323,13 +332,14 @@ static int _nc_ins_ext_name(TERMTYPE *tp, char *name, int token_type)
  * 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)
+static void
+adjust_cancels(TERMTYPE * to, TERMTYPE * from)
 {
     int first = to->ext_Booleans + to->ext_Numbers;
-    int last  = first + to->ext_Strings;
+    int last = first + to->ext_Strings;
     int j, k;
 
-    for (j = first; j < last; ) {
+    for (j = first; j < last;) {
        char *name = to->ext_Names[j];
        unsigned j_str = to->num_Strings - first - to->ext_Strings;
 
@@ -338,7 +348,8 @@ static void adjust_cancels(TERMTYPE *to, TERMTYPE *from)
                _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) {
+           } 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;
@@ -349,7 +360,8 @@ static void adjust_cancels(TERMTYPE *to, TERMTYPE *from)
     }
 }
 
-void _nc_align_termtype(TERMTYPE *to, TERMTYPE *from)
+void
+_nc_align_termtype(TERMTYPE * to, TERMTYPE * from)
 {
     int na = NUM_EXT_NAMES(to);
     int nb = NUM_EXT_NAMES(from);
@@ -358,13 +370,14 @@ void _nc_align_termtype(TERMTYPE *to, TERMTYPE *from)
     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));
+    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)) {
+           &&(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;
@@ -380,7 +393,7 @@ void _nc_align_termtype(TERMTYPE *to, TERMTYPE *from)
         * 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);
+       ext_Names = typeMalloc(char *, na + nb);
 
        if (to->ext_Strings && (from->ext_Booleans + from->ext_Numbers))
            adjust_cancels(to, from);
@@ -389,62 +402,65 @@ void _nc_align_termtype(TERMTYPE *to, TERMTYPE *from)
            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);
+           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);
+           FreeIfNeeded(to->ext_Names);
            to->ext_Names = ext_Names;
-           DEBUG(2, ("realigned %d extended names for '%s' (to)", NUM_EXT_NAMES(to), to->term_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));
+           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)
+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));
+    *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)
+    for_each_boolean(i, dst)
        dst->Booleans[i] = src->Booleans[i];
-    for_each_number(i,dst)
+    for_each_number(i, dst)
        dst->Numbers[i] = src->Numbers[i];
-    for_each_string(i,dst)
+    for_each_string(i, dst)
        dst->Strings[i] = src->Strings[i];
 
     /* FIXME: we probably should also copy str_table and ext_str_table,
@@ -455,6 +471,8 @@ void _nc_copy_termtype(TERMTYPE *dst, TERMTYPE *src)
     if ((i = NUM_EXT_NAMES(src)) != 0) {
        dst->ext_Names = typeMalloc(char *, i);
        memcpy(dst->ext_Names, src->ext_Names, i * sizeof(char *));
+    } else {
+       dst->ext_Names = 0;
     }
 #endif
 
index d0881ecd47921728fa1aaf8435a4fd80212c7af5..da1382683942a21be51a1aaf6cb5cdab925659cb 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,8 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
-
 /*
  *     captoinfo.c --- conversion between termcap and terminfo formats
  *
 #include <ctype.h>
 #include <tic.h>
 
-MODULE_ID("$Id: captoinfo.c,v 1.24 1999/07/24 20:06:13 tom Exp $")
+MODULE_ID("$Id: captoinfo.c,v 1.37 2000/04/01 20:07:34 tom Exp $")
 
 #define MAX_PUSHED     16      /* max # args we can push onto the stack */
-#define MAX_ENTRY      2048    /* maximum chars in a translated capability */
 
 static int stack[MAX_PUSHED];  /* the stack */
 static int stackptr;           /* the next empty place on the stack */
@@ -108,43 +105,47 @@ static int seenr;         /* seen a %r */
 static int param;              /* current parameter */
 static char *dp;               /* pointer to end of the converted string */
 
-static char  *my_string;
+static char *my_string;
 static size_t my_length;
 
-static char *init_string(void)
+static char *
+init_string(void)
 /* initialize 'my_string', 'my_length' */
 {
-       if (my_string == 0)
-               my_string = typeMalloc(char, my_length = 256);
-       if (my_string == 0)
-           _nc_err_abort("Out of memory");
+    if (my_string == 0)
+       my_string = typeMalloc(char, my_length = 256);
+    if (my_string == 0)
+       _nc_err_abort("Out of memory");
 
-       *my_string = '\0';
-       return my_string;
+    *my_string = '\0';
+    return my_string;
 }
 
-static char *save_string(char *d, const char *const s)
+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 = (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);
-       return d + strlen(d);
+    size_t have = (d - my_string);
+    size_t need = have + strlen(s) + 2;
+    if (need > my_length) {
+       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);
+    return d + strlen(d);
 }
 
-static inline char *save_char(char *s, char c)
+static inline char *
+save_char(char *s, char c)
 {
-       static char temp[2];
-       temp[0] = c;
-       return save_string(s, temp);
+    static char temp[2];
+    temp[0] = c;
+    return save_string(s, temp);
 }
 
-static void push(void)
+static void
+push(void)
 /* push onstack on to the stack */
 {
     if (stackptr > MAX_PUSHED)
@@ -153,7 +154,8 @@ static void push(void)
        stack[stackptr++] = onstack;
 }
 
-static void pop(void)
+static void
+pop(void)
 /* pop the top of the stack into onstack */
 {
     if (stackptr == 0) {
@@ -161,21 +163,21 @@ static void pop(void)
            _nc_warning("I'm confused");
        else
            onstack = 0;
-    }
-    else
+    } else
        onstack = stack[--stackptr];
     param++;
 }
 
-static int cvtchar(register const char *sp)
+static int
+cvtchar(register const char *sp)
 /* convert a character to a terminfo push */
 {
     unsigned char c = 0;
     int len;
 
-    switch(*sp) {
+    switch (*sp) {
     case '\\':
-       switch(*++sp) {
+       switch (*++sp) {
        case '\'':
        case '$':
        case '\\':
@@ -192,8 +194,7 @@ static int cvtchar(register const char *sp)
        case '2':
        case '3':
            len = 1;
-           while (isdigit(*sp))
-           {
+           while (isdigit(*sp)) {
                c = 8 * c + (*sp++ - '0');
                len++;
            }
@@ -213,65 +214,68 @@ static int cvtchar(register const char *sp)
        len = 1;
     }
     if (isgraph(c) && c != ',' && c != '\'' && c != '\\' && c != ':') {
-       *dp++ = '%'; *dp++ = '\''; *dp++ = c; *dp++ = '\'';
+       dp = save_string(dp, "%\'");
+       dp = save_char(dp, c);
+       dp = save_char(dp, '\'');
     } else {
-       *dp++ = '%'; *dp++ = '{';
+       dp = save_string(dp, "%{");
        if (c > 99)
-           *dp++ = c / 100 + '0';
+           dp = save_char(dp, c / 100 + '0');
        if (c > 9)
-           *dp++ = ((int)(c / 10)) % 10 + '0';
-       *dp++ = c % 10 + '0';
-       *dp++ = '}';
+           dp = save_char(dp, ((int) (c / 10)) % 10 + '0');
+       dp = save_char(dp, c % 10 + '0');
+       dp = save_char(dp, '}');
     }
     return len;
 }
 
-static void getparm(int parm, int n)
+static void
+getparm(int parm, int n)
 /* push n copies of param on the terminfo stack if not already there */
 {
-       if (seenr) {
-               if (parm == 1)
-                       parm = 2;
-               else if (parm == 2)
-                       parm = 1;
-               }
-       if (onstack == parm) {
-               if (n > 1) {
-                       _nc_warning("string may not be optimal");
-                       *dp++ = '%'; *dp++ = 'P'; *dp++ = 'a';
-                       while(n--) {
-                               *dp++ = '%'; *dp++ = 'g'; *dp++ = 'a';
-                       }
-               }
-               return;
+    if (seenr) {
+       if (parm == 1)
+           parm = 2;
+       else if (parm == 2)
+           parm = 1;
+    }
+    if (onstack == parm) {
+       if (n > 1) {
+           _nc_warning("string may not be optimal");
+           dp = save_string(dp, "%Pa");
+           while (n--) {
+               dp = save_string(dp, "%ga");
+           }
        }
-       if (onstack != 0)
-               push();
+       return;
+    }
+    if (onstack != 0)
+       push();
 
-       onstack = parm;
+    onstack = parm;
 
-       while(n--) {            /* %p0 */
-               *dp++ = '%'; *dp++ = 'p'; *dp++ = '0' + parm;
-       }
+    while (n--) {
+       dp = save_string(dp, "%p");
+       dp = save_char(dp, '0' + parm);
+    }
 
-       if (seenn && parm < 3) {        /* %{96}%^ */
-               *dp++ = '%'; *dp++ = '{'; *dp++ = '9'; *dp++ = '6'; *dp++ = '}';
-               *dp++ = '%'; *dp++ = '^';
-       }
+    if (seenn && parm < 3) {
+       dp = save_string(dp, "%{96}%^");
+    }
 
-       if (seenm && parm < 3) {        /* %{127}%^ */
-               *dp++ = '%'; *dp++ = '{'; *dp++ = '1'; *dp++ = '2'; *dp++ = '7';
-               *dp++ = '}'; *dp++ = '%'; *dp++ = '^';
-       }
+    if (seenm && parm < 3) {
+       dp = save_string(dp, "%{127}%^");
+    }
 }
 
-char *_nc_captoinfo(
+char *
+_nc_captoinfo(
 /* convert a termcap string to terminfo format */
-register const char *cap,      /* relevant terminfo capability index */
-register const char *s,                /* string value of the capability */
-int const parametrized)                /* do % translations if 1, pad translations if >=0 */
+    register const char *cap,  /* relevant terminfo capability index */
+    register const char *s,    /* string value of the capability */
+    int const parametrized     /* do % translations if 1, pad translations if >=0 */
+)
 {
-    static char line[MAX_ENTRY];
     const char *capstart;
 
     stackptr = 0;
@@ -281,27 +285,29 @@ int const parametrized)           /* do % translations if 1, pad translations if >=0 */
     seenr = 0;
     param = 1;
 
-    dp = line;
+    dp = init_string();
 
     /* skip the initial padding (if we haven't been told not to) */
     capstart = 0;
     if (s == 0)
        s = "";
     if (parametrized >= 0 && isdigit(*s))
-       for (capstart = s; ; s++)
+       for (capstart = s;; s++)
            if (!(isdigit(*s) || *s == '*' || *s == '.'))
                break;
 
-    while(*s != '\0') {
-       switch(*s) {
+    while (*s != '\0') {
+       switch (*s) {
        case '%':
            s++;
            if (parametrized < 1) {
-               *dp++ = '%';
+               dp = save_char(dp, '%');
                break;
            }
-           switch(*s++) {
-           case '%': *dp++ = '%'; break;
+           switch (*s++) {
+           case '%':
+               dp = save_char(dp, '%');
+               break;
            case 'r':
                if (seenr++ == 1) {
                    _nc_warning("saw %%r twice in %s", cap);
@@ -317,37 +323,33 @@ int const parametrized)           /* do % translations if 1, pad translations if >=0 */
                    _nc_warning("saw %%n twice in %s", cap);
                }
                break;
-           case 'i': *dp++ = '%'; *dp++ = 'i'; break;
+           case 'i':
+               dp = save_string(dp, "%i");
+               break;
            case '6':
            case 'B':
-               getparm(param, 2);
-               /* %{6}%*%+ */
-               *dp++ = '%'; *dp++ = '{'; *dp++ = '6';
-               *dp++ = '}'; *dp++ = '%'; *dp++ = '*';
-               *dp++ = '%'; *dp++ = '+';
+               getparm(param, 1);
+               dp = save_string(dp, "%{10}%/%{16}%*");
+               getparm(param, 1);
+               dp = save_string(dp, "%{10}%m%+");
                break;
            case '8':
            case 'D':
                getparm(param, 2);
-               /* %{2}%*%- */
-               *dp++ = '%'; *dp++ = '{'; *dp++ = '2';
-               *dp++ = '}'; *dp++ = '%'; *dp++ = '*';
-               *dp++ = '%'; *dp++ = '-';
+               dp = save_string(dp, "%{2}%*%-");
                break;
            case '>':
                getparm(param, 2);
                /* %?%{x}%>%t%{y}%+%; */
-               *dp++ = '%'; *dp++ = '?';
+               dp = save_string(dp, "%?");
                s += cvtchar(s);
-               *dp++ = '%'; *dp++ = '>';
-               *dp++ = '%'; *dp++ = 't';
+               dp = save_string(dp, "%>%t");
                s += cvtchar(s);
-               *dp++ = '%'; *dp++ = '+';
-               *dp++ = '%'; *dp++ = ';';
+               dp = save_string(dp, "%+%;");
                break;
            case 'a':
                if ((*s == '=' || *s == '+' || *s == '-'
-                    || *s == '*' || *s == '/')
+                       || *s == '*' || *s == '/')
                    && (s[1] == 'p' || s[1] == 'c')
                    && s[2] != '\0') {
                    int l;
@@ -363,18 +365,18 @@ int const parametrized)           /* do % translations if 1, pad translations if >=0 */
                        l++;
                    } else
                        l += cvtchar(s + 2);
-                   switch(*s) {
+                   switch (*s) {
                    case '+':
-                       *dp++ = '%'; *dp++ = '+';
+                       dp = save_string(dp, "%+");
                        break;
                    case '-':
-                       *dp++ = '%'; *dp++ = '-';
+                       dp = save_string(dp, "%-");
                        break;
                    case '*':
-                       *dp++ = '%'; *dp++ = '*';
+                       dp = save_string(dp, "%*");
                        break;
                    case '/':
-                       *dp++ = '%'; *dp++ = '/';
+                       dp = save_string(dp, "%/");
                        break;
                    case '=':
                        if (seenr) {
@@ -384,8 +386,7 @@ int const parametrized)             /* do % translations if 1, pad translations if >=0 */
                                onstack = 1;
                            else
                                onstack = param;
-                       }
-                       else
+                       } else
                            onstack = param;
                        break;
                    }
@@ -394,39 +395,37 @@ int const parametrized)           /* do % translations if 1, pad translations if >=0 */
                }
                getparm(param, 1);
                s += cvtchar(s);
-               *dp++ = '%'; *dp++ = '+';
+               dp = save_string(dp, "%+");
                break;
            case '+':
                getparm(param, 1);
                s += cvtchar(s);
-               *dp++ = '%'; *dp++ = '+';
-               *dp++ = '%'; *dp++ = 'c';
+               dp = save_string(dp, "%+%c");
                pop();
                break;
            case 's':
 #ifdef WATERLOO
                s += cvtchar(s);
                getparm(param, 1);
-               *dp++ = '%'; *dp++ = '-';
+               dp = save_string(dp, "%-");
 #else
                getparm(param, 1);
-               *dp++ = '%'; *dp++ = 's';
+               dp = save_string(dp, "%s");
                pop();
 #endif /* WATERLOO */
                break;
            case '-':
                s += cvtchar(s);
                getparm(param, 1);
-               *dp++ = '%'; *dp++ = '-';
-               *dp++ = '%'; *dp++ = 'c';
+               dp = save_string(dp, "%-%c");
                pop();
                break;
            case '.':
                getparm(param, 1);
-               *dp++ = '%'; *dp++ = 'c';
+               dp = save_string(dp, "%c");
                pop();
                break;
-           case '0':   /* not clear any of the historical termcaps did this */
+           case '0':           /* not clear any of the historical termcaps did this */
                if (*s == '3')
                    goto see03;
                else if (*s != '2')
@@ -434,19 +433,18 @@ int const parametrized)           /* do % translations if 1, pad translations if >=0 */
                /* FALLTHRU */
            case '2':
                getparm(param, 1);
-               *dp++ = '%'; /* *dp++ = '0'; */
-               *dp++ = '2'; *dp++ = 'd';
+               dp = save_string(dp, "%2d");
                pop();
                break;
-           case '3': see03:
+           case '3':
+             see03:
                getparm(param, 1);
-               *dp++ = '%'; /* *dp++ = '0'; */
-               *dp++ = '3'; *dp++ = 'd';
+               dp = save_string(dp, "%3d");
                pop();
                break;
            case 'd':
                getparm(param, 1);
-               *dp++ = '%'; *dp++ = 'd';
+               dp = save_string(dp, "%d");
                pop();
                break;
            case 'f':
@@ -456,61 +454,82 @@ int const parametrized)           /* do % translations if 1, pad translations if >=0 */
                param--;
                break;
            case '\\':
-               *dp++ = '%';
-               *dp++ = '\\';
+               dp = save_string(dp, "%\\");
                break;
-           default: invalid:
-               *dp++ = '%';
+           default:
+             invalid:
+               dp = save_char(dp, '%');
                s--;
-               _nc_warning("unknown %% code %s in %s",
-                       _tracechar(*s), cap);
+               _nc_warning("unknown %% code %s (%#x) in %s",
+                   unctrl(*s), (*s) & 0xff, cap);
                break;
            }
            break;
 #ifdef REVISIBILIZE
        case '\\':
-           *dp++ = *s++; *dp++ = *s++; break;
+           dp = save_char(dp, *s++);
+           dp = save_char(dp, *s++);
+           break;
        case '\n':
-           *dp++ = '\\'; *dp++ = 'n'; s++; break;
+           dp = save_string(dp, "\\n");
+           s++;
+           break;
        case '\t':
-           *dp++ = '\\'; *dp++ = 't'; s++; break;
+           dp = save_string(dp, "\\t");
+           s++;
+           break;
        case '\r':
-           *dp++ = '\\'; *dp++ = 'r'; s++; break;
+           dp = save_string(dp, "\\r");
+           s++;
+           break;
        case '\200':
-           *dp++ = '\\'; *dp++ = '0'; s++; break;
+           dp = save_string(dp, "\\0");
+           s++;
+           break;
        case '\f':
-           *dp++ = '\\'; *dp++ = 'f'; s++; break;
+           dp = save_string(dp, "\\f");
+           s++;
+           break;
        case '\b':
-           *dp++ = '\\'; *dp++ = 'b'; s++; break;
+           dp = save_string(dp, "\\b");
+           s++;
+           break;
        case ' ':
-           *dp++ = '\\'; *dp++ = 's'; s++; break;
+           dp = save_string(dp, "\\s");
+           s++;
+           break;
        case '^':
-           *dp++ = '\\'; *dp++ = '^'; s++; break;
+           dp = save_string(dp, "\\^");
+           s++;
+           break;
        case ':':
-           *dp++ = '\\'; *dp++ = ':'; s++; break;
+           dp = save_string(dp, "\\:");
+           s++;
+           break;
        case ',':
-           *dp++ = '\\'; *dp++ = ','; s++; break;
+           dp = save_string(dp, "\\,");
+           s++;
+           break;
        default:
            if (*s == '\033') {
-               *dp++ = '\\';
-               *dp++ = 'E';
+               dp = save_string(dp, "\\E");
                s++;
            } else if (*s > 0 && *s < 32) {
-               *dp++ = '^';
-               *dp++ = *s + '@';
+               dp = save_char(dp, '^');
+               dp = save_char(dp, *s + '@');
                s++;
            } else if (*s <= 0 || *s >= 127) {
-               *dp++ = '\\';
-               *dp++ = ((*s & 0300) >> 6) + '0';
-               *dp++ = ((*s & 0070) >> 3) + '0';
-               *dp++ = (*s & 0007) + '0';
+               dp = save_char(dp, '\\');
+               dp = save_char(dp, ((*s & 0300) >> 6) + '0');
+               dp = save_char(dp, ((*s & 0070) >> 3) + '0');
+               dp = save_char(dp, (*s & 0007) + '0');
                s++;
            } else
-               *dp++ = *s++;
+               dp = save_char(dp, *s++);
            break;
 #else
        default:
-           *dp++ = *s++;
+           dp = save_char(dp, *s++);
            break;
 #endif
        }
@@ -520,21 +539,76 @@ int const parametrized)           /* do % translations if 1, pad translations if >=0 */
      * Now, if we stripped off some leading padding, add it at the end
      * of the string as mandatory padding.
      */
-    if (capstart)
-    {
-       *dp++ = '$';
-       *dp++ = '<';
-       for (s = capstart; ; s++)
+    if (capstart) {
+       dp = save_string(dp, "$<");
+       for (s = capstart;; s++)
            if (isdigit(*s) || *s == '*' || *s == '.')
-               *dp++ = *s;
+               dp = save_char(dp, *s);
            else
                break;
-       *dp++ = '/';
-       *dp++ = '>';
+       dp = save_string(dp, "/>");
+    }
+
+    (void) save_char(dp, '\0');
+    return (my_string);
+}
+
+/*
+ * Check for an expression that corresponds to "%B" (BCD):
+ *     (parameter / 10) * 16 + (parameter % 10)
+ */
+static int
+bcd_expression(const char *str)
+{
+    /* leave this non-const for HPUX */
+    static char fmt[] = "%%p%c%%{10}%%/%%{16}%%*%%p%c%%{10}%%m%%+";
+    int len = 0;
+    char ch1, ch2;
+
+    if (sscanf(str, fmt, &ch1, &ch2) == 2
+       && isdigit(ch1)
+       && isdigit(ch2)
+       && (ch1 == ch2)) {
+       len = 28;
+#ifndef NDEBUG
+       {
+           char buffer[80];
+           int tst;
+           sprintf(buffer, fmt, ch1, ch2);
+           tst = strlen(buffer) - 1;
+           assert(len == tst);
+       }
+#endif
     }
+    return len;
+}
+
+static char *
+save_tc_char(char *bufptr, int c1)
+{
+    char temp[80];
 
-    *dp = '\0';
-    return(line);
+    if (is7bits(c1) && isprint(c1)) {
+       if (c1 == ':' || c1 == '\\')
+           bufptr = save_char(bufptr, '\\');
+       bufptr = save_char(bufptr, c1);
+    } else {
+       if (c1 == (c1 & 0x1f))  /* iscntrl() returns T on 255 */
+           (void) strcpy(temp, unctrl(c1));
+       else
+           (void) sprintf(temp, "\\%03o", c1);
+       bufptr = save_string(bufptr, temp);
+    }
+    return bufptr;
+}
+
+static char *
+save_tc_inequality(char *bufptr, int c1, int c2)
+{
+    bufptr = save_string(bufptr, "%>");
+    bufptr = save_tc_char(bufptr, c1);
+    bufptr = save_tc_char(bufptr, c2);
+    return bufptr;
 }
 
 /*
@@ -555,23 +629,25 @@ int const parametrized)           /* do % translations if 1, pad translations if >=0 */
  *     %m       exclusive-or all parameters with 0177 (not in 4.4BSD)
  */
 
-char *_nc_infotocap(
+char *
+_nc_infotocap(
 /* convert a terminfo string to termcap format */
-register const char *cap GCC_UNUSED, /* relevant termcap capability index */
-register const char *str,      /* string value of the capability */
-int const parametrized)                /* do % translations if 1, pad translations if >=0 */
+    register const char *cap GCC_UNUSED,       /* relevant termcap capability index */
+    register const char *str,  /* string value of the capability */
+    int const parametrized     /* do % translations if 1, pad translations if >=0 */
+)
 {
-    int        seenone = 0, seentwo = 0, saw_m = 0, saw_n = 0;
+    int seenone = 0, seentwo = 0, saw_m = 0, saw_n = 0;
     const char *padding;
     const char *trimmed = 0;
     char ch1 = 0, ch2 = 0;
     char *bufptr = init_string();
-    char temp[256];
+    int len;
+    bool syntax_error = FALSE;
 
     /* we may have to move some trailing mandatory padding up front */
     padding = str + strlen(str) - 1;
-    if (*padding == '>' && *--padding == '/')
-    {
+    if (*padding == '>' && *--padding == '/') {
        --padding;
        while (isdigit(*padding) || *padding == '.' || *padding == '*')
            padding--;
@@ -583,101 +659,62 @@ int const parametrized)          /* do % translations if 1, pad translations if >=0 */
            bufptr = save_char(bufptr, *padding++);
     }
 
-    for (; *str && str != trimmed; str++)
-    {
-       int     c1, c2;
-       char    *cp = 0;
+    for (; *str && str != trimmed; str++) {
+       int c1, c2;
+       char *cp = 0;
 
-       if (str[0] == '\\' && (str[1] == '^' || str[1] == ','))
-       {
+       if (str[0] == '\\' && (str[1] == '^' || str[1] == ',')) {
            bufptr = save_char(bufptr, *++str);
-       }
-       else if (str[0] == '$' && str[1] == '<')        /* discard padding */
-       {
+       } else if (str[0] == '$' && str[1] == '<') {    /* discard padding */
            str += 2;
-           while (isdigit(*str) || *str == '.' || *str == '*' || *str == '/' || *str == '>')
+           while (isdigit(*str) || *str == '.' || *str == '*' || *str ==
+               '/' || *str == '>')
                str++;
            --str;
-       }
-       else if (*str != '%' || (parametrized < 1))
+       } else if (str[0] == '%' && str[1] == '%') {    /* escaped '%' */
+           bufptr = save_string(bufptr, "%%");
+       } else if (*str != '%' || (parametrized < 1)) {
            bufptr = save_char(bufptr, *str);
-       else if (sscanf(str, "%%?%%{%d}%%>%%t%%{%d}%%+%%;", &c1,&c2) == 2)
-       {
+       } else if (sscanf(str, "%%?%%{%d}%%>%%t%%{%d}%%+%%;", &c1, &c2) == 2) {
            str = strchr(str, ';');
-           (void) sprintf(temp, "%%>%s%s", unctrl(c1), unctrl(c2));
-           bufptr = save_string(bufptr, temp);
-       }
-       else if (sscanf(str, "%%?%%{%d}%%>%%t%%'%c'%%+%%;", &c1,&ch2) == 2)
-       {
+           bufptr = save_tc_inequality(bufptr, c1, c2);
+       } else if (sscanf(str, "%%?%%{%d}%%>%%t%%'%c'%%+%%;", &c1, &ch2) == 2) {
            str = strchr(str, ';');
-           (void) sprintf(temp, "%%>%s%c", unctrl(c1), ch2);
-           bufptr = save_string(bufptr, temp);
-       }
-       else if (sscanf(str, "%%?%%'%c'%%>%%t%%{%d}%%+%%;", &ch1,&c2) == 2)
-       {
+           bufptr = save_tc_inequality(bufptr, c1, c2);
+       } else if (sscanf(str, "%%?%%'%c'%%>%%t%%{%d}%%+%%;", &ch1, &c2) == 2) {
            str = strchr(str, ';');
-           (void) sprintf(temp, "%%>%c%c", ch1, c2);
-           bufptr = save_string(bufptr, temp);
-       }
-       else if (sscanf(str, "%%?%%'%c'%%>%%t%%'%c'%%+%%;", &ch1, &ch2) == 2)
-       {
+           bufptr = save_tc_inequality(bufptr, c1, c2);
+       } else if (sscanf(str, "%%?%%'%c'%%>%%t%%'%c'%%+%%;", &ch1, &ch2) == 2) {
            str = strchr(str, ';');
-           (void) sprintf(temp, "%%>%c%c", ch1, ch2);
-           bufptr = save_string(bufptr, temp);
-       }
-       else if (strncmp(str, "%{6}%*%+", 8) == 0)
-       {
-           str += 7;
-           (void) sprintf(temp, "%%B");
-           bufptr = save_string(bufptr, temp);
-       }
-       else if ((sscanf(str, "%%{%d}%%+%%c", &c1) == 1
-                 || sscanf(str, "%%'%c'%%+%%c", &ch1) == 1)
-                && (cp = strchr(str, '+')))
-       {
+           bufptr = save_tc_inequality(bufptr, c1, c2);
+       } else if ((len = bcd_expression(str)) != 0) {
+           str += len;
+           bufptr = save_string(bufptr, "%B");
+       } else if ((sscanf(str, "%%{%d}%%+%%c", &c1) == 1
+                   || sscanf(str, "%%'%c'%%+%%c", &ch1) == 1)
+           && (cp = strchr(str, '+'))) {
            str = cp + 2;
-           bufptr = save_char(bufptr, '%');
-           bufptr = save_char(bufptr, '+');
+           bufptr = save_string(bufptr, "%+");
 
            if (ch1)
                c1 = ch1;
-           if (is7bits(c1) && isprint(c1))
-               bufptr = save_char(bufptr, (char)c1);
-           else
-           {
-               if (c1 == (c1 & 0x1f)) /* iscntrl() returns T on 255 */
-                   (void) strcpy(temp, unctrl(c1));
-               else
-                   (void) sprintf(temp, "\\%03o", c1);
-               bufptr = save_string(bufptr, temp);
-           }
+           bufptr = save_tc_char(bufptr, c1);
        }
-       else if (strncmp(str, "%{2}%*%-", 8) == 0)
-       {
+       /* FIXME: this "works" for 'delta' */
+       else if (strncmp(str, "%{2}%*%-", 8) == 0) {
            str += 7;
-           (void) sprintf(temp, "%%D");
-           bufptr = save_string(bufptr, temp);
-       }
-       else if (strncmp(str, "%{96}%^", 7) == 0)
-       {
+           bufptr = save_string(bufptr, "%D");
+       } else if (strncmp(str, "%{96}%^", 7) == 0) {
            str += 6;
-           if (saw_m++ == 0)
-           {
-               (void) sprintf(temp, "%%n");
-               bufptr = save_string(bufptr, temp);
+           if (saw_m++ == 0) {
+               bufptr = save_string(bufptr, "%n");
            }
-       }
-       else if (strncmp(str, "%{127}%^", 8) == 0)
-       {
+       } else if (strncmp(str, "%{127}%^", 8) == 0) {
            str += 7;
-           if (saw_n++ == 0)
-           {
-               (void) sprintf(temp, "%%m");
-               bufptr = save_string(bufptr, temp);
+           if (saw_n++ == 0) {
+               bufptr = save_string(bufptr, "%m");
            }
-       }
-       else
-       {
+       } else {                /* cm-style format element */
            str++;
            switch (*str) {
            case '%':
@@ -697,90 +734,80 @@ int const parametrized)           /* do % translations if 1, pad translations if >=0 */
                bufptr = save_char(bufptr, '%');
                while (isdigit(*str))
                    bufptr = save_char(bufptr, *str++);
-               if (*str == 'd')
-                   str++;
-               else
-                   _nc_warning("numeric prefix is missing trailing d in %s",
-                               cap);
-               --str;
+               if (strchr("doxX.", *str)) {
+                   if (*str != 'd')    /* termcap doesn't have octal, hex */
+                       return 0;
+               }
                break;
 
            case 'd':
-               bufptr = save_char(bufptr, '%');
-               bufptr = save_char(bufptr, 'd');
+               bufptr = save_string(bufptr, "%d");
                break;
 
            case 'c':
-               bufptr = save_char(bufptr, '%');
-               bufptr = save_char(bufptr, '.');
+               bufptr = save_string(bufptr, "%.");
                break;
 
-           /*
-            * %s isn't in termcap, but it's convenient to pass it through
-            * so we can represent things like terminfo pfkey strings in
-            * termcap notation.
-            */
+               /*
+                * %s isn't in termcap, but it's convenient to pass it through
+                * so we can represent things like terminfo pfkey strings in
+                * termcap notation.
+                */
            case 's':
-               bufptr = save_char(bufptr, '%');
-               bufptr = save_char(bufptr, 's');
+               bufptr = save_string(bufptr, "%s");
                break;
 
            case 'p':
                str++;
                if (*str == '1')
                    seenone = 1;
-               else if (*str == '2')
-               {
-                   if (!seenone && !seentwo)
-                   {
-                       bufptr = save_char(bufptr, '%');
-                       bufptr = save_char(bufptr, 'r');
+               else if (*str == '2') {
+                   if (!seenone && !seentwo) {
+                       bufptr = save_string(bufptr, "%r");
                        seentwo++;
                    }
-               }
-               else if (*str >= '3')
-                   return(0);
+               } else if (*str >= '3')
+                   return (0);
                break;
 
            case 'i':
-               bufptr = save_char(bufptr, '%');
-               bufptr = save_char(bufptr, 'i');
+               bufptr = save_string(bufptr, "%i");
                break;
 
            default:
-               return(0);
-
-           } /* endswitch (*str) */
-       } /* endelse (*str == '%') */
+               bufptr = save_char(bufptr, *str);
+               syntax_error = TRUE;
+               break;
+           }                   /* endswitch (*str) */
+       }                       /* endelse (*str == '%') */
 
        if (*str == '\0')
            break;
 
-    } /* endwhile (*str) */
+    }                          /* endwhile (*str) */
 
-    return(my_string);
+    return (syntax_error ? NULL : my_string);
 }
 
 #ifdef MAIN
 
 int curr_line;
 
-int main(int argc, char *argv[])
+int
+main(int argc, char *argv[])
 {
     int c, tc = FALSE;
 
     while ((c = getopt(argc, argv, "c")) != EOF)
-       switch (c)
-       {
+       switch (c) {
        case 'c':
            tc = TRUE;
            break;
        }
 
     curr_line = 0;
-    for (;;)
-    {
-       char    buf[BUFSIZ];
+    for (;;) {
+       char buf[BUFSIZ];
 
        ++curr_line;
        if (fgets(buf, sizeof(buf), stdin) == 0)
@@ -788,20 +815,17 @@ int main(int argc, char *argv[])
        buf[strlen(buf) - 1] = '\0';
        _nc_set_source(buf);
 
-       if (tc)
-       {
-           char        *cp = _nc_infotocap("to termcap", buf, 1);
+       if (tc) {
+           char *cp = _nc_infotocap("to termcap", buf, 1);
 
            if (cp)
                (void) fputs(cp, stdout);
-       }
-       else
+       } else
            (void) fputs(_nc_captoinfo("to terminfo", buf, 1), stdout);
        (void) putchar('\n');
     }
-    return(0);
+    return (0);
 }
 #endif /* MAIN */
 
 /* captoinfo.c ends here */
-
index 2b2d503013c09a4a09996fc5678f6e32c9e54b78..3767063da0a6d51664571587798c8b4c521904c5 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 <tic.h>
 
-MODULE_ID("$Id: comp_error.c,v 1.16 1998/08/01 23:39:51 tom Exp $")
+MODULE_ID("$Id: comp_error.c,v 1.17 1999/10/30 23:00:16 tom Exp $")
 
-bool   _nc_suppress_warnings;
-int    _nc_curr_line;          /* current line # in input */
-int    _nc_curr_col;           /* current column # in input */
+bool   _nc_suppress_warnings = FALSE;
+int    _nc_curr_line = 0;      /* current line # in input */
+int    _nc_curr_col = 0;       /* current column # in input */
 
 static const char *sourcename;
 static char termtype[MAX_NAME_SIZE+1];
index be419ca3e790c565a632ca3879b8897918459e3c..ca58bb5746e76ebed0c670789a84f097c50d175c 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,8 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
-
 /*
  *     comp_parse.c -- parser driver loop and use handling.
  *
 #include <tic.h>
 #include <term_entry.h>
 
-MODULE_ID("$Id: comp_parse.c,v 1.34 1999/02/27 22:13:02 tom Exp $")
+MODULE_ID("$Id: comp_parse.c,v 1.40 2000/04/15 16:57:08 tom Exp $")
 
 static void sanity_check(TERMTYPE *);
-void (*_nc_check_termtype)(TERMTYPE *) = sanity_check;
+void (*_nc_check_termtype) (TERMTYPE *) = sanity_check;
 
 /****************************************************************************
  *
@@ -80,31 +78,32 @@ void (*_nc_check_termtype)(TERMTYPE *) = sanity_check;
  *        _nc_head                _nc_tail
  */
 
-ENTRY *_nc_head, *_nc_tail;
+ENTRY *_nc_head = 0, *_nc_tail = 0;
 
-static void enqueue(ENTRY *ep)
+static void
+enqueue(ENTRY * ep)
 /* add an entry to the in-core list */
 {
-       ENTRY   *newp = _nc_copy_entry(ep);
+    ENTRY *newp = _nc_copy_entry(ep);
 
-       if (newp == NULL)
-           _nc_err_abort("Out of memory");
+    if (newp == 0)
+       _nc_err_abort("Out of memory");
 
-       newp->last = _nc_tail;
-       _nc_tail = newp;
+    newp->last = _nc_tail;
+    _nc_tail = newp;
 
-       newp->next = (ENTRY *)NULL;
-       if (newp->last)
-           newp->last->next = newp;
+    newp->next = 0;
+    if (newp->last)
+       newp->last->next = newp;
 }
 
-void _nc_free_entries(ENTRY *head)
+void
+_nc_free_entries(ENTRY * headp)
 /* free the allocated storage consumed by list entries */
 {
-    ENTRY      *ep, *next;
+    ENTRY *ep, *next;
 
-    for (ep = head; ep; ep = next)
-    {
+    for (ep = headp; ep; ep = next) {
        /*
         * This conditional lets us disconnect storage from the list.
         * To do this, copy an entry out of the list, then null out
@@ -116,27 +115,28 @@ void _nc_free_entries(ENTRY *head)
        next = ep->next;
 
        free(ep);
-       if (ep == _nc_head) _nc_head = 0;
-       if (ep == _nc_tail) _nc_tail = 0;
+       if (ep == _nc_head)
+           _nc_head = 0;
+       if (ep == _nc_tail)
+           _nc_tail = 0;
     }
 }
 
-bool _nc_entry_match(char *n1, char *n2)
+bool
+_nc_entry_match(char *n1, char *n2)
 /* do any of the aliases in a pair of terminal names match? */
 {
-    char       *pstart, *qstart, *pend, *qend;
-    char       nc1[MAX_NAME_SIZE+1], nc2[MAX_NAME_SIZE+1];
+    char *pstart, *qstart, *pend, *qend;
+    char nc1[MAX_NAME_SIZE + 1], nc2[MAX_NAME_SIZE + 1];
 
-    if (strchr(n1, '|') == NULL)
-    {
+    if (strchr(n1, '|') == 0) {
        (void) strncpy(nc1, n1, sizeof(nc1) - 2);
        nc1[sizeof(nc1) - 2] = '\0';
        (void) strcat(nc1, "|");
        n1 = nc1;
     }
 
-    if (strchr(n2, '|') == NULL)
-    {
+    if (strchr(n2, '|') == 0) {
        (void) strncpy(nc2, n2, sizeof(nc2) - 2);
        nc2[sizeof(nc2) - 2] = '\0';
        (void) strcat(nc2, "|");
@@ -145,11 +145,11 @@ bool _nc_entry_match(char *n1, char *n2)
 
     for (pstart = n1; (pend = strchr(pstart, '|')); pstart = pend + 1)
        for (qstart = n2; (qend = strchr(qstart, '|')); qstart = qend + 1)
-           if ((pend-pstart == qend-qstart)
-            && memcmp(pstart, qstart, (size_t)(pend-pstart)) == 0)
-               return(TRUE);
+           if ((pend - pstart == qend - qstart)
+               && memcmp(pstart, qstart, (size_t) (pend - pstart)) == 0)
+               return (TRUE);
 
-       return(FALSE);
+    return (FALSE);
 }
 
 /****************************************************************************
@@ -158,21 +158,24 @@ bool _nc_entry_match(char *n1, char *n2)
  *
  ****************************************************************************/
 
-void _nc_read_entry_source(FILE *fp, char *buf,
-                          int literal, bool silent,
-                          bool (*hook)(ENTRY *))
+void
+_nc_read_entry_source(FILE * fp, char *buf,
+    int literal, bool silent,
+    bool(*hook) (ENTRY *))
 /* slurp all entries in the given file into core */
 {
-    ENTRY      thisentry;
-    bool       oldsuppress = _nc_suppress_warnings;
-    int                immediate = 0;
+    ENTRY thisentry;
+    bool oldsuppress = _nc_suppress_warnings;
+    int immediate = 0;
 
     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; )
-    {
+    _nc_reset_input(fp, buf);
+    for (;;) {
+       memset(&thisentry, 0, sizeof(thisentry));
+       if (_nc_parse_entry(&thisentry, literal, silent) == ERR)
+           break;
        if (!isalnum(thisentry.tterm.term_names[0]))
            _nc_err_abort("terminal names must start with letter or digit");
 
@@ -181,14 +184,13 @@ void _nc_read_entry_source(FILE *fp, char *buf,
         * use references to disk, so as to avoid chewing up a lot of
         * core when the resolution code could fetch entries off disk.
         */
-       if (hook != NULLHOOK && (*hook)(&thisentry))
+       if (hook != NULLHOOK && (*hook) (&thisentry))
            immediate++;
        else
            enqueue(&thisentry);
     }
 
-    if (_nc_tail)
-    {
+    if (_nc_tail) {
        /* set up the head pointer */
        for (_nc_head = _nc_tail; _nc_head->last; _nc_head = _nc_head->last)
            continue;
@@ -204,12 +206,13 @@ void _nc_read_entry_source(FILE *fp, char *buf,
     _nc_suppress_warnings = oldsuppress;
 }
 
-int _nc_resolve_uses(void)
+int
+_nc_resolve_uses(bool fullresolve)
 /* try to resolve all use capabilities */
 {
-    ENTRY      *qp, *rp, *lastread = NULL;
-    bool       keepgoing;
-    int                i, j, unresolved, total_unresolved, multiples;
+    ENTRY *qp, *rp, *lastread = 0;
+    bool keepgoing;
+    int i, j, unresolved, total_unresolved, multiples;
 
     DEBUG(2, ("RESOLUTION BEGINNING"));
 
@@ -217,48 +220,41 @@ int _nc_resolve_uses(void)
      * Check for multiple occurrences of the same name.
      */
     multiples = 0;
-    for_entry_list(qp)
-    {
+    for_entry_list(qp) {
        int matchcount = 0;
 
        for_entry_list(rp)
            if (qp > rp
-               && _nc_entry_match(qp->tterm.term_names, rp->tterm.term_names))
-           {
-               matchcount++;
-               if (matchcount == 1)
-               {
-                   (void) fprintf(stderr, "Name collision between %s",
-                          _nc_first_name(qp->tterm.term_names));
-                   multiples++;
-               }
-               if (matchcount >= 1)
-                   (void) fprintf(stderr, " %s", _nc_first_name(rp->tterm.term_names));
+           && _nc_entry_match(qp->tterm.term_names, rp->tterm.term_names)) {
+           matchcount++;
+           if (matchcount == 1) {
+               (void) fprintf(stderr, "Name collision between %s",
+                   _nc_first_name(qp->tterm.term_names));
+               multiples++;
            }
+           if (matchcount >= 1)
+               (void) fprintf(stderr, " %s", _nc_first_name(rp->tterm.term_names));
+       }
        if (matchcount >= 1)
            (void) putc('\n', stderr);
     }
     if (multiples > 0)
-       return(FALSE);
+       return (FALSE);
 
     DEBUG(2, ("NO MULTIPLE NAME OCCURRENCES"));
 
     /*
-     * First resolution stage: replace names in use arrays with entry
-     * pointers.  By doing this, we avoid having to do the same name
-     * match once for each time a use entry is itself unresolved.
+     * First resolution stage: compute link pointers corresponding to names.
      */
     total_unresolved = 0;
     _nc_curr_col = -1;
-    for_entry_list(qp)
-    {
+    for_entry_list(qp) {
        unresolved = 0;
-       for (i = 0; i < qp->nuses; i++)
-       {
-           bool        foundit;
-           char        *child = _nc_first_name(qp->tterm.term_names);
-           char        *lookfor = (char *)(qp->uses[i].parent);
-           long        lookline = qp->uses[i].line;
+       for (i = 0; i < qp->nuses; i++) {
+           bool foundit;
+           char *child = _nc_first_name(qp->tterm.term_names);
+           char *lookfor = qp->uses[i].name;
+           long lookline = qp->uses[i].line;
 
            foundit = FALSE;
 
@@ -267,146 +263,142 @@ int _nc_resolve_uses(void)
            /* first, try to resolve from in-core records */
            for_entry_list(rp)
                if (rp != qp
-                   && _nc_name_match(rp->tterm.term_names, lookfor, "|"))
-               {
-                   DEBUG(2, ("%s: resolving use=%s (in core)",
-                             child, lookfor));
+               && _nc_name_match(rp->tterm.term_names, lookfor, "|")) {
+               DEBUG(2, ("%s: resolving use=%s (in core)",
+                       child, lookfor));
 
-                   qp->uses[i].parent = rp;
-                   foundit = TRUE;
-               }
+               qp->uses[i].link = rp;
+               foundit = TRUE;
+           }
 
            /* if that didn't work, try to merge in a compiled entry */
-           if (!foundit)
-           {
-               TERMTYPE        thisterm;
-               char            filename[PATH_MAX];
+           if (!foundit) {
+               TERMTYPE thisterm;
+               char filename[PATH_MAX];
 
                memset(&thisterm, 0, sizeof(thisterm));
-               if (_nc_read_entry(lookfor, filename, &thisterm) == 1)
-               {
+               if (_nc_read_entry(lookfor, filename, &thisterm) == 1) {
                    DEBUG(2, ("%s: resolving use=%s (compiled)",
-                             child, lookfor));
+                           child, lookfor));
 
-                   rp = typeMalloc(ENTRY,1);
-                   if (rp == NULL)
+                   rp = typeMalloc(ENTRY, 1);
+                   if (rp == 0)
                        _nc_err_abort("Out of memory");
                    rp->tterm = thisterm;
                    rp->nuses = 0;
                    rp->next = lastread;
                    lastread = rp;
 
-                   qp->uses[i].parent = rp;
+                   qp->uses[i].link = rp;
                    foundit = TRUE;
                }
            }
 
            /* no good, mark this one unresolvable and complain */
-           if (!foundit)
-           {
+           if (!foundit) {
                unresolved++;
                total_unresolved++;
 
                _nc_curr_line = lookline;
                _nc_warning("resolution of use=%s failed", lookfor);
-               qp->uses[i].parent = (ENTRY *)NULL;
+               qp->uses[i].link = 0;
            }
        }
     }
-    if (total_unresolved)
-    {
+    if (total_unresolved) {
        /* free entries read in off disk */
        _nc_free_entries(lastread);
-       return(FALSE);
+       return (FALSE);
     }
 
     DEBUG(2, ("NAME RESOLUTION COMPLETED OK"));
 
     /*
-     * OK, at this point all (char *) references have been successfully
-     * replaced by (ENTRY *) pointers.  Time to do the actual merges.
+     * OK, at this point all (char *) references in `name' mwmbers
+     * have been successfully converred to (ENTRY *) pointers in
+     * `link' members.  Time to do the actual merges.
      */
-    do {
-       TERMTYPE        merged;
-
-       keepgoing = FALSE;
-
-       for_entry_list(qp)
-       {
-           if (qp->nuses > 0)
-           {
-               DEBUG(2, ("%s: attempting merge", _nc_first_name(qp->tterm.term_names)));
-               /*
-                * If any of the use entries we're looking for is
-                * incomplete, punt.  We'll catch this entry on a
-                * subsequent pass.
-                */
-               for (i = 0; i < qp->nuses; i++)
-                   if (((ENTRY *)qp->uses[i].parent)->nuses)
-                   {
-                       DEBUG(2, ("%s: use entry %d unresolved",
-                                 _nc_first_name(qp->tterm.term_names), i));
-                       goto incomplete;
-                   }
-
-               /*
-                * First, make sure there's no garbage in the merge block.
-                * as a side effect, copy into the merged entry the name
-                * field and string table pointer.
-                */
-               _nc_copy_termtype(&merged, &(qp->tterm));
-
-               /*
-                * Now merge in each use entry in the proper
-                * (reverse) order.
-                */
-               for (; qp->nuses; qp->nuses--)
-                   _nc_merge_entry(&merged,
-                               &((ENTRY *)qp->uses[qp->nuses-1].parent)->tterm);
-
-               /*
-                * Now merge in the original entry.
-                */
-               _nc_merge_entry(&merged, &qp->tterm);
-
-               /*
-                * Replace the original entry with the merged one.
-                */
-               FreeIfNeeded(qp->tterm.Booleans);
-               FreeIfNeeded(qp->tterm.Numbers);
-               FreeIfNeeded(qp->tterm.Strings);
-               qp->tterm = merged;
-
-               /*
-                * We know every entry is resolvable because name resolution
-                * didn't bomb.  So go back for another pass.
-                */
-               /* FALLTHRU */
-           incomplete:
-               keepgoing = TRUE;
+    if (fullresolve) {
+       do {
+           TERMTYPE merged;
+
+           keepgoing = FALSE;
+
+           for_entry_list(qp) {
+               if (qp->nuses > 0) {
+                   DEBUG(2, ("%s: attempting merge",
+                           _nc_first_name(qp->tterm.term_names)));
+                   /*
+                    * If any of the use entries we're looking for is
+                    * incomplete, punt.  We'll catch this entry on a
+                    * subsequent pass.
+                    */
+                   for (i = 0; i < qp->nuses; i++)
+                       if (qp->uses[i].link->nuses) {
+                           DEBUG(2, ("%s: use entry %d unresolved",
+                                   _nc_first_name(qp->tterm.term_names), i));
+                           goto incomplete;
+                       }
+
+                   /*
+                      * First, make sure there's no garbage in the
+                      * merge block.  as a side effect, copy into
+                      * the merged entry the name field and string
+                      * table pointer.
+                    */
+                   _nc_copy_termtype(&merged, &(qp->tterm));
+
+                   /*
+                    * Now merge in each use entry in the proper
+                    * (reverse) order.
+                    */
+                   for (; qp->nuses; qp->nuses--)
+                       _nc_merge_entry(&merged,
+                           &qp->uses[qp->nuses - 1].link->tterm);
+
+                   /*
+                    * Now merge in the original entry.
+                    */
+                   _nc_merge_entry(&merged, &qp->tterm);
+
+                   /*
+                    * Replace the original entry with the merged one.
+                    */
+                   FreeIfNeeded(qp->tterm.Booleans);
+                   FreeIfNeeded(qp->tterm.Numbers);
+                   FreeIfNeeded(qp->tterm.Strings);
+                   qp->tterm = merged;
+
+                   /*
+                    * We know every entry is resolvable because name resolution
+                    * didn't bomb.  So go back for another pass.
+                    */
+                   /* FALLTHRU */
+                 incomplete:
+                   keepgoing = TRUE;
+               }
            }
-       }
-    } while
-       (keepgoing);
+       } while
+           (keepgoing);
 
-    DEBUG(2, ("MERGES COMPLETED OK"));
+       DEBUG(2, ("MERGES COMPLETED OK"));
 
-    /*
-     * The exit condition of the loop above is such that all entries
-     * must now be resolved.  Now handle cancellations.  In a resolved
-     * entry there should be no cancellation markers.
-     */
-    for_entry_list(qp)
-    {
-       for_each_boolean(j, &(qp->tterm))
-           if (qp->tterm.Booleans[j] == CANCELLED_BOOLEAN)
-               qp->tterm.Booleans[j] = FALSE;
-       for_each_number(j, &(qp->tterm))
-           if (qp->tterm.Numbers[j] == CANCELLED_NUMERIC)
+       /*
+        * The exit condition of the loop above is such that all entries
+        * must now be resolved.  Now handle cancellations.  In a resolved
+        * entry there should be no cancellation markers.
+        */
+       for_entry_list(qp) {
+           for_each_boolean(j, &(qp->tterm))
+               if (qp->tterm.Booleans[j] == CANCELLED_BOOLEAN)
+               qp->tterm.Booleans[j] = ABSENT_BOOLEAN;
+           for_each_number(j, &(qp->tterm))
+               if (qp->tterm.Numbers[j] == CANCELLED_NUMERIC)
                qp->tterm.Numbers[j] = ABSENT_NUMERIC;
-       for_each_string(j, &(qp->tterm))
-           if (qp->tterm.Strings[j] == CANCELLED_STRING)
+           for_each_string(j, &(qp->tterm))
+               if (qp->tterm.Strings[j] == CANCELLED_STRING)
                qp->tterm.Strings[j] = ABSENT_STRING;
+       }
     }
 
     /*
@@ -418,19 +410,18 @@ int _nc_resolve_uses(void)
 
     DEBUG(2, ("RESOLUTION FINISHED"));
 
-    if (_nc_check_termtype != 0)
-    {
-       _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);
+    if (fullresolve)
+       if (_nc_check_termtype != 0) {
+           _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);
+    return (TRUE);
 }
 
 /*
@@ -442,14 +433,14 @@ int _nc_resolve_uses(void)
 #undef CUR
 #define CUR tp->
 
-static void sanity_check(TERMTYPE *tp)
+static void
+sanity_check(TERMTYPE * tp)
 {
-    if (!PRESENT(exit_attribute_mode))
-    {
-#ifdef __UNUSED__      /* this casts too wide a net */
-        bool       terminal_entry = !strchr(tp->term_names, '+');
+    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(set_attributes)
                || PRESENT(enter_standout_mode)
                || PRESENT(enter_underline_mode)
                || PRESENT(enter_blink_mode)
@@ -460,31 +451,31 @@ static void sanity_check(TERMTYPE *tp)
                || PRESENT(enter_reverse_mode)))
            _nc_warning("no exit_attribute_mode");
 #endif /* __UNUSED__ */
-       PAIRED(enter_standout_mode,     exit_standout_mode)
-       PAIRED(enter_underline_mode,    exit_underline_mode)
+       PAIRED(enter_standout_mode, exit_standout_mode)
+           PAIRED(enter_underline_mode, exit_underline_mode)
     }
 
-     /* listed in structure-member order of first argument */
-     PAIRED(enter_alt_charset_mode,          exit_alt_charset_mode)
-     ANDMISSING(enter_alt_charset_mode,      acs_chars)
-     ANDMISSING(exit_alt_charset_mode,       acs_chars)
-     ANDMISSING(enter_blink_mode,            exit_attribute_mode)
-     ANDMISSING(enter_bold_mode,             exit_attribute_mode)
-     PAIRED(exit_ca_mode,                    enter_ca_mode)
-     PAIRED(enter_delete_mode,               exit_delete_mode)
-     ANDMISSING(enter_dim_mode,              exit_attribute_mode)
-     PAIRED(enter_insert_mode,               exit_insert_mode)
-     ANDMISSING(enter_secure_mode,           exit_attribute_mode)
-     ANDMISSING(enter_protected_mode,        exit_attribute_mode)
-     ANDMISSING(enter_reverse_mode,          exit_attribute_mode)
-     PAIRED(from_status_line,                to_status_line)
-     PAIRED(meta_off,                        meta_on)
-
-     PAIRED(prtr_on,                         prtr_off)
-     PAIRED(save_cursor,                     restore_cursor)
-     PAIRED(enter_xon_mode,                  exit_xon_mode)
-     PAIRED(enter_am_mode,                   exit_am_mode)
-     ANDMISSING(label_off,                   label_on)
-     PAIRED(display_clock,                   remove_clock)
-     ANDMISSING(set_color_pair,              initialize_pair)
+    /* listed in structure-member order of first argument */
+    PAIRED(enter_alt_charset_mode, exit_alt_charset_mode);
+    ANDMISSING(enter_alt_charset_mode, acs_chars);
+    ANDMISSING(exit_alt_charset_mode, acs_chars);
+    ANDMISSING(enter_blink_mode, exit_attribute_mode);
+    ANDMISSING(enter_bold_mode, exit_attribute_mode);
+    PAIRED(exit_ca_mode, enter_ca_mode);
+    PAIRED(enter_delete_mode, exit_delete_mode);
+    ANDMISSING(enter_dim_mode, exit_attribute_mode);
+    PAIRED(enter_insert_mode, exit_insert_mode);
+    ANDMISSING(enter_secure_mode, exit_attribute_mode);
+    ANDMISSING(enter_protected_mode, exit_attribute_mode);
+    ANDMISSING(enter_reverse_mode, exit_attribute_mode);
+    PAIRED(from_status_line, to_status_line);
+    PAIRED(meta_off, meta_on);
+
+    PAIRED(prtr_on, prtr_off);
+    PAIRED(save_cursor, restore_cursor);
+    PAIRED(enter_xon_mode, exit_xon_mode);
+    PAIRED(enter_am_mode, exit_am_mode);
+    ANDMISSING(label_off, label_on);
+    PAIRED(display_clock, remove_clock);
+    ANDMISSING(set_color_pair, initialize_pair);
 }
index 152930885ab75ffa9dc459205fd85ad44dec7ac9..56ba1d1a5a59e3b4b3dcb5ae54f5927e71e0d215 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
 #include <curses.priv.h>
 
 #include <ctype.h>
+#include <term_entry.h>
 #include <tic.h>
 
-MODULE_ID("$Id: comp_scan.c,v 1.34 1998/11/01 00:56:39 tom Exp $")
+MODULE_ID("$Id: comp_scan.c,v 1.45 2000/07/08 00:43:55 tom Exp $")
 
 /*
  * Maximum length of string capability we'll accept before raising an error.
@@ -59,11 +60,14 @@ MODULE_ID("$Id: comp_scan.c,v 1.34 1998/11/01 00:56:39 tom Exp $")
 
 #define iswhite(ch)    (ch == ' '  ||  ch == '\t')
 
-int    _nc_syntax;             /* termcap or terminfo? */
-long   _nc_curr_file_pos;      /* file offset of current line */
-long   _nc_comment_start;      /* start of comment range before name */
-long   _nc_comment_end;        /* end of comment range before name */
-long   _nc_start_line;         /* start line of current entry */
+int _nc_syntax = 0;            /* termcap or terminfo? */
+long _nc_curr_file_pos = 0;    /* file offset of current line */
+long _nc_comment_start = 0;    /* start of comment range before name */
+long _nc_comment_end = 0;      /* end of comment range before name */
+long _nc_start_line = 0;       /* start line of current entry */
+
+struct token _nc_curr_token =
+{0, 0, 0};
 
 /*****************************************************************************
  *
@@ -74,21 +78,26 @@ long        _nc_start_line;         /* start line of current entry */
 static bool first_column;      /* See 'next_char()' below */
 static char separator;         /* capability separator */
 static int pushtype;           /* type of pushback token */
-static char pushname[MAX_NAME_SIZE+1];
+static char pushname[MAX_NAME_SIZE + 1];
+
+#ifdef NCURSES_EXT_FUNCS
+bool _nc_disable_period = FALSE; /* used by tic -a option */
+#endif
 
-static int  last_char(void);
-static int  next_char(void);
+static int last_char(void);
+static int next_char(void);
 static long stream_pos(void);
 static bool end_of_stream(void);
 static void push_back(char c);
 
 /* Assume we may be looking at a termcap-style continuation */
-static inline int eat_escaped_newline(int ch)
+static inline int
+eat_escaped_newline(int ch)
 {
-       if (ch == '\\')
-               while ((ch = next_char()) == '\n'  ||  iswhite(ch))
-                       continue;
-       return ch;
+    if (ch == '\\')
+       while ((ch = next_char()) == '\n' || iswhite(ch))
+           continue;
+    return ch;
 }
 
 /*
@@ -124,316 +133,306 @@ static inline int eat_escaped_newline(int ch)
  *
  */
 
-int _nc_get_token(void)
+int
+_nc_get_token(void)
 {
-static const char terminfo_punct[] = "@%&*!#";
-long           number;
-int            type;
-int            ch;
-char *         numchk;
-char           numbuf[80];
-unsigned       found;
-static char    buffer[MAX_ENTRY_SIZE];
-char           *ptr;
-int            dot_flag = FALSE;
-long           token_start;
-
-       if (pushtype != NO_PUSHBACK)
-       {
-           int retval = pushtype;
-
-           _nc_set_type(pushname);
-           DEBUG(3, ("pushed-back token: `%s', class %d",
-                     _nc_curr_token.tk_name, pushtype));
-
-           pushtype = NO_PUSHBACK;
-           pushname[0] = '\0';
-
-           /* currtok wasn't altered by _nc_push_token() */
-           return(retval);
-       }
-
-       if (end_of_stream())
-           return(EOF);
+    static const char terminfo_punct[] = "@%&*!#";
+    long number;
+    int type;
+    int ch;
+    char *numchk;
+    char numbuf[80];
+    unsigned found;
+    static char buffer[MAX_ENTRY_SIZE];
+    char *ptr;
+    int dot_flag = FALSE;
+    long token_start;
+
+    if (pushtype != NO_PUSHBACK) {
+       int retval = pushtype;
+
+       _nc_set_type(pushname);
+       DEBUG(3, ("pushed-back token: `%s', class %d",
+               _nc_curr_token.tk_name, pushtype));
 
-start_token:
-       token_start = stream_pos();
-       while ((ch = next_char()) == '\n'  ||  iswhite(ch))
-           continue;
+       pushtype = NO_PUSHBACK;
+       pushname[0] = '\0';
 
-       ch = eat_escaped_newline(ch);
+       /* currtok wasn't altered by _nc_push_token() */
+       return (retval);
+    }
 
-       if (ch == EOF)
-           type = EOF;
-       else {
-           /* if this is a termcap entry, skip a leading separator */
-           if (separator == ':' && ch == ':')
-               ch = next_char();
+    if (end_of_stream())
+       return (EOF);
 
-           if (ch == '.') {
-                       dot_flag = TRUE;
-                       DEBUG(8, ("dot-flag set"));
+  start_token:
+    token_start = stream_pos();
+    while ((ch = next_char()) == '\n' || iswhite(ch))
+       continue;
 
-                       while ((ch = next_char())=='.' || iswhite(ch))
-                           continue;
-           }
+    ch = eat_escaped_newline(ch);
 
-           if (ch == EOF) {
-               type = EOF;
-               goto end_of_token;
-           }
+    if (ch == EOF)
+       type = EOF;
+    else {
+       /* if this is a termcap entry, skip a leading separator */
+       if (separator == ':' && ch == ':')
+           ch = next_char();
 
-           /* have to make some punctuation chars legal for terminfo */
-           if (!isalnum(ch) && !strchr(terminfo_punct, (char)ch)) {
-                _nc_warning("Illegal character (expected alphanumeric or %s) - %s",
-                       terminfo_punct, _tracechar((chtype)ch));
-                _nc_panic_mode(separator);
-                goto start_token;
-           }
+       if (ch == '.'
+#ifdef NCURSES_EXT_FUNCS
+        && !_nc_disable_period
+#endif
+       ) {
+           dot_flag = TRUE;
+           DEBUG(8, ("dot-flag set"));
 
-           ptr = buffer;
-           *(ptr++) = ch;
-
-           if (first_column) {
-                       char    *desc;
-
-                       _nc_comment_start = token_start;
-                       _nc_comment_end = _nc_curr_file_pos;
-                       _nc_start_line = _nc_curr_line;
-
-                       _nc_syntax = ERR;
-                       while ((ch = next_char()) != '\n')
-                       {
-                           if (ch == EOF)
-                               _nc_err_abort("premature EOF");
-                           else if (ch == ':' && last_char() != ',')
-                           {
-                               _nc_syntax = SYN_TERMCAP;
-                               separator = ':';
-                               break;
-                           }
-                           else if (ch == ',')
-                           {
-                               _nc_syntax = SYN_TERMINFO;
-                               separator = ',';
-                               /*
-                                * Fall-through here is not an accident.
-                                * The idea is that if we see a comma, we
-                                * figure this is terminfo unless we
-                                * subsequently run into a colon -- but
-                                * we don't stop looking for that colon until
-                                * hitting a newline.  This allows commas to
-                                * be embedded in description fields of
-                                * either syntax.
-                                */
-                               /* FALLTHRU */
-                           }
-                           else
-                               ch = eat_escaped_newline(ch);
-
-                           *ptr++ = ch;
-                       }
-                       ptr[0] = '\0';
-                       if (_nc_syntax == ERR)
-                       {
-                           /*
-                            * Grrr...what we ought to do here is barf,
-                            * complaining that the entry is malformed.
-                            * But because a couple of name fields in the
-                            * 8.2 termcap file end with |\, we just have
-                            * to assume it's termcap syntax.
-                            */
-                           _nc_syntax = SYN_TERMCAP;
-                           separator = ':';
-                       }
-                       else if (_nc_syntax == SYN_TERMINFO)
-                       {
-                           /* throw away trailing /, *$/ */
-                           for (--ptr; iswhite(*ptr) || *ptr == ','; ptr--)
-                               continue;
-                           ptr[1] = '\0';
-                       }
+           while ((ch = next_char()) == '.' || iswhite(ch))
+               continue;
+       }
 
-                       /*
-                        * This is the soonest we have the terminal name
-                        * fetched.  Set up for following warning messages.
-                        */
-                       ptr = strchr(buffer, '|');
-                       if (ptr == (char *)NULL)
-                           ptr = buffer + strlen(buffer);
-                       ch = *ptr;
-                       *ptr = '\0';
-                       _nc_set_type(buffer);
-                       *ptr = ch;
-
-                       /*
-                        * Compute the boundary between the aliases and the
-                        * description field for syntax-checking purposes.
-                        */
-                       desc = strrchr(buffer, '|');
-                       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);
-
-                       /*
-                        * Whitespace in a name field other than the long name
-                        * can confuse rdist and some termcap tools.  Slashes
-                        * are a no-no.  Other special characters can be
-                        * dangerous due to shell expansion.
-                        */
-                       for (ptr = buffer; ptr < desc; ptr++)
-                       {
-                           if (isspace(*ptr))
-                           {
-                               _nc_warning("whitespace in name or alias field");
-                               break;
-                           }
-                           else if (*ptr == '/')
-                           {
-                               _nc_warning("slashes aren't allowed in names or aliases");
-                               break;
-                           }
-                           else if (strchr("$[]!*?", *ptr))
-                           {
-                               _nc_warning("dubious character `%c' in name or alias field", *ptr);
-                               break;
-                           }
-                       }
+       if (ch == EOF) {
+           type = EOF;
+           goto end_of_token;
+       }
 
-                       ptr = buffer;
+       /* have to make some punctuation chars legal for terminfo */
+       if (!isalnum(ch)
+#ifdef NCURSES_EXT_FUNCS
+        && !(ch == '.' && _nc_disable_period)
+#endif
+        && !strchr(terminfo_punct, (char) ch)) {
+           _nc_warning("Illegal character (expected alphanumeric or %s) - %s",
+               terminfo_punct, unctrl(ch));
+           _nc_panic_mode(separator);
+           goto start_token;
+       }
 
-                       _nc_curr_token.tk_name = buffer;
-                       type = NAMES;
-           } else {
-                       while ((ch = next_char()) != EOF) {
-                               if (!isalnum(ch)) {
-                                       if (_nc_syntax == SYN_TERMINFO) {
-                                               if (ch != '_')
-                                                       break;
-                                       } else { /* allow ';' for "k;" */
-                                               if (ch != ';')
-                                                       break;
-                                       }
-                               }
-                               *(ptr++) = ch;
-                       }
+       ptr = buffer;
+       *(ptr++) = ch;
 
-                       *ptr++ = '\0';
-                       switch (ch) {
-                       case ',':
-                       case ':':
-                               if (ch != separator)
-                                       _nc_err_abort("Separator inconsistent with syntax");
-                               _nc_curr_token.tk_name = buffer;
-                               type = BOOLEAN;
-                               break;
-                       case '@':
-                               if ((ch = next_char()) != separator)
-                                       _nc_warning("Missing separator after `%s', have %s",
-                                               buffer, _tracechar((chtype)ch));
-                               _nc_curr_token.tk_name = buffer;
-                               type = CANCEL;
-                               break;
-
-                       case '#':
-                               found  = 0;
-                               while (isalnum(ch = next_char())) {
-                                       numbuf[found++] = ch;
-                                       if (found >= sizeof(numbuf)-1)
-                                               break;
-                               }
-                               numbuf[found] = '\0';
-                               number = strtol(numbuf, &numchk, 0);
-                               if (numchk == numbuf)
-                                       _nc_warning("no value given for `%s'", buffer);
-                               if ((*numchk != '\0') || (ch != separator))
-                                       _nc_warning("Missing separator");
-                               _nc_curr_token.tk_name = buffer;
-                               _nc_curr_token.tk_valnumber = number;
-                               type = NUMBER;
-                               break;
-
-                       case '=':
-                               ch = _nc_trans_string(ptr);
-                               if (ch != separator)
-                                       _nc_warning("Missing separator");
-                               _nc_curr_token.tk_name = buffer;
-                               _nc_curr_token.tk_valstring = ptr;
-                               type = STRING;
-                               break;
-
-                       case EOF:
-                               type = EOF;
-                               break;
-                       default:
-                               /* just to get rid of the compiler warning */
-                               type = UNDEF;
-                               _nc_warning("Illegal character - %s",
-                                       _tracechar((chtype)ch));
-                       }
-               } /* end else (first_column == FALSE) */
-       } /* end else (ch != EOF) */
+       if (first_column) {
+           char *desc;
 
-end_of_token:
+           _nc_comment_start = token_start;
+           _nc_comment_end = _nc_curr_file_pos;
+           _nc_start_line = _nc_curr_line;
 
-#ifdef TRACE
-       if (dot_flag == TRUE)
-           DEBUG(8, ("Commented out "));
-
-       if (_nc_tracing & TRACE_IEVENT)
-       {
-           fprintf(stderr, "Token: ");
-           switch (type)
-           {
-               case BOOLEAN:
-                   fprintf(stderr, "Boolean; name='%s'\n",
-                           _nc_curr_token.tk_name);
+           _nc_syntax = ERR;
+           while ((ch = next_char()) != '\n') {
+               if (ch == EOF)
+                   _nc_err_abort("premature EOF");
+               else if (ch == ':' && last_char() != ',') {
+                   _nc_syntax = SYN_TERMCAP;
+                   separator = ':';
                    break;
+               } else if (ch == ',') {
+                   _nc_syntax = SYN_TERMINFO;
+                   separator = ',';
+                   /*
+                    * Fall-through here is not an accident.
+                    * The idea is that if we see a comma, we
+                    * figure this is terminfo unless we
+                    * subsequently run into a colon -- but
+                    * we don't stop looking for that colon until
+                    * hitting a newline.  This allows commas to
+                    * be embedded in description fields of
+                    * either syntax.
+                    */
+                   /* FALLTHRU */
+               } else
+                   ch = eat_escaped_newline(ch);
+
+               *ptr++ = ch;
+           }
+           ptr[0] = '\0';
+           if (_nc_syntax == ERR) {
+               /*
+                * Grrr...what we ought to do here is barf,
+                * complaining that the entry is malformed.
+                * But because a couple of name fields in the
+                * 8.2 termcap file end with |\, we just have
+                * to assume it's termcap syntax.
+                */
+               _nc_syntax = SYN_TERMCAP;
+               separator = ':';
+           } else if (_nc_syntax == SYN_TERMINFO) {
+               /* throw away trailing /, *$/ */
+               for (--ptr; iswhite(*ptr) || *ptr == ','; ptr--)
+                   continue;
+               ptr[1] = '\0';
+           }
 
-               case NUMBER:
-                   fprintf(stderr, "Number;  name='%s', value=%d\n",
-                           _nc_curr_token.tk_name,
-                           _nc_curr_token.tk_valnumber);
+           /*
+            * This is the soonest we have the terminal name
+            * fetched.  Set up for following warning messages.
+            */
+           ptr = strchr(buffer, '|');
+           if (ptr == (char *) NULL)
+               ptr = buffer + strlen(buffer);
+           ch = *ptr;
+           *ptr = '\0';
+           _nc_set_type(buffer);
+           *ptr = ch;
+
+           /*
+            * Compute the boundary between the aliases and the
+            * description field for syntax-checking purposes.
+            */
+           desc = strrchr(buffer, '|');
+           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);
+
+           /*
+            * Whitespace in a name field other than the long name
+            * can confuse rdist and some termcap tools.  Slashes
+            * are a no-no.  Other special characters can be
+            * dangerous due to shell expansion.
+            */
+           for (ptr = buffer; ptr < desc; ptr++) {
+               if (isspace(*ptr)) {
+                   _nc_warning("whitespace in name or alias field");
                    break;
-
-               case STRING:
-                   fprintf(stderr, "String;  name='%s', value=%s\n",
-                           _nc_curr_token.tk_name,
-                           _nc_visbuf(_nc_curr_token.tk_valstring));
+               } else if (*ptr == '/') {
+                   _nc_warning("slashes aren't allowed in names or aliases");
                    break;
-
-               case CANCEL:
-                   fprintf(stderr, "Cancel; name='%s'\n",
-                           _nc_curr_token.tk_name);
+               } else if (strchr("$[]!*?", *ptr)) {
+                   _nc_warning("dubious character `%c' in name or alias field", *ptr);
                    break;
+               }
+           }
 
-               case NAMES:
+           ptr = buffer;
 
-                   fprintf(stderr, "Names; value='%s'\n",
-                           _nc_curr_token.tk_name);
-                   break;
+           _nc_curr_token.tk_name = buffer;
+           type = NAMES;
+       } else {
+           while ((ch = next_char()) != EOF) {
+               if (!isalnum(ch)) {
+                   if (_nc_syntax == SYN_TERMINFO) {
+                       if (ch != '_')
+                           break;
+                   } else {    /* allow ';' for "k;" */
+                       if (ch != ';')
+                           break;
+                   }
+               }
+               *(ptr++) = ch;
+           }
 
-               case EOF:
-                   fprintf(stderr, "End of file\n");
-                   break;
+           *ptr++ = '\0';
+           switch (ch) {
+           case ',':
+           case ':':
+               if (ch != separator)
+                   _nc_err_abort("Separator inconsistent with syntax");
+               _nc_curr_token.tk_name = buffer;
+               type = BOOLEAN;
+               break;
+           case '@':
+               if ((ch = next_char()) != separator)
+                   _nc_warning("Missing separator after `%s', have %s",
+                       buffer, unctrl(ch));
+               _nc_curr_token.tk_name = buffer;
+               type = CANCEL;
+               break;
 
-               default:
-                   _nc_warning("Bad token type");
+           case '#':
+               found = 0;
+               while (isalnum(ch = next_char())) {
+                   numbuf[found++] = ch;
+                   if (found >= sizeof(numbuf) - 1)
+                       break;
+               }
+               numbuf[found] = '\0';
+               number = strtol(numbuf, &numchk, 0);
+               if (numchk == numbuf)
+                   _nc_warning("no value given for `%s'", buffer);
+               if ((*numchk != '\0') || (ch != separator))
+                   _nc_warning("Missing separator");
+               _nc_curr_token.tk_name = buffer;
+               _nc_curr_token.tk_valnumber = number;
+               type = NUMBER;
+               break;
+
+           case '=':
+               ch = _nc_trans_string(ptr, buffer + sizeof(buffer));
+               if (ch != separator)
+                   _nc_warning("Missing separator");
+               _nc_curr_token.tk_name = buffer;
+               _nc_curr_token.tk_valstring = ptr;
+               type = STRING;
+               break;
+
+           case EOF:
+               type = EOF;
+               break;
+           default:
+               /* just to get rid of the compiler warning */
+               type = UNDEF;
+               _nc_warning("Illegal character - %s", unctrl(ch));
            }
+       }                       /* end else (first_column == FALSE) */
+    }                          /* end else (ch != EOF) */
+
+  end_of_token:
+
+#ifdef TRACE
+    if (dot_flag == TRUE)
+       DEBUG(8, ("Commented out "));
+
+    if (_nc_tracing >= DEBUG_LEVEL(7)) {
+       switch (type) {
+       case BOOLEAN:
+           _tracef("Token: Boolean; name='%s'",
+               _nc_curr_token.tk_name);
+           break;
+
+       case NUMBER:
+           _tracef("Token: Number;  name='%s', value=%d",
+               _nc_curr_token.tk_name,
+               _nc_curr_token.tk_valnumber);
+           break;
+
+       case STRING:
+           _tracef("Token: String;  name='%s', value=%s",
+               _nc_curr_token.tk_name,
+               _nc_visbuf(_nc_curr_token.tk_valstring));
+           break;
+
+       case CANCEL:
+           _tracef("Token: Cancel; name='%s'",
+               _nc_curr_token.tk_name);
+           break;
+
+       case NAMES:
+
+           _tracef("Token: Names; value='%s'",
+               _nc_curr_token.tk_name);
+           break;
+
+       case EOF:
+           _tracef("Token: End of file");
+           break;
+
+       default:
+           _nc_warning("Bad token type");
        }
+    }
 #endif
 
-       if (dot_flag == TRUE)           /* if commented out, use the next one */
-           type = _nc_get_token();
+    if (dot_flag == TRUE)      /* if commented out, use the next one */
+       type = _nc_get_token();
 
-       DEBUG(3, ("token: `%s', class %d", _nc_curr_token.tk_name, type));
+    DEBUG(3, ("token: `%s', class %d", _nc_curr_token.tk_name, type));
 
-       return(type);
+    return (type);
 }
 
 /*
@@ -456,120 +455,150 @@ end_of_token:
  */
 
 char
-_nc_trans_string(char *ptr)
+_nc_trans_string(char *ptr, char *last)
 {
-int    count = 0;
-int    number;
-int    i, c;
-chtype ch, last_ch = '\0';
-bool   ignored = FALSE;
-
-       while ((ch = c = next_char()) != (chtype)separator && c != EOF) {
-           if ((_nc_syntax == SYN_TERMCAP) && c == '\n')
-               break;
-           if (ch == '^' && last_ch != '%') {
-               ch = c = next_char();
-               if (c == EOF)
-                   _nc_err_abort("Premature EOF");
-
-               if (! (is7bits(ch) && isprint(ch))) {
-                   _nc_warning("Illegal ^ character - %s",
-                       _tracechar((unsigned char)ch));
-               }
-               if (ch == '?') {
-                   *(ptr++) = '\177';
-               } else {
-                   if ((ch &= 037) == 0)
-                       ch = 128;
-                   *(ptr++) = (char)(ch);
-               }
+    int count = 0;
+    int number;
+    int i, c;
+    chtype ch, last_ch = '\0';
+    bool ignored = FALSE;
+    bool long_warning = FALSE;
+
+    while ((ch = c = next_char()) != (chtype) separator && c != EOF) {
+       if (ptr == (last - 1))
+           break;
+       if ((_nc_syntax == SYN_TERMCAP) && c == '\n')
+           break;
+       if (ch == '^' && last_ch != '%') {
+           ch = c = next_char();
+           if (c == EOF)
+               _nc_err_abort("Premature EOF");
+
+           if (!(is7bits(ch) && isprint(ch))) {
+               _nc_warning("Illegal ^ character - %s", unctrl(ch));
+           }
+           if (ch == '?') {
+               *(ptr++) = '\177';
+               if (_nc_tracing)
+                   _nc_warning("Allow ^? as synonym for \\177");
+           } else {
+               if ((ch &= 037) == 0)
+                   ch = 128;
+               *(ptr++) = (char) (ch);
            }
-           else if (ch == '\\') {
-               ch = c = next_char();
-               if (c == EOF)
-                   _nc_err_abort("Premature EOF");
-
-               if (ch >= '0'  &&  ch <= '7') {
-                   number = ch - '0';
-                   for (i=0; i < 2; i++) {
-                       ch = c = next_char();
-                       if (c == EOF)
-                           _nc_err_abort("Premature EOF");
-
-                       if (c < '0'  ||  c > '7') {
-                           if (isdigit(c)) {
-                               _nc_warning("Non-octal digit `%c' in \\ sequence", c);
-                               /* allow the digit; it'll do less harm */
-                           } else {
-                               push_back((char)c);
-                               break;
-                           }
+       } else if (ch == '\\') {
+           ch = c = next_char();
+           if (c == EOF)
+               _nc_err_abort("Premature EOF");
+
+           if (ch >= '0' && ch <= '7') {
+               number = ch - '0';
+               for (i = 0; i < 2; i++) {
+                   ch = c = next_char();
+                   if (c == EOF)
+                       _nc_err_abort("Premature EOF");
+
+                   if (c < '0' || c > '7') {
+                       if (isdigit(c)) {
+                           _nc_warning("Non-octal digit `%c' in \\ sequence", c);
+                           /* allow the digit; it'll do less harm */
+                       } else {
+                           push_back((char) c);
+                           break;
                        }
-
-                       number = number * 8 + c - '0';
                    }
 
-                   if (number == 0)
-                       number = 0200;
-                   *(ptr++) = (char) number;
-               } else {
-                   switch (c) {
-                       case 'E':
-                       case 'e':       *(ptr++) = '\033';      break;
+                   number = number * 8 + c - '0';
+               }
+
+               if (number == 0)
+                   number = 0200;
+               *(ptr++) = (char) number;
+           } else {
+               switch (c) {
+               case 'E':
+               case 'e':
+                   *(ptr++) = '\033';
+                   break;
 
-                       case 'a':       *(ptr++) = '\007';      break;
+               case 'a':
+                   *(ptr++) = '\007';
+                   break;
 
-                       case 'l':
-                       case 'n':       *(ptr++) = '\n';        break;
+               case 'l':
+               case 'n':
+                   *(ptr++) = '\n';
+                   break;
 
-                       case 'r':       *(ptr++) = '\r';        break;
+               case 'r':
+                   *(ptr++) = '\r';
+                   break;
 
-                       case 'b':       *(ptr++) = '\010';      break;
+               case 'b':
+                   *(ptr++) = '\010';
+                   break;
 
-                       case 's':       *(ptr++) = ' ';         break;
+               case 's':
+                   *(ptr++) = ' ';
+                   break;
 
-                       case 'f':       *(ptr++) = '\014';      break;
+               case 'f':
+                   *(ptr++) = '\014';
+                   break;
 
-                       case 't':       *(ptr++) = '\t';        break;
+               case 't':
+                   *(ptr++) = '\t';
+                   break;
 
-                       case '\\':      *(ptr++) = '\\';        break;
+               case '\\':
+                   *(ptr++) = '\\';
+                   break;
 
-                       case '^':       *(ptr++) = '^';         break;
+               case '^':
+                   *(ptr++) = '^';
+                   break;
 
-                       case ',':       *(ptr++) = ',';         break;
+               case ',':
+                   *(ptr++) = ',';
+                   break;
 
-                       case ':':       *(ptr++) = ':';         break;
+               case ':':
+                   *(ptr++) = ':';
+                   break;
 
-                       case '\n':
-                           continue;
+               case '\n':
+                   continue;
 
-                       default:
-                           _nc_warning("Illegal character %s in \\ sequence",
-                                   _tracechar((unsigned char)ch));
-                           *(ptr++) = (char)ch;
-                   } /* endswitch (ch) */
-               } /* endelse (ch < '0' ||  ch > '7') */
-           } /* end else if (ch == '\\') */
-           else if (ch == '\n' && (_nc_syntax == SYN_TERMINFO)) {
-               /* newlines embedded in a terminfo string are ignored */
-               ignored = TRUE;
-           } else {
-               *(ptr++) = (char)ch;
-           }
+               default:
+                   _nc_warning("Illegal character %s in \\ sequence",
+                       unctrl(ch));
+                   *(ptr++) = (char) ch;
+               }               /* endswitch (ch) */
+           }                   /* endelse (ch < '0' ||  ch > '7') */
+       }
+       /* end else if (ch == '\\') */
+       else if (ch == '\n' && (_nc_syntax == SYN_TERMINFO)) {
+           /* newlines embedded in a terminfo string are ignored */
+           ignored = TRUE;
+       } else {
+           *(ptr++) = (char) ch;
+       }
 
-           if (!ignored) {
-               last_ch = ch;
-               count ++;
-           }
-           ignored = FALSE;
+       if (!ignored) {
+           last_ch = ch;
+           count++;
+       }
+       ignored = FALSE;
 
-           if (count > MAXCAPLEN)
-               _nc_warning("Very long string found.  Missing separator?");
-       } /* end while */
+       if (count > MAXCAPLEN && !long_warning) {
+           _nc_warning("Very long string found.  Missing separator?");
+           long_warning = TRUE;
+       }
+    }                          /* end while */
 
-       *ptr = '\0';
+    *ptr = '\0';
 
-       return(ch);
+    return (ch);
 }
 
 /*
@@ -579,7 +608,8 @@ bool        ignored = FALSE;
  *     get_token() call.
  */
 
-void _nc_push_token(int tokclass)
+void
+_nc_push_token(int tokclass)
 {
     /*
      * This implementation is kind of bogus, it will fail if we ever do
@@ -591,23 +621,24 @@ void _nc_push_token(int tokclass)
     _nc_get_type(pushname);
 
     DEBUG(3, ("pushing token: `%s', class %d",
-             _nc_curr_token.tk_name, pushtype));
+           _nc_curr_token.tk_name, pushtype));
 }
 
 /*
  * Panic mode error recovery - skip everything until a "ch" is found.
  */
-void _nc_panic_mode(char ch)
+void
+_nc_panic_mode(char ch)
 {
-       int c;
-
-       for (;;) {
-               c = next_char();
-               if (c == ch)
-                       return;
-               if (c == EOF)
-                       return;
-       }
+    int c;
+
+    for (;;) {
+       c = next_char();
+       if (c == ch)
+           return;
+       if (c == EOF)
+           return;
+    }
 }
 
 /*****************************************************************************
@@ -630,16 +661,17 @@ static FILE *yyin;                /* scanner's input file descriptor */
  *     non-null.
  */
 
-void _nc_reset_input(FILE *fp, char *buf)
+void
+_nc_reset_input(FILE * fp, char *buf)
 {
-       pushtype = NO_PUSHBACK;
-       pushname[0] = '\0';
-       yyin = fp;
-       bufstart = bufptr = buf;
-       _nc_curr_file_pos = 0L;
-       if (fp != 0)
-               _nc_curr_line = 0;
-       _nc_curr_col = 0;
+    pushtype = NO_PUSHBACK;
+    pushname[0] = '\0';
+    yyin = fp;
+    bufstart = bufptr = buf;
+    _nc_curr_file_pos = 0L;
+    if (fp != 0)
+       _nc_curr_line = 0;
+    _nc_curr_col = 0;
 }
 
 /*
@@ -650,12 +682,12 @@ void _nc_reset_input(FILE *fp, char *buf)
 static int
 last_char(void)
 {
-       size_t len = strlen(bufptr);
-       while (len--) {
-               if (!isspace(bufptr[len]))
-                       return bufptr[len];
-       }
-       return 0;
+    size_t len = strlen(bufptr);
+    while (len--) {
+       if (!isspace(bufptr[len]))
+           return bufptr[len];
+    }
+    return 0;
 }
 
 /*
@@ -675,17 +707,14 @@ last_char(void)
 static int
 next_char(void)
 {
-    if (!yyin)
-    {
+    if (!yyin) {
        if (*bufptr == '\0')
-           return(EOF);
+           return (EOF);
        if (*bufptr == '\n') {
            _nc_curr_line++;
            _nc_curr_col = 0;
        }
-    }
-    else if (!bufptr || !*bufptr)
-    {
+    } else if (!bufptr || !*bufptr) {
        /*
         * In theory this could be recoded to do its I/O one
         * character at a time, saving the buffer space.  In
@@ -697,15 +726,15 @@ next_char(void)
        size_t len;
 
        do {
-              _nc_curr_file_pos = ftell(yyin);
+           _nc_curr_file_pos = ftell(yyin);
 
-              if ((bufstart = fgets(line, LEXBUFSIZ, yyin)) != NULL) {
-                  _nc_curr_line++;
-                  _nc_curr_col = 0;
-              }
-              bufptr = bufstart;
-          } while
-              (bufstart != NULL && line[0] == '#');
+           if ((bufstart = fgets(line, LEXBUFSIZ, yyin)) != NULL) {
+               _nc_curr_line++;
+               _nc_curr_col = 0;
+           }
+           bufptr = bufstart;
+       } while
+           (bufstart != NULL && line[0] == '#');
 
        if (bufstart == NULL)
            return (EOF);
@@ -718,10 +747,10 @@ next_char(void)
         * files on OS/2, etc.
         */
        if ((len = strlen(bufptr)) > 1) {
-           if (bufptr[len-1] == '\n'
-            && bufptr[len-2] == '\r') {
-               bufptr[len-2] = '\n';
-               bufptr[len-1] = '\0';
+           if (bufptr[len - 1] == '\n'
+               && bufptr[len - 2] == '\r') {
+               bufptr[len - 2] = '\n';
+               bufptr[len - 1] = '\0';
            }
        }
     }
@@ -729,28 +758,31 @@ next_char(void)
     first_column = (bufptr == bufstart);
 
     _nc_curr_col++;
-    return(*bufptr++);
+    return (*bufptr++);
 }
 
-static void push_back(char c)
+static void
+push_back(char c)
 /* push a character back onto the input stream */
 {
     if (bufptr == bufstart)
-           _nc_syserr_abort("Can't backspace off beginning of line");
+       _nc_syserr_abort("Can't backspace off beginning of line");
     *--bufptr = c;
 }
 
-static long stream_pos(void)
+static long
+stream_pos(void)
 /* return our current character position in the input stream */
 {
     return (yyin ? ftell(yyin) : (bufptr ? bufptr - bufstart : 0));
 }
 
-static bool end_of_stream(void)
+static bool
+end_of_stream(void)
 /* are we at end of input? */
 {
     return ((yyin ? feof(yyin) : (bufptr && *bufptr == '\0'))
-           ? TRUE : FALSE);
+       ? TRUE : FALSE);
 }
 
 /* comp_scan.c ends here */
index 203ec89ed35961dd1fd025bff2f229be64764931..aba1aeb9d82f0f05f4517be37644d59e6ee79f20 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1999,2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
 #include <tic.h>
 #include <term_entry.h>
 
-MODULE_ID("$Id: free_ttype.c,v 1.2 1999/03/01 00:30:35 tom Exp $")
+MODULE_ID("$Id: free_ttype.c,v 1.5 2000/07/08 00:43:58 tom Exp $")
 
 void _nc_free_termtype(TERMTYPE *ptr)
 {
-       FreeIfNeeded(ptr->str_table);
-       FreeIfNeeded(ptr->term_names);
+    FreeIfNeeded(ptr->str_table);
+    FreeIfNeeded(ptr->term_names);
+    FreeIfNeeded(ptr->Booleans);
+    FreeIfNeeded(ptr->Numbers);
+    FreeIfNeeded(ptr->Strings);
 #if NCURSES_XNAMES
-       FreeIfNeeded(ptr->ext_str_table);
-       FreeIfNeeded(ptr->Booleans);
-       FreeIfNeeded(ptr->Numbers);
-       FreeIfNeeded(ptr->Strings);
-       FreeIfNeeded(ptr->ext_Names);
+    FreeIfNeeded(ptr->ext_str_table);
+    FreeIfNeeded(ptr->ext_Names);
 #endif
-       memset(ptr, 0, sizeof(TERMTYPE));
+    memset(ptr, 0, sizeof(TERMTYPE));
 }
 
 #if NCURSES_XNAMES
@@ -65,8 +65,8 @@ bool _nc_user_definable = TRUE;
 
 int use_extended_names(bool flag)
 {
-       int oldflag = _nc_user_definable;
-       _nc_user_definable = flag;
-       return oldflag;
+    int oldflag = _nc_user_definable;
+    _nc_user_definable = flag;
+    return oldflag;
 }
 #endif
index a720da181e5e53aba49226a255f39e0632bb891e..1134480f8def9fc423c0666770ae98ab6471c6c5 100644 (file)
@@ -32,7 +32,7 @@
                        /* 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 $")
+MODULE_ID("$Id: init_keytry.c,v 1.3 2000/03/12 02:55:50 Todd.C.Miller Exp $")
 
 /*
 **      _nc_init_keytry()
@@ -41,7 +41,7 @@ MODULE_ID("$Id: init_keytry.c,v 1.2 1999/09/11 17:32:57 Jeffrey.Honig Exp $")
 **
 */
 
-#ifdef BROKEN_LINKER
+#if    BROKEN_LINKER
 #undef _nc_tinfo_fkeys
 #endif
 
@@ -51,7 +51,7 @@ MODULE_ID("$Id: init_keytry.c,v 1.2 1999/09/11 17:32:57 Jeffrey.Honig Exp $")
 /* LINT_PREPRO
 #endif*/
 
-#ifdef BROKEN_LINKER
+#if    BROKEN_LINKER
 struct tinfo_fkeys *_nc_tinfo_fkeysf(void)
 {
        return _nc_tinfo_fkeys;
index d3c782e8e664f2ba30f2a1785c81a5d5fa430880..6f07791574130dd471fa3d698ab31f29329793a2 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,9 +36,9 @@
 #include <curses.priv.h>
 #include <term.h>      /* ena_acs, acs_chars */
 
-MODULE_ID("$Id: lib_acs.c,v 1.15 1999/02/18 11:31:43 tom Exp $")
+MODULE_ID("$Id: lib_acs.c,v 1.16 1999/10/30 23:00:16 tom Exp $")
 
-chtype acs_map[ACS_LEN];
+chtype acs_map[ACS_LEN] = { 0 };
 
 void _nc_init_acs(void)
 {
index 3250147c8066eaede2749d01a01a0362bf3ed6ad..7d0aa127d9dbb5c11155ca3837fdb2ad845eec9f 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,9 +40,9 @@
 #include <term_entry.h>        /* TTY, cur_term */
 #include <termcap.h>   /* ospeed */
 
-MODULE_ID("$Id: lib_cur_term.c,v 1.8 1999/07/24 20:08:19 tom Exp $")
+MODULE_ID("$Id: lib_cur_term.c,v 1.9 1999/10/30 23:00:16 tom Exp $")
 
-TERMINAL *cur_term;
+TERMINAL *cur_term = 0;
 
 TERMINAL *set_curterm(TERMINAL *termp)
 {
index a85304bf1cb687a455c2286c6e19d101a26340ac..1bd5c647f029974996c7215c644a60a9758e0d24 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*
  *     lib_napms.c
  *
 
 #if HAVE_NANOSLEEP
 #include <time.h>
+#if HAVE_SYS_TIME_H
+#include <sys/time.h>          /* needed for MacOS X DP3 */
+#endif
 #elif USE_FUNC_POLL
-#include <stropts.h>
-#include <poll.h>
 #if HAVE_SYS_TIME_H
 #include <sys/time.h>
 #endif
 #endif
 #endif
 
-MODULE_ID("$Id: lib_napms.c,v 1.6 1999/10/21 23:01:41 tom Exp $")
+MODULE_ID("$Id: lib_napms.c,v 1.9 2000/04/29 23:42:56 tom Exp $")
 
-int napms(int ms)
+int
+napms(int ms)
 {
-       T((T_CALLED("napms(%d)"), ms));
+    T((T_CALLED("napms(%d)"), ms));
 
 #if HAVE_NANOSLEEP
-       {
-               struct timespec ts;
-               ts.tv_sec = ms / 1000;
-               ts.tv_nsec = (ms % 1000) * 1000000;
-               nanosleep(&ts, NULL);
-       }
+    {
+       struct timespec ts;
+       ts.tv_sec = ms / 1000;
+       ts.tv_nsec = (ms % 1000) * 1000000;
+       nanosleep(&ts, NULL);
+    }
 #elif USE_FUNC_POLL
-       {
-               struct pollfd fds[1];
-               poll(fds, 0, ms);
-       }
+    {
+       struct pollfd fds[1];
+       poll(fds, 0, ms);
+    }
 #elif HAVE_SELECT
-       {
-               struct timeval tval;
-               tval.tv_sec = ms / 1000;
-               tval.tv_usec = (ms % 1000) * 1000;
-               select(0, NULL, NULL, NULL, &tval);
-       }
+    {
+       struct timeval tval;
+       tval.tv_sec = ms / 1000;
+       tval.tv_usec = (ms % 1000) * 1000;
+       select(0, NULL, NULL, NULL, &tval);
+    }
 #endif
-       returnCode(OK);
+    returnCode(OK);
 }
index 0bc14156d6744ab16be9037e505458f206ed5bff..b58602af72bbec024892408cc4fa5874406222d7 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*
 **     lib_options.c
 **
 
 #include <curses.priv.h>
 
-#include <term.h>      /* keypad_xmit, keypad_local, meta_on, meta_off */
-                       /* cursor_visible,cursor_normal,cursor_invisible */
+#include <term.h>
 
-MODULE_ID("$Id: lib_options.c,v 1.36 1999/10/22 21:38:57 tom Exp $")
+MODULE_ID("$Id: lib_options.c,v 1.39 2000/03/12 00:19:11 tom Exp $")
 
-int idlok(WINDOW *win,  bool flag)
+int
+idlok(WINDOW *win, bool flag)
 {
-       T((T_CALLED("idlok(%p,%d)"), win, flag));
+    T((T_CALLED("idlok(%p,%d)"), win, flag));
 
-       if (win) {
-         _nc_idlok = win->_idlok = flag && (has_il() || change_scroll_region);
-         returnCode(OK);
-       }
-       else
-         returnCode(ERR);
+    if (win) {
+       _nc_idlok = win->_idlok = (flag && (has_il() || change_scroll_region));
+       returnCode(OK);
+    } else
+       returnCode(ERR);
 }
 
-
-void idcok(WINDOW *win, bool flag)
+void
+idcok(WINDOW *win, bool flag)
 {
-       T((T_CALLED("idcok(%p,%d)"), win, flag));
+    T((T_CALLED("idcok(%p,%d)"), win, flag));
 
-       if (win)
-         _nc_idcok = win->_idcok = flag && has_ic();
+    if (win)
+       _nc_idcok = win->_idcok = (flag && has_ic());
 
-       returnVoid;
+    returnVoid;
 }
 
-int halfdelay(int t)
+int
+halfdelay(int t)
 {
-       T((T_CALLED("halfdelay(%d)"), t));
+    T((T_CALLED("halfdelay(%d)"), t));
 
-       if (t < 1 || t > 255)
-               returnCode(ERR);
+    if (t < 1 || t > 255)
+       returnCode(ERR);
 
-       cbreak();
-       SP->_cbreak = t+1;
-       returnCode(OK);
+    cbreak();
+    SP->_cbreak = t + 1;
+    returnCode(OK);
 }
 
-int nodelay(WINDOW *win, bool flag)
+int
+nodelay(WINDOW *win, bool flag)
 {
-       T((T_CALLED("nodelay(%p,%d)"), win, flag));
+    T((T_CALLED("nodelay(%p,%d)"), win, flag));
 
-       if (win) {
-         if (flag == TRUE)
+    if (win) {
+       if (flag == TRUE)
            win->_delay = 0;
-         else win->_delay = -1;
-         returnCode(OK);
-       }
        else
-         returnCode(ERR);
+           win->_delay = -1;
+       returnCode(OK);
+    } else
+       returnCode(ERR);
 }
 
-int notimeout(WINDOW *win, bool f)
+int
+notimeout(WINDOW *win, bool f)
 {
-       T((T_CALLED("notimout(%p,%d)"), win, f));
+    T((T_CALLED("notimout(%p,%d)"), win, f));
 
-       if (win) {
-         win->_notimeout = f;
-         returnCode(OK);
-       }
-       else
-         returnCode(ERR);
+    if (win) {
+       win->_notimeout = f;
+       returnCode(OK);
+    } else
+       returnCode(ERR);
 }
 
-void wtimeout(WINDOW *win, int delay)
+void
+wtimeout(WINDOW *win, int delay)
 {
-       T((T_CALLED("wtimeout(%p,%d)"), win, delay));
+    T((T_CALLED("wtimeout(%p,%d)"), win, delay));
 
-       if (win) {
-         win->_delay = delay;
-       }
+    if (win) {
+       win->_delay = delay;
+    }
 }
 
-int keypad(WINDOW *win, bool flag)
+int
+keypad(WINDOW *win, bool flag)
 {
-       T((T_CALLED("keypad(%p,%d)"), win, flag));
+    T((T_CALLED("keypad(%p,%d)"), win, flag));
 
-       if (win) {
-         win->_use_keypad = flag;
-         returnCode(_nc_keypad(flag));
-       }
-       else
-         returnCode(ERR);
+    if (win) {
+       win->_use_keypad = flag;
+       returnCode(_nc_keypad(flag));
+    } else
+       returnCode(ERR);
 }
 
-
-int meta(WINDOW *win GCC_UNUSED, bool flag)
+int
+meta(WINDOW *win GCC_UNUSED, bool flag)
 {
-        /* Ok, we stay relaxed and don't signal an error if win is NULL */
-       T((T_CALLED("meta(%p,%d)"), win, flag));
-
-       SP->_use_meta = flag;
-
-       if (flag  &&  meta_on)
-       {
-           TPUTS_TRACE("meta_on");
-           putp(meta_on);
-       }
-       else if (! flag  &&  meta_off)
-       {
-           TPUTS_TRACE("meta_off");
-           putp(meta_off);
-       }
-       returnCode(OK);
+    /* Ok, we stay relaxed and don't signal an error if win is NULL */
+    T((T_CALLED("meta(%p,%d)"), win, flag));
+
+    SP->_use_meta = flag;
+
+    if (flag && meta_on) {
+       TPUTS_TRACE("meta_on");
+       putp(meta_on);
+    } else if (!flag && meta_off) {
+       TPUTS_TRACE("meta_off");
+       putp(meta_off);
+    }
+    returnCode(OK);
 }
 
 /* curs_set() moved here to narrow the kernel interface */
 
-int curs_set(int vis)
+int
+curs_set(int vis)
 {
-int cursor = SP->_cursor;
-
-       T((T_CALLED("curs_set(%d)"), vis));
-
-       if (vis < 0 || vis > 2)
-               returnCode(ERR);
-
-       if (vis == cursor)
-               returnCode(cursor);
-
-       switch(vis) {
-       case 2:
-               if (cursor_visible)
-               {
-                       TPUTS_TRACE("cursor_visible");
-                       putp(cursor_visible);
-               }
-               else
-                       returnCode(ERR);
-               break;
-       case 1:
-               if (cursor_normal)
-               {
-                       TPUTS_TRACE("cursor_normal");
-                       putp(cursor_normal);
-               }
-               else
-                       returnCode(ERR);
-               break;
-       case 0:
-               if (cursor_invisible)
-               {
-                       TPUTS_TRACE("cursor_invisible");
-                       putp(cursor_invisible);
-               }
-               else
-                       returnCode(ERR);
-               break;
-       }
-       SP->_cursor = vis;
-       _nc_flush();
-
-       returnCode(cursor==-1 ? 1 : cursor);
+    int cursor = SP->_cursor;
+
+    T((T_CALLED("curs_set(%d)"), vis));
+
+    if (vis < 0 || vis > 2)
+       returnCode(ERR);
+
+    if (vis == cursor)
+       returnCode(cursor);
+
+    switch (vis) {
+    case 2:
+       if (cursor_visible) {
+           TPUTS_TRACE("cursor_visible");
+           putp(cursor_visible);
+       } else
+           returnCode(ERR);
+       break;
+    case 1:
+       if (cursor_normal) {
+           TPUTS_TRACE("cursor_normal");
+           putp(cursor_normal);
+       } else
+           returnCode(ERR);
+       break;
+    case 0:
+       if (cursor_invisible) {
+           TPUTS_TRACE("cursor_invisible");
+           putp(cursor_invisible);
+       } else
+           returnCode(ERR);
+       break;
+    }
+    SP->_cursor = vis;
+    _nc_flush();
+
+    returnCode(cursor == -1 ? 1 : cursor);
 }
 
-int typeahead(int fd)
+int
+typeahead(int fd)
 {
-       T((T_CALLED("typeahead(%d)"), fd));
-       SP->_checkfd = fd;
-       returnCode(OK);
+    T((T_CALLED("typeahead(%d)"), fd));
+    SP->_checkfd = fd;
+    returnCode(OK);
 }
 
 /*
@@ -213,18 +207,20 @@ int typeahead(int fd)
 */
 
 #ifdef NCURSES_EXT_FUNCS
-static int has_key_internal(int keycode, struct tries *tp)
+static int
+has_key_internal(int keycode, struct tries *tp)
 {
     if (tp == 0)
-       return(FALSE);
+       return (FALSE);
     else if (tp->value == keycode)
-       return(TRUE);
+       return (TRUE);
     else
-       return(has_key_internal(keycode, tp->child)
-              || has_key_internal(keycode, tp->sibling));
+       return (has_key_internal(keycode, tp->child)
+           || has_key_internal(keycode, tp->sibling));
 }
 
-int has_key(int keycode)
+int
+has_key(int keycode)
 {
     T((T_CALLED("has_key(%d)"), keycode));
     returnCode(has_key_internal(keycode, SP->_keytry));
@@ -238,24 +234,22 @@ int has_key(int keycode)
  * flush, then the next wgetch may get the escape sequence that corresponds to
  * the terminal state _before_ switching modes.
  */
-int _nc_keypad(bool flag)
+int
+_nc_keypad(bool flag)
 {
-       if (flag  &&  keypad_xmit)
-       {
-           TPUTS_TRACE("keypad_xmit");
-           putp(keypad_xmit);
-           _nc_flush();
-       }
-       else if (! flag  &&  keypad_local)
-       {
-           TPUTS_TRACE("keypad_local");
-           putp(keypad_local);
-           _nc_flush();
-       }
-
-       if (flag && !SP->_tried) {
-           _nc_init_keytry();
-           SP->_tried = TRUE;
-       }
-       return(OK);
+    if (flag && keypad_xmit) {
+       TPUTS_TRACE("keypad_xmit");
+       putp(keypad_xmit);
+       _nc_flush();
+    } else if (!flag && keypad_local) {
+       TPUTS_TRACE("keypad_local");
+       putp(keypad_local);
+       _nc_flush();
+    }
+
+    if (flag && !SP->_tried) {
+       _nc_init_keytry();
+       SP->_tried = TRUE;
+    }
+    return (OK);
 }
index 61b422c1fb885a1c366e184a9e62f7ba3e89afa4..6033ed9c10c3a7bb4bea477c9e85958e96488c67 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*
  *     raw.c
  *
  */
 
 #include <curses.priv.h>
-#include <term.h>      /* cur_term */
+#include <term.h>              /* cur_term */
 
-MODULE_ID("$Id: lib_raw.c,v 1.3 1999/03/06 22:28:24 tom Exp $")
+MODULE_ID("$Id: lib_raw.c,v 1.7 2000/02/13 01:01:26 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 */
+#include <sys/termio.h>                /* needed for ISC */
 #endif
 
 #ifdef __EMX__
 #include <io.h>
-#include <fcntl.h>
 #endif
 
 #define COOKED_INPUT   (IXON|BRKINT|PARMRK)
@@ -74,160 +72,165 @@ MODULE_ID("$Id: lib_raw.c,v 1.3 1999/03/06 22:28:24 tom Exp $")
 #define AFTER(s)
 #endif /* TRACE */
 
-int raw(void)
+int
+raw(void)
 {
-       T((T_CALLED("raw()")));
-       if (SP != 0 && cur_term != 0) {
+    T((T_CALLED("raw()")));
+    if (SP != 0 && cur_term != 0) {
 
-               SP->_raw = TRUE;
-               SP->_cbreak = 1;
+       SP->_raw = TRUE;
+       SP->_cbreak = 1;
 
 #ifdef __EMX__
-               setmode(SP->_ifd, O_BINARY);
+       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");
+       BEFORE("raw");
+       cur_term->Nttyb.c_lflag &= ~(ICANON | ISIG | IEXTEN);
+       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;
+       cur_term->Nttyb.sg_flags |= RAW;
 #endif
-               returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
-       }
-       returnCode(ERR);
+       returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
+    }
+    returnCode(ERR);
 }
 
-int cbreak(void)
+int
+cbreak(void)
 {
-       T((T_CALLED("cbreak()")));
+    T((T_CALLED("cbreak()")));
 
-       SP->_cbreak = 1;
+    SP->_cbreak = 1;
 
 #ifdef __EMX__
-       setmode(SP->_ifd, O_BINARY);
+    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");
+    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;
+    cur_term->Nttyb.sg_flags |= CBREAK;
 #endif
-       returnCode(_nc_set_tty_mode( &cur_term->Nttyb));
+    returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
 }
 
-void qiflush(void)
+void
+qiflush(void)
 {
-       T((T_CALLED("qiflush()")));
+    T((T_CALLED("qiflush()")));
 
-       /*
-        * Note: this implementation may be wrong.  See the comment under
-        * intrflush().
-        */
+    /*
+     * 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;
+    BEFORE("qiflush");
+    cur_term->Nttyb.c_lflag &= ~(NOFLSH);
+    AFTER("qiflush");
+    (void) _nc_set_tty_mode(&cur_term->Nttyb);
+    returnVoid;
 #endif
 }
 
-
-int noraw(void)
+int
+noraw(void)
 {
-       T((T_CALLED("noraw()")));
+    T((T_CALLED("noraw()")));
 
-       SP->_raw = FALSE;
-       SP->_cbreak = 0;
+    SP->_raw = FALSE;
+    SP->_cbreak = 0;
 
 #ifdef __EMX__
-       setmode(SP->_ifd, O_TEXT);
+    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");
+    BEFORE("noraw");
+    cur_term->Nttyb.c_lflag |= ISIG | ICANON |
+       (cur_term->Ottyb.c_lflag & IEXTEN);
+    cur_term->Nttyb.c_iflag |= COOKED_INPUT;
+    AFTER("noraw");
 #else
-       cur_term->Nttyb.sg_flags &= ~(RAW|CBREAK);
+    cur_term->Nttyb.sg_flags &= ~(RAW | CBREAK);
 #endif
-       returnCode(_nc_set_tty_mode( &cur_term->Nttyb));
+    returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
 }
 
-
-int nocbreak(void)
+int
+nocbreak(void)
 {
-       T((T_CALLED("nocbreak()")));
+    T((T_CALLED("nocbreak()")));
 
-       SP->_cbreak = 0;
+    SP->_cbreak = 0;
 
 #ifdef __EMX__
-       setmode(SP->_ifd, O_TEXT);
+    setmode(SP->_ifd, O_TEXT);
 #endif
 
 #ifdef TERMIOS
-       BEFORE("nocbreak");
-       cur_term->Nttyb.c_lflag |= ICANON;
-       cur_term->Nttyb.c_iflag |= ICRNL;
-       AFTER("nocbreak");
+    BEFORE("nocbreak");
+    cur_term->Nttyb.c_lflag |= ICANON;
+    cur_term->Nttyb.c_iflag |= ICRNL;
+    AFTER("nocbreak");
 #else
-       cur_term->Nttyb.sg_flags &= ~CBREAK;
+    cur_term->Nttyb.sg_flags &= ~CBREAK;
 #endif
-       returnCode(_nc_set_tty_mode( &cur_term->Nttyb));
+    returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
 }
 
-void noqiflush(void)
+void
+noqiflush(void)
 {
-       T((T_CALLED("noqiflush()")));
+    T((T_CALLED("noqiflush()")));
 
-       /*
-        * Note: this implementation may be wrong.  See the comment under
-        * intrflush().
-        */
+    /*
+     * 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;
+    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)
+int
+intrflush(WINDOW *win GCC_UNUSED, bool flag)
 {
-       T((T_CALLED("intrflush(%d)"), 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.
-        */
+    /*
+     * 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));
+    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);
+    returnCode(ERR);
 #endif
 }
index 64aa73fa8cf3a2b6177f94712b1a893a3db28d82..50c330eb5739a1e030d98feff067d0760e76dd65 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*
  * Terminal setup routines common to termcap and terminfo:
  *
  */
 
 #include <curses.priv.h>
-#include <tic.h>       /* for MAX_NAME_SIZE */
+#include <tic.h>               /* for MAX_NAME_SIZE */
 #include <term_entry.h>
 
 #if defined(SVR4_TERMIO) && !defined(_POSIX_SOURCE)
 #define _POSIX_SOURCE
 #endif
 
-#include <term.h>      /* lines, columns, cur_term */
+#include <term.h>              /* lines, columns, cur_term */
 
-MODULE_ID("$Id: lib_setup.c,v 1.55 1999/08/21 23:06:08 tom Exp $")
+MODULE_ID("$Id: lib_setup.c,v 1.59 2000/02/13 01:01:26 tom Exp $")
 
 /****************************************************************************
  *
@@ -95,120 +94,116 @@ static int _use_env = TRUE;
 
 static void do_prototype(void);
 
-void use_env(bool f)
+void
+use_env(bool f)
 {
-       _use_env = f;
+    _use_env = f;
 }
 
-int LINES, COLS, TABSIZE;
+int LINES = 0, COLS = 0, TABSIZE = 0;
 
-static void _nc_get_screensize(int *linep, int *colp)
+static void
+_nc_get_screensize(int *linep, int *colp)
 /* Obtain lines/columns values from the environment and/or terminfo entry */
 {
-       /* figure out the size of the screen */
-       T(("screen size: terminfo lines = %d columns = %d", lines, columns));
+    /* figure out the size of the screen */
+    T(("screen size: terminfo lines = %d columns = %d", lines, columns));
 
-       if (!_use_env)
-       {
-           *linep = (int)lines;
-           *colp  = (int)columns;
-       }
-       else    /* usually want to query LINES and COLUMNS from environment */
-       {
-           int value;
+    if (!_use_env) {
+       *linep = (int) lines;
+       *colp = (int) columns;
+    } else {                   /* usually want to query LINES and COLUMNS from environment */
+       int value;
 
-           *linep = *colp = 0;
+       *linep = *colp = 0;
 
-           /* first, look for environment variables */
-           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));
+       /* first, look for environment variables */
+       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));
-           }
+       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)
-           {
-               if (isatty(cur_term->Filedes))
-               {
-                   STRUCT_WINSIZE size;
-
-                   errno = 0;
-                   do {
-                       if (ioctl(cur_term->Filedes, IOCTL_WINSIZE, &size) < 0
-                               && errno != EINTR)
-                           goto failure;
-                   } while
-                       (errno == EINTR);
-
-                   /*
-                    * 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:;
+       /* if that didn't work, maybe we can try asking the OS */
+       if (*linep <= 0 || *colp <= 0) {
+           if (isatty(cur_term->Filedes)) {
+               STRUCT_WINSIZE size;
+
+               errno = 0;
+               do {
+                   if (ioctl(cur_term->Filedes, IOCTL_WINSIZE, &size) < 0
+                       && errno != EINTR)
+                       goto failure;
+               } while
+                   (errno == EINTR);
+
+               /*
+                * 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:;
+       }
 #endif /* HAVE_SIZECHANGE */
 
-           /* if we can't get dynamic info about the size, use static */
-           if (*linep <= 0 || *colp <= 0)
-               if (lines > 0 && columns > 0)
-               {
-                   *linep = (int)lines;
-                   *colp  = (int)columns;
-               }
-
-           /* the ultimate fallback, assume fixed 24x80 size */
-           if (*linep <= 0 || *colp <= 0)
-           {
-               *linep = 24;
-               *colp  = 80;
+       /* if we can't get dynamic info about the size, use static */
+       if (*linep <= 0 || *colp <= 0)
+           if (lines > 0 && columns > 0) {
+               *linep = (int) lines;
+               *colp = (int) columns;
            }
 
-           /*
-            * Put the derived values back in the screen-size caps, so
-            * tigetnum() and tgetnum() will do the right thing.
-            */
-           lines   = (short)(*linep);
-           columns = (short)(*colp);
+       /* the ultimate fallback, assume fixed 24x80 size */
+       if (*linep <= 0 || *colp <= 0) {
+           *linep = 24;
+           *colp = 80;
        }
 
-       T(("screen size is %dx%d", *linep, *colp));
+       /*
+        * Put the derived values back in the screen-size caps, so
+        * tigetnum() and tgetnum() will do the right thing.
+        */
+       lines = (short) (*linep);
+       columns = (short) (*colp);
+    }
+
+    T(("screen size is %dx%d", *linep, *colp));
 
-       if (init_tabs != -1)
-               TABSIZE = (int)init_tabs;
-       else
-               TABSIZE = 8;
-       T(("TABSIZE = %d", TABSIZE));
+    if (VALID_NUMERIC(init_tabs))
+       TABSIZE = (int) init_tabs;
+    else
+       TABSIZE = 8;
+    T(("TABSIZE = %d", TABSIZE));
 
 }
 
 #if USE_SIZECHANGE
-void _nc_update_screensize(void)
+void
+_nc_update_screensize(void)
 {
-       int my_lines, my_cols;
+    int my_lines, my_cols;
 
-       _nc_get_screensize(&my_lines, &my_cols);
-       if (SP != 0 && SP->_resize != 0)
-               SP->_resize(my_lines, my_cols);
+    _nc_get_screensize(&my_lines, &my_cols);
+    if (SP != 0 && SP->_resize != 0)
+       SP->_resize(my_lines, my_cols);
 }
 #endif
 
@@ -235,52 +230,53 @@ void _nc_update_screensize(void)
                                        }
 
 #if USE_DATABASE
-static int grab_entry(const char *const tn, TERMTYPE *const tp)
+static int
+grab_entry(const char *const tn, TERMTYPE * const tp)
 /* return 1 if entry found, 0 if not found, -1 if database not accessible */
 {
-       char    filename[PATH_MAX];
-       int     status;
+    char filename[PATH_MAX];
+    int status;
 
-       /*
-        * $TERM shouldn't contain pathname delimiters.
-        */
-       if (strchr(tn, '/'))
-               return 0;
+    /*
+     * $TERM shouldn't contain pathname delimiters.
+     */
+    if (strchr(tn, '/'))
+       return 0;
 
-       if ((status = _nc_read_entry(tn, filename, tp)) != 1) {
+    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).
+        * 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.
         */
-       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);
+       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
 
-char ttytype[NAMESIZE];
+char ttytype[NAMESIZE] = "";
 
 /*
  *     setupterm(termname, Filedes, errret)
@@ -290,107 +286,103 @@ char ttytype[NAMESIZE];
  *
  */
 
-int setupterm(NCURSES_CONST char *tname, int Filedes, int *errret)
+int
+setupterm(NCURSES_CONST char *tname, int Filedes, int *errret)
 {
-struct term    *term_ptr;
-int status;
+    struct term *term_ptr;
+    int status;
 
-       T((T_CALLED("setupterm(%s,%d,%p)"), _nc_visbuf(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') {
-                       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);
+    if (tname == 0) {
+       tname = getenv("TERM");
+       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));
+    T(("your terminal name is %s", tname));
 
-       term_ptr = typeCalloc(TERMINAL, 1);
+    term_ptr = typeCalloc(TERMINAL, 1);
 
-       if (term_ptr == 0) {
-               ret_error0(-1, "Not enough memory to create terminal structure.\n") ;
-        }
+    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);
+    status = grab_entry(tname, &term_ptr->type);
 #else
-       status = 0;
+    status = 0;
 #endif
 
-       /* try fallback list if entry on disk */
-       if (status != 1)
-       {
-           const TERMTYPE      *fallback = _nc_fallback(tname);
-
-           if (fallback)
-           {
-               term_ptr->type = *fallback;
-               status = 1;
-           }
-       }
-
-       if (status == -1)
-       {
-               ret_error0(-1, "terminals database is inaccessible\n");
-       }
-       else if (status == 0)
-       {
-               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"))
-               do_prototype();
-
-       strncpy(ttytype, cur_term->type.term_names, NAMESIZE - 1);
-       ttytype[NAMESIZE - 1] = '\0';
-
-       /*
-        * Allow output redirection.  This is what SVr3 does.
-        * If stdout is directed to a file, screen updates go
-        * to standard error.
-        */
-       if (Filedes == STDOUT_FILENO && !isatty(Filedes))
-           Filedes = STDERR_FILENO;
-       cur_term->Filedes = Filedes;
-
-       _nc_get_screensize(&LINES, &COLS);
-
-       if (errret)
-               *errret = 1;
+    /* try fallback list if entry on disk */
+    if (status != 1) {
+       const TERMTYPE *fallback = _nc_fallback(tname);
 
-       T((T_CREATE("screen %s %dx%d"), tname, LINES, COLS));
-
-       if (generic_type) {
-               ret_error(0, "'%s': I need something more specific.\n", tname);
-       }
-       if (hard_copy) {
-               ret_error(1, "'%s': I can't handle hardcopy terminals.\n", tname);
+       if (fallback) {
+           term_ptr->type = *fallback;
+           status = 1;
        }
-       returnCode(OK);
+    }
+
+    if (status == -1) {
+       ret_error0(-1, "terminals database is inaccessible\n");
+    } else if (status == 0) {
+       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"))
+       do_prototype();
+
+    strncpy(ttytype, cur_term->type.term_names, NAMESIZE - 1);
+    ttytype[NAMESIZE - 1] = '\0';
+
+    /*
+     * Allow output redirection.  This is what SVr3 does.
+     * If stdout is directed to a file, screen updates go
+     * to standard error.
+     */
+    if (Filedes == STDOUT_FILENO && !isatty(Filedes))
+       Filedes = STDERR_FILENO;
+    cur_term->Filedes = Filedes;
+
+    _nc_get_screensize(&LINES, &COLS);
+
+    if (errret)
+       *errret = 1;
+
+    T((T_CREATE("screen %s %dx%d"), tname, LINES, COLS));
+
+    if (generic_type) {
+       ret_error(0, "'%s': I need something more specific.\n", tname);
+    }
+    if (hard_copy) {
+       ret_error(1, "'%s': I can't handle hardcopy terminals.\n", tname);
+    }
+    returnCode(OK);
 }
 
 /*
@@ -404,19 +396,19 @@ int status;
 static void
 do_prototype(void)
 {
-int    i;
-char   CC;
-char   proto;
-char    *tmp;
-
-       tmp = getenv("CC");
-       CC = *tmp;
-       proto = *command_character;
-
-       for_each_string(i, &(cur_term->type)) {
-           for (tmp = cur_term->type.Strings[i]; *tmp; tmp++) {
-               if (*tmp == proto)
-                   *tmp = CC;
-           }
+    int i;
+    char CC;
+    char proto;
+    char *tmp;
+
+    tmp = getenv("CC");
+    CC = *tmp;
+    proto = *command_character;
+
+    for_each_string(i, &(cur_term->type)) {
+       for (tmp = cur_term->type.Strings[i]; *tmp; tmp++) {
+           if (*tmp == proto)
+               *tmp = CC;
        }
+    }
 }
index 8238b368eea3e581a2e6b23bda576ea9434e8005..c47400132fa8c5aa644e643b73017efb616e55dc 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
 #define __INTERNAL_CAPS_VISIBLE
 #include <term_entry.h>
 
-MODULE_ID("$Id: lib_termcap.c,v 1.29 1999/09/05 01:06:43 tom Exp $")
+MODULE_ID("$Id: lib_termcap.c,v 1.36 2000/02/13 01:01:26 tom Exp $")
 
 /*
    some of the code in here was contributed by:
    Magnus Bengtsson, d6mbeng@dtek.chalmers.se
 */
 
-char *UP;
-char *BC;
+char *UP = 0;
+char *BC = 0;
 
 /***************************************************************************
  *
@@ -64,29 +64,30 @@ char *BC;
  *
  ***************************************************************************/
 
-int tgetent(char *bufp GCC_UNUSED, const char *name)
+int
+tgetent(char *bufp GCC_UNUSED, const char *name)
 {
-int errcode;
+    int errcode;
 
-       T((T_CALLED("tgetent()")));
+    T((T_CALLED("tgetent()")));
 
-       setupterm((NCURSES_CONST char *)name, STDOUT_FILENO, &errcode);
+    setupterm((NCURSES_CONST char *) name, STDOUT_FILENO, &errcode);
 
-       if (errcode == 1) {
+    if (errcode == 1) {
 
-               if (cursor_left)
-                   if ((backspaces_with_bs = !strcmp(cursor_left, "\b")) == 0)
-                       backspace_if_not_bs = cursor_left;
+       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;
+       /* 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 */
+       (void) baudrate();      /* sets ospeed as a side-effect */
 
 /* LINT_PREPRO
 #if 0*/
@@ -94,8 +95,8 @@ int errcode;
 /* LINT_PREPRO
 #endif*/
 
-       }
-       returnCode(errcode);
+    }
+    returnCode(errcode);
 }
 
 /***************************************************************************
@@ -107,22 +108,23 @@ int errcode;
  *
  ***************************************************************************/
 
-int tgetflag(NCURSES_CONST char *id)
+int
+tgetflag(NCURSES_CONST char *id)
 {
-int i;
-
-       T((T_CALLED("tgetflag(%s)"), id));
-       if (cur_term != 0) {
-           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]);
-               }
+    int i;
+
+    T((T_CALLED("tgetflag(%s)"), id));
+    if (cur_term != 0) {
+       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]);
            }
        }
-       returnCode(0);  /* Solaris does this */
+    }
+    returnCode(0);             /* Solaris does this */
 }
 
 /***************************************************************************
@@ -134,23 +136,24 @@ int i;
  *
  ***************************************************************************/
 
-int tgetnum(NCURSES_CONST char *id)
+int
+tgetnum(NCURSES_CONST char *id)
 {
-int i;
-
-       T((T_CALLED("tgetnum(%s)"), id));
-       if (cur_term != 0) {
-           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]);
-               }
+    int i;
+
+    T((T_CALLED("tgetnum(%s)"), id));
+    if (cur_term != 0) {
+       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]))
+                   returnCode(ABSENT_NUMERIC);
+               returnCode(tp->Numbers[i]);
            }
        }
-       returnCode(ERR);
+    }
+    returnCode(ABSENT_NUMERIC);
 }
 
 /***************************************************************************
@@ -162,30 +165,30 @@ int i;
  *
  ***************************************************************************/
 
-char *tgetstr(NCURSES_CONST char *id, char **area)
+char *
+tgetstr(NCURSES_CONST char *id, char **area)
 {
-int i;
-
-       T((T_CALLED("tgetstr(%s,%p)"), id, area));
-       if (cur_term != 0) {
-           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]);
+    int i;
+
+    T((T_CALLED("tgetstr(%s,%p)"), id, area));
+    if (cur_term != 0) {
+       TERMTYPE *tp = &(cur_term->type);
+       for_each_string(i, tp) {
+           const char *capname = ExtStrname(tp, i, strcodes);
+           if (!strncmp(id, capname, 2)) {
+               TR(TRACE_DATABASE,("found match : %s", _nc_visbuf(tp->Strings[i])));
+               /* setupterm forces canceled 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]);
            }
        }
-       returnPtr(NULL);
+    }
+    returnPtr(NULL);
 }
 
 /*
@@ -197,8 +200,9 @@ int i;
  *
  */
 
-char *tgoto(const char *string, int x, int y)
+char *
+tgoto(const char *string, int x, int y)
 {
-       T((T_CALLED("tgoto(%s,%d,%d)"), string, x, y));
-       returnPtr(tparm((NCURSES_CONST char *)string, y, x));
+    T((T_CALLED("tgoto(%s,%d,%d)"), string, x, y));
+    returnPtr(tparm((NCURSES_CONST char *) string, y, x));
 }
index 7b2b2f910f2d34131dc2d24c203f59549d949384..def5ba6d5ea32284ec7d7fc37bf77df4f07ad9df 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
  *     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 $")
+MODULE_ID("$Id: lib_ti.c,v 1.20 2000/02/13 01:01:26 tom Exp $")
 
-int tigetflag(NCURSES_CONST char *str)
+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]);
-               }
+    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);
+    returnCode(ABSENT_BOOLEAN);
 }
 
-int tigetnum(NCURSES_CONST char *str)
+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]);
-               }
+    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]))
+                   returnCode(ABSENT_NUMERIC);
+               returnCode(tp->Numbers[i]);
            }
        }
+    }
 
-       returnCode(CANCELLED_NUMERIC);  /* Solaris returns a -1 instead */
+    returnCode(CANCELLED_NUMERIC);     /* Solaris returns a -1 instead */
 }
 
-char *tigetstr(NCURSES_CONST char *str)
+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]);
-               }
+    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);
+    returnPtr(CANCELLED_STRING);
 }
index d3fd46276e6ef7a443b240eefa71f82e6ec01f71..f17d8382e921e6f0fcc60a8714917d6b8917214f 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*
  *     tputs.c
  *             delay_output()
 
 #include <curses.priv.h>
 #include <ctype.h>
-#include <term.h>      /* padding_baud_rate, xon_xoff */
-#include <termcap.h>   /* ospeed */
+#include <term.h>              /* padding_baud_rate, xon_xoff */
+#include <termcap.h>           /* ospeed */
 #include <tic.h>
 
-MODULE_ID("$Id: lib_tputs.c,v 1.41 1999/10/22 23:31:24 tom Exp $")
+MODULE_ID("$Id: lib_tputs.c,v 1.47 2000/05/27 23:08:41 tom Exp $")
 
-char PC;               /* used by termcap library */
-speed_t ospeed;                /* used by termcap library */
+char PC = 0;                   /* used by termcap library */
+speed_t ospeed = 0;            /* used by termcap library */
 
-int _nc_nulls_sent;    /* used by 'tack' program */
+int _nc_nulls_sent = 0;                /* used by 'tack' program */
 
-static int (*my_outch)(int c) = _nc_outch;
+static int (*my_outch) (int c) = _nc_outch;
 
-int delay_output(int ms)
+int
+delay_output(int ms)
 {
-       T((T_CALLED("delay_output(%d)"), ms));
+    T((T_CALLED("delay_output(%d)"), ms));
 
-       if (no_pad_char)
-               napms(ms);
-       else {
-               register int    nullcount;
+    if (no_pad_char) {
+       _nc_flush();
+       napms(ms);
+    } else {
+       register int nullcount;
 
-               nullcount = (ms * _nc_baudrate(ospeed)) / 10000;
-               for (_nc_nulls_sent += nullcount; nullcount > 0; nullcount--)
-                       my_outch(PC);
-               if (my_outch == _nc_outch)
-                       _nc_flush();
-       }
+       nullcount = (ms * _nc_baudrate(ospeed)) / 10000;
+       for (_nc_nulls_sent += nullcount; nullcount > 0; nullcount--)
+           my_outch(PC);
+       if (my_outch == _nc_outch)
+           _nc_flush();
+    }
 
-       returnCode(OK);
+    returnCode(OK);
 }
 
-int _nc_outch(int ch)
+void
+_nc_flush(void)
+{
+    (void)fflush(NC_OUTPUT);
+}
+
+int
+_nc_outch(int ch)
 {
 #ifdef TRACE
-       _nc_outchars++;
+    _nc_outchars++;
 #endif /* TRACE */
 
-       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;
+    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;
 }
 
-int putp(const char *string)
+#ifdef USE_WIDEC_SUPPORT
+/*
+ * Reference: The Unicode Standard 2.0
+ *
+ * No surrogates supported (we're storing only one 16-bit Unicode value per
+ * cell).
+ */
+int
+_nc_utf8_outch(int ch)
 {
-       return tputs(string, 1, _nc_outch);
+    static const unsigned byteMask = 0xBF;
+    static const unsigned otherMark = 0x80;
+    static const unsigned firstMark[] =
+    {0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC};
+
+    int result[7], *ptr;
+    int count = 0;
+
+    if (ch < 0x80)
+       count = 1;
+    else if (ch < 0x800)
+       count = 2;
+    else if (ch < 0x10000)
+       count = 3;
+    else if (ch < 0x200000)
+       count = 4;
+    else if (ch < 0x4000000)
+       count = 5;
+    else if (ch <= 0x7FFFFFFF)
+       count = 6;
+    else {
+       count = 2;
+       ch = 0xFFFD;
+    }
+    ptr = result + count;
+    switch (count) {
+    case 6:
+       *--ptr = (ch | otherMark) & byteMask;
+       ch >>= 6;
+    case 5:
+       *--ptr = (ch | otherMark) & byteMask;
+       ch >>= 6;
+    case 4:
+       *--ptr = (ch | otherMark) & byteMask;
+       ch >>= 6;
+    case 3:
+       *--ptr = (ch | otherMark) & byteMask;
+       ch >>= 6;
+    case 2:
+       *--ptr = (ch | otherMark) & byteMask;
+       ch >>= 6;
+    case 1:
+       *--ptr = (ch | firstMark[count]);
+    }
+    while (count--)
+       _nc_outch(*ptr++);
+    return OK;
 }
+#endif
 
-int tputs(const char *string, int affcnt, int (*outc)(int))
+int
+putp(const char *string)
 {
-bool   always_delay;
-bool   normal_delay;
-int    number;
+    return tputs(string, 1, _nc_outch);
+}
+
+int
+tputs(const char *string, int affcnt, int (*outc) (int))
+{
+    bool always_delay;
+    bool normal_delay;
+    int number;
 #ifdef BSD_TPUTS
-int    trailpad;
+    int trailpad;
 #endif /* BSD_TPUTS */
 
 #ifdef TRACE
-char   addrbuf[32];
-
-       if (_nc_tracing & TRACE_TPUTS)
-       {
-               if (outc == _nc_outch)
-                       (void) strcpy(addrbuf, "_nc_outch");
-               else
-                       (void) sprintf(addrbuf, "%p", outc);
-               if (_nc_tputs_trace) {
-                       TR(TRACE_MAXIMUM, ("tputs(%s = %s, %d, %s) called", _nc_tputs_trace, _nc_visbuf(string), affcnt, addrbuf));
-               }
-               else {
-                       TR(TRACE_MAXIMUM, ("tputs(%s, %d, %s) called", _nc_visbuf(string), affcnt, addrbuf));
-               }
-               _nc_tputs_trace = (char *)NULL;
+    char addrbuf[32];
+
+    if (_nc_tracing & TRACE_TPUTS) {
+       if (outc == _nc_outch)
+           (void) strcpy(addrbuf, "_nc_outch");
+       else
+           (void) sprintf(addrbuf, "%p", outc);
+       if (_nc_tputs_trace) {
+           _tracef("tputs(%s = %s, %d, %s) called", _nc_tputs_trace,
+               _nc_visbuf(string), affcnt, addrbuf);
+       } else {
+           _tracef("tputs(%s, %d, %s) called", _nc_visbuf(string), affcnt, addrbuf);
        }
+       _nc_tputs_trace = (char *) NULL;
+    }
 #endif /* TRACE */
-       
-       if (!VALID_STRING(string))
-               return ERR;
 
-       if (cur_term == 0) {
-               always_delay = FALSE;
-               normal_delay = TRUE;
-       } else {
-               always_delay = (string == bell) || (string == flash_screen);
-               normal_delay =
-                !xon_xoff
-                && padding_baud_rate
+    if (!VALID_STRING(string))
+       return ERR;
+
+    if (cur_term == 0) {
+       always_delay = FALSE;
+       normal_delay = TRUE;
+    } else {
+       always_delay = (string == bell) || (string == flash_screen);
+       normal_delay =
+           !xon_xoff
+           && padding_baud_rate
 #ifdef NCURSES_NO_PADDING
-                && (SP == 0 || !(SP->_no_padding))
+           && (SP == 0 || !(SP->_no_padding))
 #endif
-                && (_nc_baudrate(ospeed) >= padding_baud_rate);
-       }
+           && (_nc_baudrate(ospeed) >= padding_baud_rate);
+    }
 
 #ifdef BSD_TPUTS
-       /*
-        * This ugly kluge deals with the fact that some ancient BSD programs
-        * (like nethack) actually do the likes of tputs("50") to get delays.
-        */
-       trailpad = 0;
-       if (isdigit(*string)) {
+    /*
+     * This ugly kluge deals with the fact that some ancient BSD programs
+     * (like nethack) actually do the likes of tputs("50") to get delays.
+     */
+    trailpad = 0;
+    if (isdigit(*string)) {
+       while (isdigit(*string)) {
+           trailpad = trailpad * 10 + (*string - '0');
+           string++;
+       }
+       trailpad *= 10;
+       if (*string == '.') {
+           string++;
+           if (isdigit(*string)) {
+               trailpad += (*string - '0');
+               string++;
+           }
+           while (isdigit(*string))
+               string++;
+       }
+
+       if (*string == '*') {
+           trailpad *= affcnt;
+           string++;
+       }
+    }
+#endif /* BSD_TPUTS */
+
+    my_outch = outc;           /* redirect delay_output() */
+    while (*string) {
+       if (*string != '$')
+           (*outc) (*string);
+       else {
+           string++;
+           if (*string != '<') {
+               (*outc) ('$');
+               if (*string)
+                   (*outc) (*string);
+           } else {
+               bool mandatory;
+
+               string++;
+               if ((!isdigit(*string) && *string != '.') || !strchr(string, '>')) {
+                   (*outc) ('$');
+                   (*outc) ('<');
+                   continue;
+               }
+
+               number = 0;
                while (isdigit(*string)) {
-                       trailpad = trailpad * 10 + (*string - '0');
-                       string++;
+                   number = number * 10 + (*string - '0');
+                   string++;
                }
-               trailpad *= 10;
+               number *= 10;
                if (*string == '.') {
+                   string++;
+                   if (isdigit(*string)) {
+                       number += (*string - '0');
+                       string++;
+                   }
+                   while (isdigit(*string))
                        string++;
-                       if (isdigit(*string)) {
-                               trailpad += (*string - '0');
-                               string++;
-                       }
-                       while (isdigit(*string))
-                               string++;
                }
 
-               if (*string == '*') {
-                       trailpad *= affcnt;
+               mandatory = FALSE;
+               while (*string == '*' || *string == '/') {
+                   if (*string == '*') {
+                       number *= affcnt;
+                       string++;
+                   } else {    /* if (*string == '/') */
+                       mandatory = TRUE;
                        string++;
+                   }
                }
-       }
-#endif /* BSD_TPUTS */
 
-       my_outch = outc;        /* redirect delay_output() */
-       while (*string) {
-               if (*string != '$')
-                       (*outc)(*string);
-               else {
-                       string++;
-                       if (*string != '<') {
-                               (*outc)('$');
-                               if (*string)
-                                   (*outc)(*string);
-                       } else {
-                               bool mandatory;
-
-                               string++;
-                               if ((!isdigit(*string) && *string != '.') || !strchr(string, '>')) {
-                                       (*outc)('$');
-                                       (*outc)('<');
-                                       continue;
-                               }
-
-                               number = 0;
-                               while (isdigit(*string)) {
-                                       number = number * 10 + (*string - '0');
-                                       string++;
-                               }
-                               number *= 10;
-                               if (*string == '.') {
-                                       string++;
-                                       if (isdigit(*string)) {
-                                               number += (*string - '0');
-                                               string++;
-                                       }
-                                       while (isdigit(*string))
-                                               string++;
-                               }
-
-                               mandatory = FALSE;
-                               while (*string == '*' || *string == '/')
-                               {
-                                       if (*string == '*') {
-                                               number *= affcnt;
-                                               string++;
-                                       }
-                                       else /* if (*string == '/') */ {
-                                               mandatory = TRUE;
-                                               string++;
-                                       }
-                               }
-
-                               if (number > 0
-                                && (always_delay
-                                 || normal_delay
-                                 || mandatory))
-                                       delay_output(number/10);
-
-                       } /* endelse (*string == '<') */
-               } /* endelse (*string == '$') */
-
-               if (*string == '\0')
-                       break;
+               if (number > 0
+                   && (always_delay
+                       || normal_delay
+                       || mandatory))
+                   delay_output(number / 10);
 
-               string++;
-       }
+           }                   /* endelse (*string == '<') */
+       }                       /* endelse (*string == '$') */
+
+       if (*string == '\0')
+           break;
+
+       string++;
+    }
 
 #ifdef BSD_TPUTS
-       /*
-        * Emit any BSD-style prefix padding that we've accumulated now.
-        */
-       if (trailpad > 0
-        && (always_delay || normal_delay))
-               delay_output(trailpad/10);
+    /*
+     * Emit any BSD-style prefix padding that we've accumulated now.
+     */
+    if (trailpad > 0
+       && (always_delay || normal_delay))
+       delay_output(trailpad / 10);
 #endif /* BSD_TPUTS */
 
-       my_outch = _nc_outch;
-       return OK;
+    my_outch = _nc_outch;
+    return OK;
 }
index a1fd1d0b66f89ca4f9e3bd4d21d33945d48787c4..703ca5de0fea2f2d5ac41194978ebbd6d023a633 100644 (file)
@@ -37,7 +37,7 @@
  */
 #include <curses.priv.h>
 
-MODULE_ID("$Id: make_keys.c,v 1.7 1999/09/11 17:32:57 Jeffrey.Honig Exp $")
+MODULE_ID("$Id: make_keys.c,v 1.8 2000/03/12 02:55:50 Todd.C.Miller Exp $")
 
 #include <names.c>
 
@@ -103,7 +103,7 @@ int main(int argc, char *argv[])
                "",
                "/* This file was generated by MAKE_KEYS */",
                "",
-               "#ifdef BROKEN_LINKER",
+               "#if BROKEN_LINKER",
                "static",
                "#endif",
                "struct tinfo_fkeys _nc_tinfo_fkeys[] = {",
index 07f3868e0b44dd13b2172ca417161c435245708d..1aff562d0dd681d2aa7564c08cfd1b8d436705b7 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*
  *     parse_entry.c -- compile one terminfo or termcap entry
  *
 #define __INTERNAL_CAPS_VISIBLE
 #include <term_entry.h>
 
-MODULE_ID("$Id: parse_entry.c,v 1.39 1999/03/01 02:28:51 tom Exp $")
+MODULE_ID("$Id: parse_entry.c,v 1.44 2000/04/30 00:17:42 tom Exp $")
 
 #ifdef LINT
-static short const parametrized[] = { 0 };
+static short const parametrized[] =
+{0};
 #else
 #include <parametrized.h>
 #endif
 
-struct token   _nc_curr_token;
-
-static void postprocess_termcap(TERMTYPE *, bool);
-static void postprocess_terminfo(TERMTYPE *);
-static struct name_table_entry const * lookup_fullname(const char *name);
+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 const *
+_nc_extend_names(ENTRY * entryp, char *name, int token_type)
 {
     static struct name_table_entry temp;
     TERMTYPE *tp = &(entryp->tterm);
@@ -77,20 +75,20 @@ _nc_extend_names(ENTRY *entryp, char *name, int token_type)
 
     switch (token_type) {
     case BOOLEAN:
-       first  = 0;
-       last   = tp->ext_Booleans;
+       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;
+       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;
+       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;
@@ -98,7 +96,7 @@ _nc_extend_names(ENTRY *entryp, char *name, int token_type)
        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)) {
+               if (n > (unsigned) (tp->ext_Booleans + tp->ext_Numbers)) {
                    token_type = STRING;
                } else if (n > tp->ext_Booleans) {
                    token_type = NUMBER;
@@ -125,9 +123,15 @@ _nc_extend_names(ENTRY *entryp, char *name, int token_type)
            offset = n;
            tindex = n - first;
            switch (token_type) {
-           case BOOLEAN:       tindex += BOOLCOUNT;    break;
-           case NUMBER:        tindex += NUMCOUNT;     break;
-           case STRING:        tindex += STRCOUNT;     break;
+           case BOOLEAN:
+               tindex += BOOLCOUNT;
+               break;
+           case NUMBER:
+               tindex += NUMCOUNT;
+               break;
+           case STRING:
+               tindex += STRCOUNT;
+               break;
            }
            break;
        }
@@ -138,35 +142,35 @@ _nc_extend_names(ENTRY *entryp, char *name, int token_type)
            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];
+           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];
+           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];
+           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);
+       tp->ext_Names = typeRealloc(char *, actual, tp->ext_Names);
        while (--actual > offset)
-           tp->ext_Names[actual] = tp->ext_Names[actual-1];
+           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_name = tp->ext_Names[offset];
+    temp.nte_type = token_type;
     temp.nte_index = tindex;
-    temp.nte_link  = -1;
+    temp.nte_link = -1;
 
     return &temp;
 }
@@ -191,16 +195,17 @@ _nc_extend_names(ENTRY *entryp, char *name, int token_type)
  *     push back token
  */
 
-int _nc_parse_entry(struct entry *entryp, int literal, bool silent)
+int
+_nc_parse_entry(struct entry *entryp, int literal, bool silent)
 {
-    int                        token_type;
-    struct name_table_entry    const *entry_ptr;
-    char                       *ptr, namecpy[MAX_NAME_SIZE+1];
+    int token_type;
+    struct name_table_entry const *entry_ptr;
+    char *ptr, namecpy[MAX_NAME_SIZE + 1];
 
     token_type = _nc_get_token();
 
     if (token_type == EOF)
-       return(EOF);
+       return (EOF);
     if (token_type != NAMES)
        _nc_err_abort("Entry does not start with terminal names in column one");
 
@@ -213,8 +218,7 @@ int _nc_parse_entry(struct entry *entryp, int literal, bool silent)
 
     /* junk the 2-character termcap name, if present */
     ptr = _nc_curr_token.tk_name;
-    if (ptr[2] == '|')
-    {
+    if (ptr[2] == '|') {
        ptr = _nc_curr_token.tk_name + 3;
        _nc_curr_token.tk_name[2] = '\0';
     }
@@ -233,30 +237,29 @@ 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 *)0)
+    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 *)0, "|")) != (char *)0)
+    while ((ptr = strtok((char *) 0, "|")) != (char *) 0)
        if (strlen(ptr) > MAX_ALIAS)
            _nc_warning("alias `%s' may be too long", ptr);
 
     entryp->nuses = 0;
 
     for (token_type = _nc_get_token();
-        token_type != EOF  &&  token_type != NAMES;
-        token_type = _nc_get_token())
-    {
+       token_type != EOF && token_type != NAMES;
+       token_type = _nc_get_token()) {
        if (strcmp(_nc_curr_token.tk_name, "use") == 0
            || strcmp(_nc_curr_token.tk_name, "tc") == 0) {
-           entryp->uses[entryp->nuses].parent = (void *)_nc_save_str(_nc_curr_token.tk_valstring);
+           entryp->uses[entryp->nuses].name = _nc_save_str(_nc_curr_token.tk_valstring);
            entryp->uses[entryp->nuses].line = _nc_curr_line;
            entryp->nuses++;
        } else {
            /* normal token lookup */
            entry_ptr = _nc_find_entry(_nc_curr_token.tk_name,
-                                      _nc_syntax ? _nc_cap_hash_table : _nc_info_hash_table);
+               _nc_syntax ? _nc_cap_hash_table : _nc_info_hash_table);
 
            /*
             * Our kluge to handle aliasing.  The reason it's done
@@ -266,43 +269,37 @@ int _nc_parse_entry(struct entry *entryp, int literal, bool silent)
             * making this case fast, aliased caps aren't common now
             * and will get rarer.
             */
-           if (entry_ptr == NOTFOUND)
-           {
-               const struct alias      *ap;
+           if (entry_ptr == NOTFOUND) {
+               const struct alias *ap;
 
-               if (_nc_syntax == SYN_TERMCAP)
-               {
+               if (_nc_syntax == SYN_TERMCAP) {
                    for (ap = _nc_capalias_table; ap->from; ap++)
-                       if (strcmp(ap->from, _nc_curr_token.tk_name) == 0)
-                       {
-                           if (ap->to == (char *)0)
-                           {
+                       if (strcmp(ap->from, _nc_curr_token.tk_name) == 0) {
+                           if (ap->to == (char *) 0) {
                                _nc_warning("%s (%s termcap extension) ignored",
-                                           ap->from, ap->source);
+                                   ap->from, ap->source);
                                goto nexttok;
                            }
 
                            entry_ptr = _nc_find_entry(ap->to, _nc_cap_hash_table);
                            if (entry_ptr && !silent)
-                               _nc_warning("%s (%s termcap extension) aliased to %s", ap->from, ap->source, ap->to);
+                               _nc_warning("%s (%s termcap extension) aliased to %s",
+                                   ap->from, ap->source, ap->to);
                            break;
                        }
-               }
-               else /* if (_nc_syntax == SYN_TERMINFO) */
-               {
+               } else {        /* if (_nc_syntax == SYN_TERMINFO) */
                    for (ap = _nc_infoalias_table; ap->from; ap++)
-                       if (strcmp(ap->from, _nc_curr_token.tk_name) == 0)
-                       {
-                           if (ap->to == (char *)0)
-                           {
+                       if (strcmp(ap->from, _nc_curr_token.tk_name) == 0) {
+                           if (ap->to == (char *) 0) {
                                _nc_warning("%s (%s terminfo extension) ignored",
-                                           ap->from, ap->source);
+                                   ap->from, ap->source);
                                goto nexttok;
                            }
 
                            entry_ptr = _nc_find_entry(ap->to, _nc_info_hash_table);
                            if (entry_ptr && !silent)
-                               _nc_warning("%s (%s terminfo extension) aliased to %s", ap->from, ap->source, ap->to);
+                               _nc_warning("%s (%s terminfo extension) aliased to %s",
+                                   ap->from, ap->source, ap->to);
                            break;
                        }
 
@@ -311,16 +308,17 @@ int _nc_parse_entry(struct entry *entryp, int literal, bool silent)
                    }
                }
            }
-
 #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);
+               && _nc_user_definable
+               && (entry_ptr = _nc_extend_names(entryp,
+                       _nc_curr_token.tk_name, token_type)) != 0) {
+               if (_nc_tracing >= DEBUG_LEVEL(1))
+                   _nc_warning("extended capability '%s'", _nc_curr_token.tk_name);
            }
 #endif /* NCURSES_XNAMES */
 
@@ -328,13 +326,12 @@ int _nc_parse_entry(struct entry *entryp, int literal, bool silent)
            if (entry_ptr == NOTFOUND) {
                if (!silent)
                    _nc_warning("unknown capability '%s'",
-                               _nc_curr_token.tk_name);
+                       _nc_curr_token.tk_name);
                continue;
            }
 
            /* deal with bad type/value combinations. */
-           if (token_type != CANCEL &&  entry_ptr->nte_type != token_type)
-           {
+           if (token_type != CANCEL && entry_ptr->nte_type != token_type) {
                /*
                 * Nasty special cases here handle situations in which type
                 * information can resolve name clashes.  Normal lookup
@@ -348,39 +345,36 @@ int _nc_parse_entry(struct entry *entryp, int literal, bool silent)
                /* tell max_attributes from arrow_key_map */
                if (token_type == NUMBER && !strcmp("ma", _nc_curr_token.tk_name))
                    entry_ptr = _nc_find_type_entry("ma", NUMBER,
-                                       _nc_get_table(_nc_syntax != 0));
+                       _nc_get_table(_nc_syntax != 0));
 
                /* map terminfo's string MT to MT */
-               else if (token_type==STRING &&!strcmp("MT",_nc_curr_token.tk_name))
+               else if (token_type == STRING && !strcmp("MT", _nc_curr_token.tk_name))
                    entry_ptr = _nc_find_type_entry("MT", STRING,
-                                       _nc_get_table(_nc_syntax != 0));
+                       _nc_get_table(_nc_syntax != 0));
 
                /* treat strings without following "=" as empty strings */
-               else if (token_type==BOOLEAN && entry_ptr->nte_type==STRING)
+               else if (token_type == BOOLEAN && entry_ptr->nte_type == STRING)
                    token_type = STRING;
                /* we couldn't recover; skip this token */
-               else
-               {
-                   if (!silent)
-                   {
+               else {
+                   if (!silent) {
                        const char *type_name;
-                       switch (entry_ptr->nte_type)
-                       {
+                       switch (entry_ptr->nte_type) {
                        case BOOLEAN:
-                               type_name = "boolean";
-                               break;
+                           type_name = "boolean";
+                           break;
                        case STRING:
-                               type_name = "string";
-                               break;
+                           type_name = "string";
+                           break;
                        case NUMBER:
-                               type_name = "numeric";
-                               break;
+                           type_name = "numeric";
+                           break;
                        default:
-                               type_name = "unknown";
-                               break;
+                           type_name = "unknown";
+                           break;
                        }
                        _nc_warning("wrong type used for %s capability '%s'",
-                               type_name, _nc_curr_token.tk_name);
+                           type_name, _nc_curr_token.tk_name);
                    }
                    continue;
                }
@@ -415,23 +409,23 @@ int _nc_parse_entry(struct entry *entryp, int literal, bool silent)
 
            case STRING:
                ptr = _nc_curr_token.tk_valstring;
-               if (_nc_syntax==SYN_TERMCAP)
+               if (_nc_syntax == SYN_TERMCAP)
                    ptr = _nc_captoinfo(_nc_curr_token.tk_name,
-                                   ptr,
-                                   parametrized[entry_ptr->nte_index]);
+                       ptr,
+                       parametrized[entry_ptr->nte_index]);
                entryp->tterm.Strings[entry_ptr->nte_index] = _nc_save_str(ptr);
                break;
 
            default:
                if (!silent)
                    _nc_warning("unknown token type");
-               _nc_panic_mode((_nc_syntax==SYN_TERMCAP) ? ':' : ',');
+               _nc_panic_mode((_nc_syntax == SYN_TERMCAP) ? ':' : ',');
                continue;
            }
-       } /* end else cur_token.name != "use" */
-    nexttok:
-       continue;       /* cannot have a label w/o statement */
-    } /* endwhile (not EOF and not NAMES) */
+       }                       /* end else cur_token.name != "use" */
+      nexttok:
+       continue;               /* cannot have a label w/o statement */
+    }                          /* endwhile (not EOF and not NAMES) */
 
     _nc_push_token(token_type);
     _nc_set_type(_nc_first_name(entryp->tterm.term_names));
@@ -443,10 +437,9 @@ int _nc_parse_entry(struct entry *entryp, int literal, bool silent)
      * to be done before entry allocation is wrapped up.
      */
     if (!literal) {
-       if (_nc_syntax == SYN_TERMCAP)
-       {
-           bool        has_base_entry = FALSE;
-           int         i;
+       if (_nc_syntax == SYN_TERMCAP) {
+           bool has_base_entry = FALSE;
+           int i;
 
            /*
             * Don't insert defaults if this is a `+' entry meant only
@@ -461,50 +454,49 @@ 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((char *)entryp->uses[i].parent, '+'))
+                   if (!strchr((char *) entryp->uses[i].name, '+'))
                        has_base_entry = TRUE;
 
            postprocess_termcap(&entryp->tterm, has_base_entry);
-        }
-       else
+       } else
            postprocess_terminfo(&entryp->tterm);
     }
     _nc_wrap_entry(entryp);
 
-    return(OK);
+    return (OK);
 }
 
-int _nc_capcmp(const char *s, const char *t)
+int
+_nc_capcmp(const char *s, const char *t)
 /* compare two string capabilities, stripping out padding */
 {
     if (!s && !t)
-       return(0);
+       return (0);
     else if (!s || !t)
-       return(1);
-
-    for (;;)
-    {
-       if (s[0] == '$' && s[1] == '<')
-       {
-           for (s += 2; ; s++)
-               if (!(isdigit(*s) || *s=='.' || *s=='*' || *s=='/' || *s=='>'))
+       return (1);
+
+    for (;;) {
+       if (s[0] == '$' && s[1] == '<') {
+           for (s += 2;; s++)
+               if (!(isdigit(*s) || *s == '.' || *s == '*' || *s == '/' ||
+                       *s == '>'))
                    break;
        }
 
-       if (t[0] == '$' && t[1] == '<')
-       {
-           for (t += 2; ; t++)
-               if (!(isdigit(*t) || *t=='.' || *t=='*' || *t=='/' || *t=='>'))
+       if (t[0] == '$' && t[1] == '<') {
+           for (t += 2;; t++)
+               if (!(isdigit(*t) || *t == '.' || *t == '*' || *t == '/' ||
+                       *t == '>'))
                    break;
        }
 
        /* we've now pushed s and t past any padding they were pointing at */
 
        if (*s == '\0' && *t == '\0')
-               return(0);
+           return (0);
 
        if (*s != *t)
-           return(*t - *s);
+           return (*t - *s);
 
        /* else *s == *t but one is not NUL, so continue */
        s++, t++;
@@ -516,29 +508,32 @@ int _nc_capcmp(const char *s, const char *t)
  * list.  For each capability, we may assume there is a keycap that sends the
  * string which is the value of that capability.
  */
-typedef struct {const char *from; const char *to;} assoc;
+typedef struct {
+    const char *from;
+    const char *to;
+} assoc;
 static assoc const ko_xlate[] =
 {
-    {"al",     "kil1"},        /* insert line key  -> KEY_IL    */
-    {"bt",     "kcbt"},        /* back tab         -> KEY_BTAB  */
-    {"cd",     "ked"},         /* clear-to-eos key -> KEY_EOL   */
-    {"ce",     "kel"},         /* clear-to-eol key -> KEY_EOS   */
-    {"cl",     "kclr"},        /* clear key        -> KEY_CLEAR */
-    {"ct",     "tbc"},         /* clear all tabs   -> KEY_CATAB */
-    {"dc",     "kdch1"},       /* delete char      -> KEY_DC    */
-    {"dl",     "kdl1"},        /* delete line      -> KEY_DL    */
-    {"do",     "kcud1"},       /* down key         -> KEY_DOWN  */
-    {"ei",     "krmir"},       /* exit insert key  -> KEY_EIC   */
-    {"ho",     "khome"},       /* home key         -> KEY_HOME  */
-    {"ic",     "kich1"},       /* insert char key  -> KEY_IC    */
-    {"im",     "kIC"},         /* insert-mode key  -> KEY_SIC   */
-    {"le",     "kcub1"},       /* le key           -> KEY_LEFT  */
-    {"nd",     "kcuf1"},       /* nd key           -> KEY_RIGHT */
-    {"nl",     "kent"},        /* new line key     -> KEY_ENTER */
-    {"st",     "khts"},        /* set-tab key      -> KEY_STAB  */
-    {"ta",     CANCELLED_STRING},
-    {"up",     "kcuu1"},       /* up-arrow key     -> KEY_UP    */
-    {(char *)0, (char *)0},
+    {"al", "kil1"},            /* insert line key  -> KEY_IL    */
+    {"bt", "kcbt"},            /* back tab         -> KEY_BTAB  */
+    {"cd", "ked"},             /* clear-to-eos key -> KEY_EOL   */
+    {"ce", "kel"},             /* clear-to-eol key -> KEY_EOS   */
+    {"cl", "kclr"},            /* clear key        -> KEY_CLEAR */
+    {"ct", "tbc"},             /* clear all tabs   -> KEY_CATAB */
+    {"dc", "kdch1"},           /* delete char      -> KEY_DC    */
+    {"dl", "kdl1"},            /* delete line      -> KEY_DL    */
+    {"do", "kcud1"},           /* down key         -> KEY_DOWN  */
+    {"ei", "krmir"},           /* exit insert key  -> KEY_EIC   */
+    {"ho", "khome"},           /* home key         -> KEY_HOME  */
+    {"ic", "kich1"},           /* insert char key  -> KEY_IC    */
+    {"im", "kIC"},             /* insert-mode key  -> KEY_SIC   */
+    {"le", "kcub1"},           /* le key           -> KEY_LEFT  */
+    {"nd", "kcuf1"},           /* nd key           -> KEY_RIGHT */
+    {"nl", "kent"},            /* new line key     -> KEY_ENTER */
+    {"st", "khts"},            /* set-tab key      -> KEY_STAB  */
+    {"ta", CANCELLED_STRING},
+    {"up", "kcuu1"},           /* up-arrow key     -> KEY_UP    */
+    {(char *) 0, (char *) 0},
 };
 
 /*
@@ -569,7 +564,8 @@ static const char C_HT[] = "\t";
 #define CUR tp->
 
 static
-void postprocess_termcap(TERMTYPE *tp, bool has_base)
+void
+postprocess_termcap(TERMTYPE * tp, bool has_base)
 {
     char buf[MAX_LINE * 2 + 2];
 
@@ -582,8 +578,7 @@ void postprocess_termcap(TERMTYPE *tp, bool has_base)
      */
 
     /* if there was a tc entry, assume we picked up defaults via that */
-    if (!has_base)
-    {
+    if (!has_base) {
        if (WANTED(init_3string) && termcap_init2)
            init_3string = _nc_save_str(termcap_init2);
 
@@ -637,15 +632,15 @@ void postprocess_termcap(TERMTYPE *tp, bool has_base)
                } else
                    newline = _nc_save_str(C_LF);
            } else if (PRESENT(carriage_return) && PRESENT(scroll_forward)) {
-               strncpy(buf, carriage_return, MAX_LINE-2);
-               buf[MAX_LINE-1] = '\0';
-               strncat(buf, scroll_forward, MAX_LINE-strlen(buf)-1);
+               strncpy(buf, carriage_return, MAX_LINE - 2);
+               buf[MAX_LINE - 1] = '\0';
+               strncat(buf, scroll_forward, MAX_LINE - strlen(buf) - 1);
                buf[MAX_LINE] = '\0';
                newline = _nc_save_str(buf);
            } else if (PRESENT(carriage_return) && PRESENT(cursor_down)) {
-               strncpy(buf, carriage_return, MAX_LINE-2);
-               buf[MAX_LINE-1] = '\0';
-               strncat(buf, cursor_down, MAX_LINE-strlen(buf)-1);
+               strncpy(buf, carriage_return, MAX_LINE - 2);
+               buf[MAX_LINE - 1] = '\0';
+               strncat(buf, cursor_down, MAX_LINE - strlen(buf) - 1);
                buf[MAX_LINE] = '\0';
                newline = _nc_save_str(buf);
            }
@@ -661,8 +656,7 @@ void postprocess_termcap(TERMTYPE *tp, bool has_base)
      * These translations will *not* be inverted by tgetent().
      */
 
-    if (!has_base)
-    {
+    if (!has_base) {
        /*
         * We wait until now to decide if we've got a working cr because even
         * one that doesn't work can be used for newline. Unfortunately the
@@ -698,13 +692,11 @@ void postprocess_termcap(TERMTYPE *tp, bool has_base)
     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
-       {
+       else {
            if (tab && _nc_capcmp(tab, C_HT))
                _nc_warning("hardware tabs with a non-^I tab string %s",
-                           _nc_visbuf(tab));
-           else
-           {
+                   _nc_visbuf(tab));
+           else {
                if (WANTED(tab))
                    tab = _nc_save_str(C_HT);
                init_tabs = 8;
@@ -715,14 +707,13 @@ void postprocess_termcap(TERMTYPE *tp, bool has_base)
      * Now translate the ko capability, if there is one.  This
      * isn't from mytinfo...
      */
-    if (PRESENT(other_non_function_keys))
-    {
-       char    *dp, *cp = strtok(other_non_function_keys, ",");
-       struct name_table_entry const *from_ptr;
-       struct name_table_entry const *to_ptr;
-       assoc   const *ap;
-       char    buf2[MAX_TERMINFO_LENGTH];
-       bool    foundim;
+    if (PRESENT(other_non_function_keys)) {
+       char *dp, *cp = strtok(other_non_function_keys, ",");
+       struct name_table_entry const *from_ptr;
+       struct name_table_entry const *to_ptr;
+       assoc const *ap;
+       char buf2[MAX_TERMINFO_LENGTH];
+       bool foundim;
 
        /* we're going to use this for a special case later */
        dp = strchr(other_non_function_keys, 'i');
@@ -733,30 +724,26 @@ void postprocess_termcap(TERMTYPE *tp, bool has_base)
            for (ap = ko_xlate; ap->from; ap++)
                if (strcmp(ap->from, cp) == 0)
                    break;
-           if (!ap->to)
-           {
+           if (!ap->to) {
                _nc_warning("unknown capability `%s' in ko string", cp);
                continue;
-           }
-           else if (ap->to == CANCELLED_STRING)        /* ignore it */
+           } else if (ap->to == CANCELLED_STRING)      /* ignore it */
                continue;
 
            /* now we know we found a match in ko_table, so... */
 
            from_ptr = _nc_find_entry(ap->from, _nc_cap_hash_table);
-           to_ptr   = _nc_find_entry(ap->to,   _nc_info_hash_table);
+           to_ptr = _nc_find_entry(ap->to, _nc_info_hash_table);
 
            if (!from_ptr || !to_ptr)   /* should never happen! */
                _nc_err_abort("ko translation table is invalid, I give up");
 
-           if (WANTED(tp->Strings[from_ptr->nte_index]))
-           {
+           if (WANTED(tp->Strings[from_ptr->nte_index])) {
                _nc_warning("no value for ko capability %s", ap->from);
                continue;
            }
 
-           if (tp->Strings[to_ptr->nte_index])
-           {
+           if (tp->Strings[to_ptr->nte_index]) {
                /* There's no point in warning about it if it's the same
                 * string; that's just an inefficiency.
                 */
@@ -764,8 +751,8 @@ void postprocess_termcap(TERMTYPE *tp, bool has_base)
                        tp->Strings[from_ptr->nte_index],
                        tp->Strings[to_ptr->nte_index]) != 0)
                    _nc_warning("%s (%s) already has an explicit value %s, ignoring ko",
-                           ap->to, ap->from,
-                           _nc_visbuf(tp->Strings[to_ptr->nte_index]) );
+                       ap->to, ap->from,
+                       _nc_visbuf(tp->Strings[to_ptr->nte_index]));
                continue;
            }
 
@@ -774,24 +761,21 @@ void postprocess_termcap(TERMTYPE *tp, bool has_base)
             * stripping out padding.
             */
            dp = buf2;
-           for (cp = tp->Strings[from_ptr->nte_index]; *cp; cp++)
-           {
-               if (cp[0] == '$' && cp[1] == '<')
-               {
+           for (cp = tp->Strings[from_ptr->nte_index]; *cp; cp++) {
+               if (cp[0] == '$' && cp[1] == '<') {
                    while (*cp && *cp != '>')
                        if (!*cp)
                            break;
-                       else
+                       else
                            ++cp;
-               }
-               else
+               } else
                    *dp++ = *cp;
            }
            *dp++ = '\0';
 
            tp->Strings[to_ptr->nte_index] = _nc_save_str(buf2);
        } while
-           ((cp = strtok((char *)0, ",")) != 0);
+           ((cp = strtok((char *) 0, ",")) != 0);
 
        /*
         * Note: ko=im and ko=ic both want to grab the `Insert'
@@ -799,15 +783,13 @@ void postprocess_termcap(TERMTYPE *tp, bool has_base)
         * got mapped to kich1 and im to kIC to avoid a collision.
         * If the description has im but not ic, hack kIC back to kich1.
         */
-       if (foundim && WANTED(key_ic) && key_sic)
-       {
+       if (foundim && WANTED(key_ic) && key_sic) {
            key_ic = key_sic;
            key_sic = ABSENT_STRING;
        }
     }
 
-    if (!hard_copy)
-    {
+    if (!hard_copy) {
        if (WANTED(key_backspace))
            key_backspace = _nc_save_str(C_BS);
        if (WANTED(key_left))
@@ -829,90 +811,76 @@ void postprocess_termcap(TERMTYPE *tp, bool has_base)
        PRESENT(acs_ttee) ||
        PRESENT(acs_hline) ||
        PRESENT(acs_vline) ||
-       PRESENT(acs_plus))
-    {
-       char    buf2[MAX_TERMCAP_LENGTH], *bp = buf2;
+       PRESENT(acs_plus)) {
+       char buf2[MAX_TERMCAP_LENGTH], *bp = buf2;
 
-       if (acs_chars)
-       {
-           (void)strcpy(bp, acs_chars);
+       if (acs_chars) {
+           (void) strcpy(bp, acs_chars);
            bp += strlen(bp);
        }
 
-       if (acs_ulcorner && acs_ulcorner[1] == '\0')
-       {
+       if (acs_ulcorner && acs_ulcorner[1] == '\0') {
            *bp++ = 'l';
            *bp++ = *acs_ulcorner;
        }
-       if (acs_llcorner && acs_llcorner[1] == '\0')
-       {
+       if (acs_llcorner && acs_llcorner[1] == '\0') {
            *bp++ = 'm';
            *bp++ = *acs_llcorner;
        }
-       if (acs_urcorner && acs_urcorner[1] == '\0')
-       {
+       if (acs_urcorner && acs_urcorner[1] == '\0') {
            *bp++ = 'k';
            *bp++ = *acs_urcorner;
        }
-       if (acs_lrcorner && acs_lrcorner[1] == '\0')
-       {
+       if (acs_lrcorner && acs_lrcorner[1] == '\0') {
            *bp++ = 'j';
            *bp++ = *acs_lrcorner;
        }
-       if (acs_ltee && acs_ltee[1] == '\0')
-       {
+       if (acs_ltee && acs_ltee[1] == '\0') {
            *bp++ = 't';
            *bp++ = *acs_ltee;
        }
-       if (acs_rtee && acs_rtee[1] == '\0')
-       {
+       if (acs_rtee && acs_rtee[1] == '\0') {
            *bp++ = 'u';
            *bp++ = *acs_rtee;
        }
-       if (acs_btee && acs_btee[1] == '\0')
-       {
+       if (acs_btee && acs_btee[1] == '\0') {
            *bp++ = 'v';
            *bp++ = *acs_btee;
        }
-       if (acs_ttee && acs_ttee[1] == '\0')
-       {
+       if (acs_ttee && acs_ttee[1] == '\0') {
            *bp++ = 'w';
            *bp++ = *acs_ttee;
        }
-       if (acs_hline && acs_hline[1] == '\0')
-       {
+       if (acs_hline && acs_hline[1] == '\0') {
            *bp++ = 'q';
            *bp++ = *acs_hline;
        }
-       if (acs_vline && acs_vline[1] == '\0')
-       {
+       if (acs_vline && acs_vline[1] == '\0') {
            *bp++ = 'x';
            *bp++ = *acs_vline;
        }
-       if (acs_plus)
-       {
+       if (acs_plus) {
            *bp++ = 'n';
            strcpy(bp, acs_plus);
            bp = buf2 + strlen(buf2);
        }
 
-       if (bp != buf2)
-       {
+       if (bp != buf2) {
            *bp++ = '\0';
            acs_chars = _nc_save_str(buf2);
            _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{{||}}~~");
+    } else if (acs_chars == 0
+           && enter_alt_charset_mode != 0
+       && exit_alt_charset_mode != 0) {
+       acs_chars =
+           _nc_save_str("``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~");
     }
 }
 
 static
-void postprocess_terminfo(TERMTYPE *tp)
+void
+postprocess_terminfo(TERMTYPE * tp)
 {
     /*
      * TERMINFO-TO-TERMINFO MAPPINGS FOR SOURCE TRANSLATION
@@ -922,74 +890,60 @@ void postprocess_terminfo(TERMTYPE *tp)
     /*
      * Translate AIX forms characters.
      */
-    if (PRESENT(box_chars_1))
-    {
-       char    buf2[MAX_TERMCAP_LENGTH], *bp = buf2;
+    if (PRESENT(box_chars_1)) {
+       char buf2[MAX_TERMCAP_LENGTH], *bp = buf2;
 
-       if (acs_chars)
-       {
-           (void)strcpy(bp, acs_chars);
+       if (acs_chars) {
+           (void) strcpy(bp, acs_chars);
            bp += strlen(bp);
        }
 
-       if (box_chars_1[0])     /* ACS_ULCORNER */
-       {
+       if (box_chars_1[0]) {   /* ACS_ULCORNER */
            *bp++ = 'l';
            *bp++ = box_chars_1[0];
        }
-       if (box_chars_1[1])     /* ACS_HLINE */
-       {
+       if (box_chars_1[1]) {   /* ACS_HLINE */
            *bp++ = 'q';
            *bp++ = box_chars_1[1];
        }
-       if (box_chars_1[2])     /* ACS_URCORNER */
-       {
+       if (box_chars_1[2]) {   /* ACS_URCORNER */
            *bp++ = 'k';
            *bp++ = box_chars_1[2];
        }
-       if (box_chars_1[3])     /* ACS_VLINE */
-       {
+       if (box_chars_1[3]) {   /* ACS_VLINE */
            *bp++ = 'x';
            *bp++ = box_chars_1[3];
        }
-       if (box_chars_1[4])     /* ACS_LRCORNER */
-       {
+       if (box_chars_1[4]) {   /* ACS_LRCORNER */
            *bp++ = 'j';
            *bp++ = box_chars_1[4];
        }
-       if (box_chars_1[5])     /* ACS_LLCORNER */
-       {
+       if (box_chars_1[5]) {   /* ACS_LLCORNER */
            *bp++ = 'm';
            *bp++ = box_chars_1[5];
        }
-       if (box_chars_1[6])     /* ACS_TTEE */
-       {
+       if (box_chars_1[6]) {   /* ACS_TTEE */
            *bp++ = 'w';
            *bp++ = box_chars_1[6];
        }
-       if (box_chars_1[7])     /* ACS_RTEE */
-       {
+       if (box_chars_1[7]) {   /* ACS_RTEE */
            *bp++ = 'u';
            *bp++ = box_chars_1[7];
        }
-       if (box_chars_1[8])     /* ACS_BTEE */
-       {
+       if (box_chars_1[8]) {   /* ACS_BTEE */
            *bp++ = 'v';
            *bp++ = box_chars_1[8];
        }
-       if (box_chars_1[9])     /* ACS_LTEE */
-       {
+       if (box_chars_1[9]) {   /* ACS_LTEE */
            *bp++ = 't';
            *bp++ = box_chars_1[9];
        }
-       if (box_chars_1[10])    /* ACS_PLUS */
-       {
+       if (box_chars_1[10]) {  /* ACS_PLUS */
            *bp++ = 'n';
            *bp++ = box_chars_1[10];
        }
 
-       if (bp != buf2)
-       {
+       if (bp != buf2) {
            *bp++ = '\0';
            acs_chars = _nc_save_str(buf2);
            _nc_warning("acsc string synthesized from AIX capabilities");
@@ -1010,7 +964,8 @@ void postprocess_terminfo(TERMTYPE *tp)
  * sorted, but the nte_type fields are not necessarily grouped together.
  */
 static
-struct name_table_entry        const * lookup_fullname(const char *find)
+struct name_table_entry const *
+lookup_fullname(const char *find)
 {
     int state = -1;
 
@@ -1034,10 +989,10 @@ struct name_table_entry  const * lookup_fullname(const char *find)
 
        for (count = 0; names[count] != 0; count++) {
            if (!strcmp(names[count], find)) {
-               struct name_table_entry const *entry_ptr = _nc_get_table(FALSE);
-               while (entry_ptr->nte_type  != state
+               struct name_table_entry const *entry_ptr = _nc_get_table(FALSE);
+               while (entry_ptr->nte_type != state
                    || entry_ptr->nte_index != count)
-                       entry_ptr++;
+                   entry_ptr++;
                return entry_ptr;
            }
        }
index f60a4863bdf85e8d985a8c5e3957c64fb357d7c0..85dc3e0bf6e9a4acfcfdf1872f6ce3a5911ae540 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,8 +31,6 @@
  *     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 $")
+MODULE_ID("$Id: read_entry.c,v 1.67 2000/03/11 12:35:45 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*/
+#if !HAVE_TELL
+#define tell(fd) 0             /* lseek() is POSIX, but not tell() - odd... */
 #endif
 
 /*
@@ -82,7 +70,8 @@ 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)
+const char *
+_nc_tic_dir(const char *path)
 {
     static const char *result = TERMINFO;
 
@@ -104,42 +93,44 @@ const char *_nc_tic_dir(const char *path)
  * 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)
+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)
+static void
+convert_shorts(char *buf, short *Numbers, int count)
 {
     int i;
-    for (i = 0; i < count; i++)
-    {
-       if (IS_NEG1(buf + 2*i))
+    for (i = 0; i < count; i++) {
+       if (IS_NEG1(buf + 2 * i))
            Numbers[i] = ABSENT_NUMERIC;
-       else if (IS_NEG2(buf + 2*i))
+       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]));
+           Numbers[i] = LOW_MSB(buf + 2 * i);
+       TR(TRACE_DATABASE, ("get Numbers[%d]=%d", i, Numbers[i]));
     }
 }
 
-static void convert_strings(char *buf, char **Strings, int count, int size, char *table)
+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)) {
+       if (IS_NEG1(buf + 2 * i)) {
            Strings[i] = ABSENT_STRING;
-       } else if (IS_NEG2(buf + 2*i)) {
+       } else if (IS_NEG2(buf + 2 * i)) {
            Strings[i] = CANCELLED_STRING;
-       } else if (LOW_MSB(buf + 2*i) > size) {
+       } 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])));
+           Strings[i] = (LOW_MSB(buf + 2 * i) + table);
+           TR(TRACE_DATABASE, ("Strings[%d] = %s", i, _nc_visbuf(Strings[i])));
        }
 
        /* make sure all strings are NUL terminated */
@@ -159,53 +150,59 @@ static void convert_strings(char *buf, char **Strings, int count, int size, char
 #define even_boundary(value) \
     if ((value) % 2 != 0) read(fd, buf, 1)
 
-static int read_termtype(int fd, TERMTYPE *ptr)
+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];
+    int name_size, bool_count, num_count, str_count, str_size;
+    int i;
+    char buf[MAX_ENTRY_SIZE];
+
+    TR(TRACE_DATABASE, ("READ termtype header @%d", tell(fd)));
 
-    TRACE_IN(("READ termtype header @%d", tell(fd)));
+    memset(ptr, 0, sizeof(*ptr));
 
     /* grab the header */
     if (!read_shorts(fd, buf, 6)
-     || LOW_MSB(buf) != MAGIC) {
-       return(0);
+       || LOW_MSB(buf) != MAGIC) {
+       return (0);
     }
 
     _nc_free_termtype(ptr);
-    name_size  = LOW_MSB(buf + 2);
+    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);
+    num_count = LOW_MSB(buf + 6);
+    str_count = LOW_MSB(buf + 8);
+    str_size = LOW_MSB(buf + 10);
+
+    TR(TRACE_DATABASE,
+           ("TERMTYPE name_size=%d, bool=%d/%d, num=%d/%d str=%d/%d(%d)",
+           name_size, bool_count, BOOLCOUNT, num_count, NUMCOUNT,
+           str_count, STRCOUNT, 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);
+       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));
+    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);
+       return (0);
     }
     (void) strcpy(ptr->term_names, buf);
     if (name_size > MAX_NAME_SIZE)
@@ -213,8 +210,8 @@ static int read_termtype(int fd, TERMTYPE *ptr)
 
     /* grab the booleans */
     if ((ptr->Booleans = typeCalloc(char, max(BOOLCOUNT, bool_count))) == 0
-     || read(fd, ptr->Booleans, (unsigned)bool_count) < bool_count) {
-       return(0);
+       || read(fd, ptr->Booleans, (unsigned) bool_count) < bool_count) {
+       return (0);
     }
 
     /*
@@ -227,128 +224,142 @@ static int read_termtype(int fd, TERMTYPE *ptr)
 
     /* grab the numbers */
     if ((ptr->Numbers = typeCalloc(short, max(NUMCOUNT, num_count))) == 0
-     || !read_shorts(fd, buf, num_count)) {
-       return(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);
+         return (0);
 
-    if (str_count)
-    {
+    if (str_count) {
        /* grab the string offsets */
        if (!read_shorts(fd, buf, str_count)) {
-           return(0);
+           return (0);
        }
        /* finally, grab the string table itself */
-       if (read(fd, ptr->str_table, (unsigned)str_size) != str_size)
-           return(0);
+       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;
+    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)));
+    TR(TRACE_DATABASE, ("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 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);
+           || 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->num_Numbers = NUMCOUNT + ext_num_count;
+       ptr->num_Strings = STRCOUNT + ext_str_count;
 
-       ptr->Booleans = typeRealloc(char, ptr->num_Booleans,ptr->Booleans);
+       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);
+       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));
+       TR(TRACE_DATABASE, ("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)));
+       TR(TRACE_DATABASE, ("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);
+           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)));
+       TR(TRACE_DATABASE, ("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"));
+               return (0);
+           TR(TRACE_DATABASE, ("Before converting extended-numbers"));
            convert_shorts(buf, ptr->Numbers + NUMCOUNT, ext_num_count);
        }
 
-       TRACE_IN(("READ extended-offsets @%d", tell(fd)));
+       TR(TRACE_DATABASE, ("READ extended-offsets @%d", tell(fd)));
        if ((ext_str_count || need)
-        && !read_shorts(fd, buf, ext_str_count+need))
-           return(0);
+           && !read_shorts(fd, buf, ext_str_count + need))
+           return (0);
+
+       TR(TRACE_DATABASE, ("READ %d bytes of extended-strings @%d",
+               ext_str_limit, tell(fd)));
 
-       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);
+                 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)));
+               return (0);
+           TR(TRACE_DATABASE, ("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])));
+           TR(TRACE_DATABASE,
+               ("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--) {
+               TR(TRACE_DATABASE, ("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);
+               TR(TRACE_DATABASE, ("... 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);
+                 return (0);
+           TR(TRACE_DATABASE,
+               ("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));
+               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));
+       TR(TRACE_DATABASE, ("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));
+               bool_count, num_count, str_count));
+#if NCURSES_XNAMES
+       TR(TRACE_DATABASE, ("normal: num_Booleans:%d", ptr->num_Booleans));
+#endif
     }
 
     for (i = bool_count; i < BOOLCOUNT; i++)
@@ -358,18 +369,19 @@ static int read_termtype(int fd, TERMTYPE *ptr)
     for (i = str_count; i < STRCOUNT; i++)
        ptr->Strings[i] = ABSENT_STRING;
 
-    return(1);
+    return (1);
 }
 
-int _nc_read_file_entry(const char *const filename, TERMTYPE *ptr)
+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) {
+       || (fd = open(filename, O_RDONLY | O_BINARY)) < 0) {
        T(("cannot open terminfo %s (errno=%d)", filename, errno));
-       return(0);
+       return (0);
     }
 
     T(("read terminfo %s", filename));
@@ -384,51 +396,54 @@ int _nc_read_file_entry(const char *const filename, TERMTYPE *ptr)
  * 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)
+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);
+    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)
+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++;
+    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);
+    free(list);
+    return (code);
 }
 
 /*
@@ -440,43 +455,43 @@ static int _nc_read_terminfo_dirs(const char *dirs, char *const filename, const
  *     overrun the file buffer.
  */
 
-int _nc_read_entry(const char *const tn, char *const filename, TERMTYPE *const tp)
+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);
-               }
+    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);
+    /* 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.
-        */
+    /* 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);
+    return _nc_read_terminfo_dirs(TERMINFO_DIRS, filename, ttn, tp);
 #else
-       return _nc_read_tic_entry(filename, TERMINFO, ttn, tp);
+    return _nc_read_tic_entry(filename, TERMINFO, ttn, tp);
 #endif
 }
-
index d60a92d63f0ad6a84747cb73a70297b4622c8fab..26e72d40326345c20f5c702cc5b1145b2c677c7c 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*
  * Termcap compatibility support
  *
 #include <tic.h>
 #include <term_entry.h>
 
-#if HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-
-MODULE_ID("$Id: read_termcap.c,v 1.43 1999/04/10 20:52:52 tom Exp $")
+MODULE_ID("$Id: read_termcap.c,v 1.47 2000/04/15 16:53:19 Todd.C.Miller Exp $")
 
 #ifndef PURE_TERMINFO
 
@@ -86,7 +81,7 @@ MODULE_ID("$Id: read_termcap.c,v 1.43 1999/04/10 20:52:52 tom Exp $")
 #define _nc_cgetset   cgetset
 #else
 static int _nc_cgetmatch(char *, const char *);
-static int _nc_getent(char **, unsigned int *, int *, int, char **, int, const char *, int, char *);
+static int _nc_getent(char **, unsigned *, int *, int, char **, int, const char *, int, char *);
 static int _nc_nfcmp(const char *, char *);
 
 /*-
@@ -130,16 +125,16 @@ static int _nc_nfcmp(const char *, char *);
 #define        BFRAG           1024
 #define        BSIZE           1024
 #define        ESC             ('[' & 037)     /* ASCII ESC */
-#define        MAX_RECURSION   32              /* maximum getent recursion */
-#define        SFRAG           100             /* cgetstr mallocs in SFRAG chunks */
+#define        MAX_RECURSION   32      /* maximum getent recursion */
+#define        SFRAG           100     /* cgetstr mallocs in SFRAG chunks */
 
 #define RECOK  (char)0
 #define TCERR  (char)1
 #define        SHADOW  (char)2
 
-static size_t   topreclen;     /* toprec length */
-static char    *toprec;        /* Additional record specified by cgetset() */
-static int      gottoprec;     /* Flag indicating retrieval of toprecord */
+static size_t topreclen;       /* toprec length */
+static char *toprec;           /* Additional record specified by cgetset() */
+static int gottoprec;          /* Flag indicating retrieval of toprecord */
 
 /*
  * Cgetset() allows the addition of a user specified buffer to be added to the
@@ -149,20 +144,20 @@ static int         gottoprec;     /* Flag indicating retrieval of toprecord */
 static int
 _nc_cgetset(const char *ent)
 {
-       if (ent == 0) {
-               FreeIfNeeded(toprec);
-               toprec = 0;
-               topreclen = 0;
-               return (0);
-       }
-       topreclen = strlen(ent);
-       if ((toprec = typeMalloc(char, topreclen + 1)) == 0) {
-               errno = ENOMEM;
-               return (-1);
-       }
-       gottoprec = 0;
-       (void)strcpy(toprec, ent);
+    if (ent == 0) {
+       FreeIfNeeded(toprec);
+       toprec = 0;
+       topreclen = 0;
        return (0);
+    }
+    topreclen = strlen(ent);
+    if ((toprec = typeMalloc(char, topreclen + 1)) == 0) {
+       errno = ENOMEM;
+       return (-1);
+    }
+    gottoprec = 0;
+    (void) strcpy(toprec, ent);
+    return (0);
 }
 
 /*
@@ -180,43 +175,43 @@ _nc_cgetset(const char *ent)
 static char *
 _nc_cgetcap(char *buf, const char *cap, int type)
 {
-       register const char *cp;
-       register char *bp;
+    register const char *cp;
+    register char *bp;
 
-       bp = buf;
+    bp = buf;
+    for (;;) {
+       /*
+        * Skip past the current capability field - it's either the
+        * name field if this is the first time through the loop, or
+        * the remainder of a field whose name failed to match cap.
+        */
        for (;;) {
-               /*
-                * Skip past the current capability field - it's either the
-                * name field if this is the first time through the loop, or
-                * the remainder of a field whose name failed to match cap.
-                */
-               for (;;) {
-                       if (*bp == '\0')
-                               return (0);
-                       else if (*bp++ == ':')
-                               break;
-               }
+           if (*bp == '\0')
+               return (0);
+           else if (*bp++ == ':')
+               break;
+       }
 
-               /*
-                * Try to match (cap, type) in buf.
-                */
-               for (cp = cap; *cp == *bp && *bp != '\0'; cp++, bp++)
-                       continue;
-               if (*cp != '\0')
-                       continue;
-               if (*bp == '@')
-                       return (0);
-               if (type == ':') {
-                       if (*bp != '\0' && *bp != ':')
-                               continue;
-                       return(bp);
-               }
-               if (*bp != type)
-                       continue;
-               bp++;
-               return (*bp == '@' ? 0 : bp);
+       /*
+        * Try to match (cap, type) in buf.
+        */
+       for (cp = cap; *cp == *bp && *bp != '\0'; cp++, bp++)
+           continue;
+       if (*cp != '\0')
+           continue;
+       if (*bp == '@')
+           return (0);
+       if (type == ':') {
+           if (*bp != '\0' && *bp != ':')
+               continue;
+           return (bp);
        }
-       /* NOTREACHED */
+       if (*bp != type)
+           continue;
+       bp++;
+       return (*bp == '@' ? 0 : bp);
+    }
+    /* NOTREACHED */
 }
 
 /*
@@ -236,9 +231,9 @@ _nc_cgetcap(char *buf, const char *cap, int type)
 static int
 _nc_cgetent(char **buf, int *oline, char **db_array, const char *name)
 {
-       unsigned int dummy;
+    unsigned dummy;
 
-       return (_nc_getent(buf, &dummy, oline, 0, db_array, -1, name, 0, 0));
+    return (_nc_getent(buf, &dummy, oline, 0, db_array, -1, name, 0, 0));
 }
 
 /*
@@ -262,327 +257,327 @@ _nc_cgetent(char **buf, int *oline, char **db_array, const char *name)
 #define DOALLOC(size) typeRealloc(char, size, record)
 static int
 _nc_getent(
-       char **cap,         /* termcap-content */
-       unsigned int *len,  /* length, needed for recursion */
-       int *beginning,     /* line-number at match */
-       int in_array,       /* index in 'db_array[] */
-       char **db_array,    /* list of files to search */
-       int fd,
-       const char *name,
-       int depth,
-       char *nfield)
+    char **cap,                        /* termcap-content */
+    unsigned *len,             /* length, needed for recursion */
+    int *beginning,            /* line-number at match */
+    int in_array,              /* index in 'db_array[] */
+    char **db_array,           /* list of files to search */
+    int fd,
+    const char *name,
+    int depth,
+    char *nfield)
 {
-       register char *r_end, *rp;
-       int myfd = FALSE;
-       char *record = 0;
-       int tc_not_resolved;
-       int current;
-       int lineno;
-
-       /*
-        * Return with ``loop detected'' error if we've recurred more than
-        * MAX_RECURSION times.
-        */
-       if (depth > MAX_RECURSION)
-               return (TC_REF_LOOP);
+    register char *r_end, *rp;
+    int myfd = FALSE;
+    char *record = 0;
+    int tc_not_resolved;
+    int current;
+    int lineno;
+
+    /*
+     * Return with ``loop detected'' error if we've recurred more than
+     * MAX_RECURSION times.
+     */
+    if (depth > MAX_RECURSION)
+       return (TC_REF_LOOP);
+
+    /*
+     * Check if we have a top record from cgetset().
+     */
+    if (depth == 0 && toprec != 0 && _nc_cgetmatch(toprec, name) == 0) {
+       if ((record = DOALLOC(topreclen + BFRAG)) == 0) {
+           errno = ENOMEM;
+           return (TC_SYS_ERR);
+       }
+       (void) strcpy(record, toprec);
+       rp = record + topreclen + 1;
+       r_end = rp + BFRAG;
+       current = in_array;
+    } else {
+       int foundit;
 
        /*
-        * Check if we have a top record from cgetset().
+        * Allocate first chunk of memory.
         */
-       if (depth == 0 && toprec != 0 && _nc_cgetmatch(toprec, name) == 0) {
-               if ((record = DOALLOC(topreclen + BFRAG)) == 0) {
-                       errno = ENOMEM;
-                       return (TC_SYS_ERR);
-               }
-               (void)strcpy(record, toprec);
-               rp = record + topreclen + 1;
-               r_end = rp + BFRAG;
-               current = in_array;
-       } else {
-               int foundit;
-
-               /*
-                * Allocate first chunk of memory.
-                */
-               if ((record = DOALLOC(BFRAG)) == 0) {
-                       errno = ENOMEM;
-                       return (TC_SYS_ERR);
-               }
-               rp = r_end = record + BFRAG;
-               foundit = FALSE;
-
-               /*
-                * Loop through database array until finding the record.
-                */
-               for (current = in_array; db_array[current] != 0; current++) {
-                       int eof = FALSE;
-
-                       /*
-                        * Open database if not already open.
-                        */
-                       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 {
-                               myfd = TRUE;
-                       }
-                       lineno = 0;
-
-                       /*
-                        * Find the requested capability record ...
-                        */
-                       {
-                               char buf[2048];
-                               register char *b_end = buf;
-                               register char *bp = buf;
-                               register int c;
-
-                               /*
-                                * Loop invariants:
-                                *      There is always room for one more character in record.
-                                *      R_end always points just past end of record.
-                                *      Rp always points just past last character in record.
-                                *      B_end always points just past last character in buf.
-                                *      Bp always points at next character in buf.
-                                */
-
-                               for (;;) {
-                                       int first = lineno + 1;
-
-                                       /*
-                                        * Read in a line implementing (\, newline)
-                                        * line continuation.
-                                        */
-                                       rp = record;
-                                       for (;;) {
-                                               if (bp >= b_end) {
-                                                       int n;
-
-                                                       n = read(fd, buf, sizeof(buf));
-                                                       if (n <= 0) {
-                                                               if (myfd)
-                                                                       (void)close(fd);
-                                                               if (n < 0) {
-                                                                       free(record);
-                                                                       return (TC_SYS_ERR);
-                                                               }
-                                                               fd = -1;
-                                                               eof = TRUE;
-                                                               break;
-                                                       }
-                                                       b_end = buf+n;
-                                                       bp = buf;
-                                               }
-
-                                               c = *bp++;
-                                               if (c == '\n') {
-                                                       lineno++;
-                                                       if (rp == record || *(rp-1) != '\\')
-                                                               break;
-                                               }
-                                               *rp++ = c;
-
-                                               /*
-                                                * Enforce loop invariant: if no room
-                                                * left in record buffer, try to get
-                                                * some more.
-                                                */
-                                               if (rp >= r_end) {
-                                                       unsigned int pos;
-                                                       size_t newsize;
-
-                                                       pos = rp - record;
-                                                       newsize = r_end - record + BFRAG;
-                                                       record = DOALLOC(newsize);
-                                                       if (record == 0) {
-                                                               if (myfd)
-                                                                       (void)close(fd);
-                                                               errno = ENOMEM;
-                                                               return (TC_SYS_ERR);
-                                                       }
-                                                       r_end = record + newsize;
-                                                       rp = record + pos;
-                                               }
-                                       }
-                                       /* loop invariant lets us do this */
-                                       *rp++ = '\0';
-
-                                       /*
-                                        * If encountered eof check next file.
-                                        */
-                                       if (eof)
-                                               break;
-
-                                       /*
-                                        * Toss blank lines and comments.
-                                        */
-                                       if (*record == '\0' || *record == '#')
-                                               continue;
-
-                                       /*
-                                        * See if this is the record we want ...
-                                        */
-                                       if (_nc_cgetmatch(record, name) == 0
-                                        && (nfield == 0
-                                         || !_nc_nfcmp(nfield, record))) {
-                                               foundit = TRUE;
-                                               *beginning = first;
-                                               break;  /* found it! */
-                                       }
-                               }
-                       }
-                       if (foundit)
-                               break;
-               }
-
-               if (!foundit)
-                       return (TC_NOT_FOUND);
+       if ((record = DOALLOC(BFRAG)) == 0) {
+           errno = ENOMEM;
+           return (TC_SYS_ERR);
        }
+       rp = r_end = record + BFRAG;
+       foundit = FALSE;
 
        /*
-        * Got the capability record, but now we have to expand all tc=name
-        * references in it ...
+        * Loop through database array until finding the record.
         */
-       {
-               register char *newicap, *s;
-               register int newilen;
-               unsigned int ilen;
-               int diff, iret, tclen, oline;
-               char *icap, *scan, *tc, *tcstart, *tcend;
+       for (current = in_array; db_array[current] != 0; current++) {
+           int eof = FALSE;
+
+           /*
+            * Open database if not already open.
+            */
+           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 {
+               myfd = TRUE;
+           }
+           lineno = 0;
+
+           /*
+            * Find the requested capability record ...
+            */
+           {
+               char buf[2048];
+               register char *b_end = buf;
+               register char *bp = buf;
+               register int c;
 
                /*
                 * Loop invariants:
-                *      There is room for one more character in record.
-                *      R_end points just past end of record.
-                *      Rp points just past last character in record.
-                *      Scan points at remainder of record that needs to be
-                *      scanned for tc=name constructs.
+                *      There is always room for one more character in record.
+                *      R_end always points just past end of record.
+                *      Rp always points just past last character in record.
+                *      B_end always points just past last character in buf.
+                *      Bp always points at next character in buf.
                 */
-               scan = record;
-               tc_not_resolved = FALSE;
-               for (;;) {
-                       if ((tc = _nc_cgetcap(scan, "tc", '=')) == 0)
-                               break;
 
-                       /*
-                        * Find end of tc=name and stomp on the trailing `:'
-                        * (if present) so we can use it to call ourselves.
-                        */
-                       s = tc;
-                       while (*s != '\0') {
-                               if (*s++ == ':') {
-                                       *(s - 1) = '\0';
-                                       break;
-                               }
-                       }
-                       tcstart = tc - 3;
-                       tclen = s - tcstart;
-                       tcend = s;
-
-                       iret = _nc_getent(&icap, &ilen, &oline, current, db_array, fd, tc, depth+1, 0);
-                       newicap = icap;         /* Put into a register. */
-                       newilen = ilen;
-                       if (iret != TC_SUCCESS) {
-                               /* an error */
-                               if (iret < TC_NOT_FOUND) {
-                                       if (myfd)
-                                               (void)close(fd);
-                                       free(record);
-                                       return (iret);
-                               }
-                               if (iret == TC_UNRESOLVED)
-                                       tc_not_resolved = TRUE;
-                               /* couldn't resolve tc */
-                               if (iret == TC_NOT_FOUND) {
-                                       *(s - 1) = ':';
-                                       scan = s - 1;
-                                       tc_not_resolved = TRUE;
-                                       continue;
+               for (;;) {
+                   int first = lineno + 1;
+
+                   /*
+                    * Read in a line implementing (\, newline)
+                    * line continuation.
+                    */
+                   rp = record;
+                   for (;;) {
+                       if (bp >= b_end) {
+                           int n;
+
+                           n = read(fd, buf, sizeof(buf));
+                           if (n <= 0) {
+                               if (myfd)
+                                   (void) close(fd);
+                               if (n < 0) {
+                                   free(record);
+                                   return (TC_SYS_ERR);
                                }
+                               fd = -1;
+                               eof = TRUE;
+                               break;
+                           }
+                           b_end = buf + n;
+                           bp = buf;
                        }
 
-                       /* not interested in name field of tc'ed record */
-                       s = newicap;
-                       while (*s != '\0' && *s++ != ':')
-                               ;
-                       newilen -= s - newicap;
-                       newicap = s;
-
-                       /* make sure interpolated record is `:'-terminated */
-                       s += newilen;
-                       if (*(s-1) != ':') {
-                               *s = ':';       /* overwrite NUL with : */
-                               newilen++;
+                       c = *bp++;
+                       if (c == '\n') {
+                           lineno++;
+                           if (rp == record || *(rp - 1) != '\\')
+                               break;
                        }
+                       *rp++ = c;
 
                        /*
-                        * Make sure there's enough room to insert the
-                        * new record.
+                        * Enforce loop invariant: if no room
+                        * left in record buffer, try to get
+                        * some more.
                         */
-                       diff = newilen - tclen;
-                       if (diff >= r_end - rp) {
-                               unsigned int pos, tcpos, tcposend;
-                               size_t newsize;
-
-                               pos = rp - record;
-                               newsize = r_end - record + diff + BFRAG;
-                               tcpos = tcstart - record;
-                               tcposend = tcend - record;
-                               record = DOALLOC(newsize);
-                               if (record == 0) {
-                                       if (myfd)
-                                               (void)close(fd);
-                                       free(icap);
-                                       errno = ENOMEM;
-                                       return (TC_SYS_ERR);
-                               }
-                               r_end = record + newsize;
-                               rp = record + pos;
-                               tcstart = record + tcpos;
-                               tcend = record + tcposend;
+                       if (rp >= r_end) {
+                           unsigned pos;
+                           size_t newsize;
+
+                           pos = rp - record;
+                           newsize = r_end - record + BFRAG;
+                           record = DOALLOC(newsize);
+                           if (record == 0) {
+                               if (myfd)
+                                   (void) close(fd);
+                               errno = ENOMEM;
+                               return (TC_SYS_ERR);
+                           }
+                           r_end = record + newsize;
+                           rp = record + pos;
                        }
+                   }
+                   /* loop invariant lets us do this */
+                   *rp++ = '\0';
+
+                   /*
+                    * If encountered eof check next file.
+                    */
+                   if (eof)
+                       break;
 
-                       /*
-                        * Insert tc'ed record into our record.
-                        */
-                       s = tcstart + newilen;
-                       memmove(s, tcend, (size_t)(rp - tcend));
-                       memmove(tcstart, newicap, (size_t)newilen);
-                       rp += diff;
-                       free(icap);
+                   /*
+                    * Toss blank lines and comments.
+                    */
+                   if (*record == '\0' || *record == '#')
+                       continue;
 
-                       /*
-                        * Start scan on `:' so next cgetcap works properly
-                        * (cgetcap always skips first field).
-                        */
-                       scan = s-1;
+                   /*
+                    * See if this is the record we want ...
+                    */
+                   if (_nc_cgetmatch(record, name) == 0
+                       && (nfield == 0
+                           || !_nc_nfcmp(nfield, record))) {
+                       foundit = TRUE;
+                       *beginning = first;
+                       break;  /* found it! */
+                   }
                }
+           }
+           if (foundit)
+               break;
        }
 
+       if (!foundit)
+           return (TC_NOT_FOUND);
+    }
+
+    /*
+     * Got the capability record, but now we have to expand all tc=name
+     * references in it ...
+     */
+    {
+       register char *newicap, *s;
+       register int newilen;
+       unsigned ilen;
+       int diff, iret, tclen, oline;
+       char *icap, *scan, *tc, *tcstart, *tcend;
+
        /*
-        * Close file (if we opened it), give back any extra memory, and
-        * return capability, length and success.
+        * Loop invariants:
+        *      There is room for one more character in record.
+        *      R_end points just past end of record.
+        *      Rp points just past last character in record.
+        *      Scan points at remainder of record that needs to be
+        *      scanned for tc=name constructs.
         */
-       if (myfd)
-               (void)close(fd);
-       *len = rp - record - 1; /* don't count NUL */
-       if (r_end > rp) {
-               if ((record = DOALLOC((size_t)(rp - record))) == 0) {
-                       errno = ENOMEM;
-                       return (TC_SYS_ERR);
+       scan = record;
+       tc_not_resolved = FALSE;
+       for (;;) {
+           if ((tc = _nc_cgetcap(scan, "tc", '=')) == 0)
+               break;
+
+           /*
+            * Find end of tc=name and stomp on the trailing `:'
+            * (if present) so we can use it to call ourselves.
+            */
+           s = tc;
+           while (*s != '\0') {
+               if (*s++ == ':') {
+                   *(s - 1) = '\0';
+                   break;
+               }
+           }
+           tcstart = tc - 3;
+           tclen = s - tcstart;
+           tcend = s;
+
+           iret = _nc_getent(&icap, &ilen, &oline, current, db_array, fd,
+               tc, depth + 1, 0);
+           newicap = icap;     /* Put into a register. */
+           newilen = ilen;
+           if (iret != TC_SUCCESS) {
+               /* an error */
+               if (iret < TC_NOT_FOUND) {
+                   if (myfd)
+                       (void) close(fd);
+                   free(record);
+                   return (iret);
                }
+               if (iret == TC_UNRESOLVED)
+                   tc_not_resolved = TRUE;
+               /* couldn't resolve tc */
+               if (iret == TC_NOT_FOUND) {
+                   *(s - 1) = ':';
+                   scan = s - 1;
+                   tc_not_resolved = TRUE;
+                   continue;
+               }
+           }
+
+           /* not interested in name field of tc'ed record */
+           s = newicap;
+           while (*s != '\0' && *s++ != ':') ;
+           newilen -= s - newicap;
+           newicap = s;
+
+           /* make sure interpolated record is `:'-terminated */
+           s += newilen;
+           if (*(s - 1) != ':') {
+               *s = ':';       /* overwrite NUL with : */
+               newilen++;
+           }
+
+           /*
+            * Make sure there's enough room to insert the
+            * new record.
+            */
+           diff = newilen - tclen;
+           if (diff >= r_end - rp) {
+               unsigned pos, tcpos, tcposend;
+               size_t newsize;
+
+               pos = rp - record;
+               newsize = r_end - record + diff + BFRAG;
+               tcpos = tcstart - record;
+               tcposend = tcend - record;
+               record = DOALLOC(newsize);
+               if (record == 0) {
+                   if (myfd)
+                       (void) close(fd);
+                   free(icap);
+                   errno = ENOMEM;
+                   return (TC_SYS_ERR);
+               }
+               r_end = record + newsize;
+               rp = record + pos;
+               tcstart = record + tcpos;
+               tcend = record + tcposend;
+           }
+
+           /*
+            * Insert tc'ed record into our record.
+            */
+           s = tcstart + newilen;
+           memmove(s, tcend, (size_t) (rp - tcend));
+           memmove(tcstart, newicap, (size_t) newilen);
+           rp += diff;
+           free(icap);
+
+           /*
+            * Start scan on `:' so next cgetcap works properly
+            * (cgetcap always skips first field).
+            */
+           scan = s - 1;
+       }
+    }
+
+    /*
+     * Close file (if we opened it), give back any extra memory, and
+     * return capability, length and success.
+     */
+    if (myfd)
+       (void) close(fd);
+    *len = rp - record - 1;    /* don't count NUL */
+    if (r_end > rp) {
+       if ((record = DOALLOC((size_t) (rp - record))) == 0) {
+           errno = ENOMEM;
+           return (TC_SYS_ERR);
        }
+    }
 
-       *cap = record;
-       if (tc_not_resolved)
-               return (TC_UNRESOLVED);
-       return (current);
+    *cap = record;
+    if (tc_not_resolved)
+       return (TC_UNRESOLVED);
+    return (current);
 }
 
 /*
@@ -592,40 +587,40 @@ _nc_getent(
 static int
 _nc_cgetmatch(char *buf, const char *name)
 {
-       register const char *np;
-       register char *bp;
-
+    register const char *np;
+    register char *bp;
+
+    /*
+     * Start search at beginning of record.
+     */
+    bp = buf;
+    for (;;) {
        /*
-        * Start search at beginning of record.
+        * Try to match a record name.
         */
-       bp = buf;
+       np = name;
        for (;;) {
-               /*
-                * Try to match a record name.
-                */
-               np = name;
-               for (;;) {
-                       if (*np == '\0') {
-                               if (*bp == '|' || *bp == ':' || *bp == '\0')
-                                       return (0);
-                               else
-                                       break;
-                       } else if (*bp++ != *np++) {
-                               break;
-                       }
-               }
+           if (*np == '\0') {
+               if (*bp == '|' || *bp == ':' || *bp == '\0')
+                   return (0);
+               else
+                   break;
+           } else if (*bp++ != *np++) {
+               break;
+           }
+       }
 
-               /*
-                * Match failed, skip to next name in record.
-                */
-               bp--;   /* a '|' or ':' may have stopped the match */
-               for (;;) {
-                       if (*bp == '\0' || *bp == ':')
-                               return (-1);    /* match failed totally */
-                       else if (*bp++ == '|')
-                               break;  /* found next name */
-               }
+       /*
+        * Match failed, skip to next name in record.
+        */
+       bp--;                   /* a '|' or ':' may have stopped the match */
+       for (;;) {
+           if (*bp == '\0' || *bp == ':')
+               return (-1);    /* match failed totally */
+           else if (*bp++ == '|')
+               break;          /* found next name */
        }
+    }
 }
 
 /*
@@ -634,18 +629,17 @@ _nc_cgetmatch(char *buf, const char *name)
 static int
 _nc_nfcmp(const char *nf, char *rec)
 {
-       char *cp, tmp;
-       int ret;
+    char *cp, tmp;
+    int ret;
 
-       for (cp = rec; *cp != ':'; cp++)
-               ;
+    for (cp = rec; *cp != ':'; cp++) ;
 
-       tmp = *(cp + 1);
-       *(cp + 1) = '\0';
-       ret = strcmp(nf, rec);
-       *(cp + 1) = tmp;
+    tmp = *(cp + 1);
+    *(cp + 1) = '\0';
+    ret = strcmp(nf, rec);
+    *(cp + 1) = tmp;
 
-       return (ret);
+    return (ret);
 }
 #endif /* HAVE_BSD_CGETENT */
 
@@ -706,63 +700,63 @@ static char *tbuf;
 static char *
 get_tc_token(char **srcp, int *endp)
 {
-       int ch;
-       bool found = FALSE;
-       char *s, *base;
-       char *tok = 0;
-
-       *endp = TRUE;
-       for (s = base = *srcp; *s != '\0'; ) {
-               ch = *s++;
-               if (ch == '\\') {
-                       if (*s == '\0') {
-                               break;
-                       } else if (*s++ == '\n') {
-                               while (isspace(*s))
-                                       s++;
-                       } else {
-                               found = TRUE;
-                       }
-               } else if (ch == ':') {
-                       if (found) {
-                               tok = base;
-                               s[-1] = '\0';
-                               *srcp = s;
-                               *endp = FALSE;
-                               break;
-                       }
-                       base = s;
-               } else if (isgraph(ch)) {
-                       found = TRUE;
-               }
-       }
-
-       /* malformed entry may end without a ':' */
-       if (tok == 0 && found) {
+    int ch;
+    bool found = FALSE;
+    char *s, *base;
+    char *tok = 0;
+
+    *endp = TRUE;
+    for (s = base = *srcp; *s != '\0';) {
+       ch = *s++;
+       if (ch == '\\') {
+           if (*s == '\0') {
+               break;
+           } else if (*s++ == '\n') {
+               while (isspace(*s))
+                   s++;
+           } else {
+               found = TRUE;
+           }
+       } else if (ch == ':') {
+           if (found) {
                tok = base;
+               s[-1] = '\0';
+               *srcp = s;
+               *endp = FALSE;
+               break;
+           }
+           base = s;
+       } else if (isgraph(ch)) {
+           found = TRUE;
        }
+    }
+
+    /* malformed entry may end without a ':' */
+    if (tok == 0 && found) {
+       tok = base;
+    }
 
-       return tok;
+    return tok;
 }
 
 static char *
 copy_tc_token(char *dst, const char *src, size_t len)
 {
-       int ch;
+    int ch;
 
-       while ((ch = *src++) != '\0') {
-               if (ch == '\\' && *src == '\n') {
-                       while (isspace(*src))
-                               src++;
-                       continue;
-               }
-               if (--len == 0) {
-                       dst = 0;
-                       break;
-               }
-               *dst++ = ch;
+    while ((ch = *src++) != '\0') {
+       if (ch == '\\' && *src == '\n') {
+           while (isspace(*src))
+               src++;
+           continue;
+       }
+       if (--len == 0) {
+           dst = 0;
+           break;
        }
-       return dst;
+       *dst++ = ch;
+    }
+    return dst;
 }
 
 /*
@@ -771,127 +765,126 @@ copy_tc_token(char *dst, const char *src, size_t len)
 static int
 _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
 {
-       static char *the_source;
-
-       register char *p;
-       register char *cp;
-       char  *dummy;
-       char **fname;
-       char  *home;
-       int    i;
-       char   pathbuf[PBUFSIZ];        /* holds raw path of filenames */
-       char  *pathvec[PVECSIZ];        /* to point to names in pathbuf */
-       char **pvec;                    /* holds usable tail of path vector */
-       char  *termpath;
-
-       fname = pathvec;
-       pvec = pathvec;
-       tbuf = bp;
-       p = pathbuf;
-       cp = getenv("TERMCAP");
-
-       /*
-        * TERMCAP can have one of two things in it.  It can be the name of a
-        * file to use instead of /etc/termcap.  In this case it better start
-        * with a "/".  Or it can be an entry to use so we don't have to read
-        * the file.  In this case it has to already have the newlines crunched
-        * out.  If TERMCAP does not hold a file name then a path of names is
-        * searched instead.  The path is found in the TERMPATH variable, or
-        * becomes "$HOME/.termcap /etc/termcap" if no TERMPATH exists.
-        */
-       if (!is_pathname(cp)) { /* no TERMCAP or it holds an entry */
-               if ((termpath = getenv("TERMPATH")) != 0) {
-                       strncpy(pathbuf, termpath, PBUFSIZ - 1);
-               } else {
-                       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 */
+    static char *the_source;
+
+    register char *p;
+    register char *cp;
+    char *dummy;
+    char **fname;
+    char *home;
+    int i;
+    char pathbuf[PBUFSIZ];     /* holds raw path of filenames */
+    char *pathvec[PVECSIZ];    /* to point to names in pathbuf */
+    char **pvec;               /* holds usable tail of path vector */
+    char *termpath;
+
+    fname = pathvec;
+    pvec = pathvec;
+    tbuf = bp;
+    p = pathbuf;
+    cp = getenv("TERMCAP");
+
+    /*
+     * TERMCAP can have one of two things in it.  It can be the name of a file
+     * to use instead of /etc/termcap.  In this case it better start with a
+     * "/".  Or it can be an entry to use so we don't have to read the file. 
+     * In this case it has to already have the newlines crunched out.  If
+     * TERMCAP does not hold a file name then a path of names is searched
+     * instead.  The path is found in the TERMPATH variable, or becomes
+     * "$HOME/.termcap /etc/termcap" if no TERMPATH exists.
+     */
+    if (!is_pathname(cp)) {    /* no TERMCAP or it holds an entry */
+       if ((termpath = getenv("TERMPATH")) != 0) {
+           strncpy(pathbuf, termpath, PBUFSIZ - 1);
+       } else {
+           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) - 1));
-               }
+           strncpy(p, MY_PATH_DEF, (size_t) (PBUFSIZ - (p - pathbuf) - 1));
        }
-       else                            /* user-defined name in TERMCAP */
-               strncpy(pathbuf, cp, PBUFSIZ - 1); /* still can be tokenized */
-       pathbuf[PBUFSIZ - 1] = '\0';
-
-       *fname++ = pathbuf;     /* tokenize path into vector of names */
-       while (*++p) {
-               if (*p == ' ' || *p == ':') {
-                       *p = '\0';
-                       while (*++p)
-                               if (*p != ' ' && *p != ':')
-                                       break;
-                       if (*p == '\0')
-                               break;
-                       *fname++ = p;
-                       if (fname >= pathvec + PVECSIZ) {
-                               fname--;
-                               break;
-                       }
-               }
+    } else                     /* user-defined name in TERMCAP */
+       strncpy(pathbuf, cp, PBUFSIZ - 1);      /* still can be tokenized */
+    pathbuf[PBUFSIZ - 1] = '\0';
+
+    *fname++ = pathbuf;                /* tokenize path into vector of names */
+    while (*++p) {
+       if (*p == ' ' || *p == ':') {
+           *p = '\0';
+           while (*++p)
+               if (*p != ' ' && *p != ':')
+                   break;
+           if (*p == '\0')
+               break;
+           *fname++ = p;
+           if (fname >= pathvec + PVECSIZ) {
+               fname--;
+               break;
+           }
        }
-       *fname = 0;                     /* mark end of vector */
-       if (is_pathname(cp)) {
-               if (_nc_cgetset(cp) < 0) {
-                       return(TC_SYS_ERR);
-               }
+    }
+    *fname = 0;                        /* mark end of vector */
+    if (is_pathname(cp)) {
+       if (_nc_cgetset(cp) < 0) {
+           return (TC_SYS_ERR);
        }
-
-       i = _nc_cgetent(&dummy, lineno, pathvec, name);
-
-       /* ncurses' termcap-parsing routines cannot handle multiple adjacent
-        * empty fields, and mistakenly use the last valid cap entry instead of
-        * the first (breaks tc= includes)
-        */
-       if (i >= 0) {
-               char *pd, *ps, *tok;
-               int endflag = FALSE;
-               char *list[1023];
-               size_t n, count = 0;
-
-               pd = bp;
-               ps = dummy;
-               while (!endflag && (tok = get_tc_token(&ps, &endflag)) != 0) {
-                       bool ignore = FALSE;
-
-                       for (n = 1; n < count; n++) {
-                               char *s = list[n];
-                               if (s[0] == tok[0]
-                                && s[1] == tok[1]) {
-                                       ignore = TRUE;
-                                       break;
-                               }
-                       }
-                       if (ignore != TRUE) {
-                               list[count++] = tok;
-                               pd = copy_tc_token(pd, tok, TBUFSIZ - (2+pd-bp));
-                               if (pd == 0) {
-                                       i = -1;
-                                       break;
-                               }
-                               *pd++ = ':';
-                               *pd = '\0';
-                       }
+    }
+
+    i = _nc_cgetent(&dummy, lineno, pathvec, name);
+
+    /* ncurses' termcap-parsing routines cannot handle multiple adjacent
+     * empty fields, and mistakenly use the last valid cap entry instead of
+     * the first (breaks tc= includes)
+     */
+    if (i >= 0) {
+       char *pd, *ps, *tok;
+       int endflag = FALSE;
+       char *list[1023];
+       size_t n, count = 0;
+
+       pd = bp;
+       ps = dummy;
+       while (!endflag && (tok = get_tc_token(&ps, &endflag)) != 0) {
+           bool ignore = FALSE;
+
+           for (n = 1; n < count; n++) {
+               char *s = list[n];
+               if (s[0] == tok[0]
+                   && s[1] == tok[1]) {
+                   ignore = TRUE;
+                   break;
                }
+           }
+           if (ignore != TRUE) {
+               list[count++] = tok;
+               pd = copy_tc_token(pd, tok, TBUFSIZ - (2 + pd - bp));
+               if (pd == 0) {
+                   i = -1;
+                   break;
+               }
+               *pd++ = ':';
+               *pd = '\0';
+           }
        }
-
-       FreeIfNeeded(dummy);
-       FreeIfNeeded(the_source);
-       the_source = 0;
-
-       /* This is not related to the BSD cgetent(), but to fake up a suitable
-        * filename for ncurses' error reporting.  (If we are not using BSD
-        * cgetent, then it is the actual filename).
-        */
-       if (i >= 0) {
-               if ((the_source = strdup(pathvec[i])) != 0)
-                       *sourcename = the_source;
-       }
-
-       return(i);
+    }
+
+    FreeIfNeeded(dummy);
+    FreeIfNeeded(the_source);
+    the_source = 0;
+
+    /* This is not related to the BSD cgetent(), but to fake up a suitable
+     * filename for ncurses' error reporting.  (If we are not using BSD
+     * cgetent, then it is the actual filename).
+     */
+    if (i >= 0) {
+       if ((the_source = strdup(pathvec[i])) != 0)
+           *sourcename = the_source;
+    }
+
+    return (i);
 }
 #endif /* USE_BSD_TGETENT */
 #endif /* USE_GETCAP */
@@ -903,214 +896,207 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
  * a right to open the file.
  */
 #if !USE_GETCAP
-static int add_tc(char *termpaths[], char *path, int count)
+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;
+    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
+_nc_read_termcap_entry(const char *const tn, TERMTYPE * const tp)
 {
-       int found = FALSE;
-       ENTRY   *ep;
+    int found = FALSE;
+    ENTRY *ep;
 #if USE_GETCAP_CACHE
-       char    cwd_buf[PATH_MAX];
+    char cwd_buf[PATH_MAX];
 #endif
 #if USE_GETCAP
-       char    tc[TBUFSIZ];
-       static char     *source;
-       static int lineno;
-
+    char *p, tc[TBUFSIZ];
+    static char *source;
+    static int lineno;
+
+    if ((p = getenv("TERMCAP")) != 0
+       && !is_pathname(p) && _nc_name_match(p, tn, "|:")) {
+       /* TERMCAP holds a termcap entry */
+       strncpy(tc, p, sizeof(tc) - 1);
+       tc[sizeof(tc) - 1] = '\0';
+       _nc_set_source("TERMCAP");
+    } else {
        /* we're using getcap(3) */
        if (_nc_tgetent(tc, &source, &lineno, tn) < 0)
-               return (ERR);
+           return (ERR);
 
        _nc_curr_line = lineno;
        _nc_set_source(source);
-       _nc_read_entry_source((FILE *)0, tc, FALSE, FALSE, NULLHOOK);
+    }
+    _nc_read_entry_source((FILE *) 0, tc, FALSE, FALSE, NULLHOOK);
 #else
-       /*
-        * Here is what the 4.4BSD termcap(3) page prescribes:
-        *
-        * It will look in the environment for a TERMCAP variable.  If found,
-        * and the value does not begin with a slash, and the terminal type
-        * name is the same as the environment string TERM, the TERMCAP string
-        * is used instead of reading a termcap file.  If it does begin with a
-        * slash, the string is used as a path name of the termcap file to
-        * search.  If TERMCAP does not begin with a slash and name is
-        * different from TERM, tgetent() searches the files $HOME/.termcap and
-        * /usr/share/misc/termcap, in that order, unless the environment
-        * variable TERMPATH exists, in which case it specifies a list of file
-        * pathnames (separated by spaces or colons) to be searched instead.
-        *
-        * It goes on to state:
-        *
-        * Whenever multiple files are searched and a tc field occurs in the
-        * requested entry, the entry it names must be found in the same file
-        * or one of the succeeding files.
-        *
-        * However, this restriction is relaxed in ncurses; tc references to
-        * previous files are permitted.
-        *
-        * This routine returns 1 if an entry is found, 0 if not found, and -1
-        * if the database is not accessible.
-        */
-       FILE    *fp;
-       char    *tc, *termpaths[MAXPATHS];
-       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 */
-               {
-                       ADD_TC(tc, 0);
-               }
-               else if (_nc_name_match(tc, tn, "|:")) /* treat as a capability file */
-               {
-                       use_buffer = TRUE;
-                       (void) sprintf(tc_buf, "%.*s\n", (int)sizeof(tc_buf)-2, tc);
-               }
-               else if ((tc = getenv("TERMPATH")) != 0)
-               {
-                       char    *cp;
-
-                       for (cp = tc; *cp; cp++)
-                       {
-                               if (*cp == ':')
-                                       *cp = '\0';
-                               else if (cp == tc || cp[-1] == '\0')
-                               {
-                                       ADD_TC(cp, filecount);
-                               }
-                       }
+    /*
+     * Here is what the 4.4BSD termcap(3) page prescribes:
+     *
+     * It will look in the environment for a TERMCAP variable.  If found, and
+     * the value does not begin with a slash, and the terminal type name is the
+     * same as the environment string TERM, the TERMCAP string is used instead
+     * of reading a termcap file.  If it does begin with a slash, the string is
+     * used as a path name of the termcap file to search.  If TERMCAP does not
+     * begin with a slash and name is different from TERM, tgetent() searches
+     * the files $HOME/.termcap and /usr/share/misc/termcap, in that order,
+     * unless the environment variable TERMPATH exists, in which case it
+     * specifies a list of file pathnames (separated by spaces or colons) to be
+     * searched instead.
+     *
+     * It goes on to state:
+     *
+     * Whenever multiple files are searched and a tc field occurs in the
+     * requested entry, the entry it names must be found in the same file or
+     * one of the succeeding files.
+     *
+     * However, this restriction is relaxed in ncurses; tc references to
+     * previous files are permitted.
+     *
+     * This routine returns 1 if an entry is found, 0 if not found, and -1 if
+     * the database is not accessible.
+     */
+    FILE *fp;
+    char *tc, *termpaths[MAXPATHS];
+    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 */
+           ADD_TC(tc, 0);
+       } else if (_nc_name_match(tc, tn, "|:")) {      /* treat as a capability file */
+           use_buffer = TRUE;
+           (void) sprintf(tc_buf, "%.*s\n", (int) sizeof(tc_buf) - 2, tc);
+       } else if ((tc = getenv("TERMPATH")) != 0) {
+           char *cp;
+
+           for (cp = tc; *cp; cp++) {
+               if (*cp == ':')
+                   *cp = '\0';
+               else if (cp == tc || cp[-1] == '\0') {
+                   ADD_TC(cp, filecount);
                }
+           }
        }
-       else    /* normal case */
-       {
-               char    envhome[PATH_MAX], *h;
+    } else {                   /* normal case */
+       char envhome[PATH_MAX], *h;
 
-               filecount = 0;
+       filecount = 0;
 
-               /*
-                * Probably /etc/termcap is a symlink to /usr/share/misc/termcap.
-                * Avoid reading the same file twice.
-                */
-               if (_nc_access("/etc/termcap", F_OK) == 0)
-                       ADD_TC("/etc/termcap", filecount);
-               else
-                       ADD_TC("/usr/share/misc/termcap", filecount);
+       /*
+        * Probably /etc/termcap is a symlink to /usr/share/misc/termcap.
+        * Avoid reading the same file twice.
+        */
+       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")) != NULL
-                && (strlen(h) + sizeof(PRIVATE_CAP)) < PATH_MAX)
-               {
-                   /* user's .termcap, if any, should override it */
-                   (void) strcpy(envhome, h);
-                   (void) sprintf(pathbuf, PRIVATE_CAP, envhome);
-                   ADD_TC(pathbuf, filecount);
-               }
+       if ((h = getenv("HOME")) != NULL
+           && (strlen(h) + sizeof(PRIVATE_CAP)) < PATH_MAX) {
+           /* user's .termcap, if any, should override it */
+           (void) strcpy(envhome, h);
+           (void) sprintf(pathbuf, PRIVATE_CAP, envhome);
+           ADD_TC(pathbuf, filecount);
        }
+    }
 
-       /* parse the sources */
-       if (use_buffer)
-       {
-               _nc_set_source("TERMCAP");
+    /* parse the sources */
+    if (use_buffer) {
+       _nc_set_source("TERMCAP");
 
-               /*
-                * We don't suppress warning messages here.  The presumption is
-                * that since it's just a single entry, they won't be a pain.
-                */
-               _nc_read_entry_source((FILE *)0, tc_buf, FALSE, FALSE, NULLHOOK);
-       } else {
-               int     i;
+       /*
+        * We don't suppress warning messages here.  The presumption is
+        * that since it's just a single entry, they won't be a pain.
+        */
+       _nc_read_entry_source((FILE *) 0, tc_buf, FALSE, FALSE, NULLHOOK);
+    } else {
+       int i;
 
-               for (i = 0; i < filecount; i++) {
+       for (i = 0; i < filecount; i++) {
 
-                       T(("Looking for %s in %s", tn, termpaths[i]));
-                       if ((fp = fopen(termpaths[i], "r")) != (FILE *)0)
-                       {
-                               _nc_set_source(termpaths[i]);
+           T(("Looking for %s in %s", tn, termpaths[i]));
+           if ((fp = fopen(termpaths[i], "r")) != (FILE *) 0) {
+               _nc_set_source(termpaths[i]);
 
-                               /*
-                                * Suppress warning messages.  Otherwise you
-                                * get 400 lines of crap from archaic termcap
-                                * files as ncurses complains about all the
-                                * obsolete capabilities.
-                                */
-                               _nc_read_entry_source(fp, (char*)0, FALSE, TRUE, NULLHOOK);
+               /*
+                * Suppress warning messages.  Otherwise you get 400 lines of
+                * crap from archaic termcap files as ncurses complains about
+                * all the obsolete capabilities.
+                */
+               _nc_read_entry_source(fp, (char *) 0, FALSE, TRUE, NULLHOOK);
 
-                               (void) fclose(fp);
-                       }
-               }
+               (void) fclose(fp);
+           }
        }
+    }
 #endif /* USE_GETCAP */
 
-       if (_nc_head == 0)
-               return(ERR);
+    if (_nc_head == 0)
+       return (ERR);
 
-       /* resolve all use references */
-       _nc_resolve_uses();
+    /* resolve all use references */
+    _nc_resolve_uses(TRUE);
 
-       /* find a terminal matching tn, if we can */
+    /* find a terminal matching tn, if we can */
 #if USE_GETCAP_CACHE
-       if (getcwd(cwd_buf, sizeof(cwd_buf)) != 0)
-       {
-               _nc_set_writedir((char *)0); /* note: this does a chdir */
+    if (getcwd(cwd_buf, sizeof(cwd_buf)) != 0) {
+       _nc_set_writedir((char *) 0);   /* note: this does a chdir */
 #endif
-               for_entry_list(ep) {
-                       if (_nc_name_match(ep->tterm.term_names, tn, "|:"))
-                       {
-                               /*
-                                * Make a local copy of the terminal
-                                * capabilities.  Free all entry storage except
-                                * the string table for the loaded type (which
-                                * we disconnected from the list by NULLing out
-                                * ep->tterm.str_table above).
-                                */
-                               *tp = ep->tterm;
-                               ep->tterm.str_table = (char *)0;
-
-                               /*
-                                * OK, now try to write the type to user's
-                                * terminfo directory.  Next time he loads
-                                * this, it will come through terminfo.
-                                *
-                                * Advantage:  Second and subsequent fetches of
-                                * this entry will be very fast.
-                                *
-                                * Disadvantage:  After the first time a
-                                * termcap type is loaded by its user, editing
-                                * it in the /etc/termcap file, or in TERMCAP,
-                                * or in a local ~/.termcap, will be
-                                * ineffective unless the terminfo entry is
-                                * explicitly removed.
-                                */
+       for_entry_list(ep) {
+           if (_nc_name_match(ep->tterm.term_names, tn, "|:")) {
+               /*
+                * Make a local copy of the terminal capabilities.  Free all
+                * entry storage except the string table for the loaded type
+                * (which we disconnected from the list by NULLing out
+                * ep->tterm.str_table above).
+                */
+               *tp = ep->tterm;
+               ep->tterm.str_table = (char *) 0;
+
+               /*
+                * OK, now try to write the type to user's terminfo directory. 
+                * Next time he loads this, it will come through terminfo.
+                *
+                * Advantage:  Second and subsequent fetches of this entry will
+                * be very fast.
+                *
+                * Disadvantage:  After the first time a termcap type is loaded
+                * by its user, editing it in the /etc/termcap file, or in
+                * TERMCAP, or in a local ~/.termcap, will be ineffective
+                * unless the terminfo entry is explicitly removed.
+                */
 #if USE_GETCAP_CACHE
-                               (void) _nc_write_entry(tp);
+               (void) _nc_write_entry(tp);
 #endif
-                               found = TRUE;
-                               break;
-                       }
-               }
-#if USE_GETCAP_CACHE
-               chdir(cwd_buf);
+               found = TRUE;
+               break;
+           }
        }
+#if USE_GETCAP_CACHE
+       chdir(cwd_buf);
+    }
 #endif
 
-       _nc_free_entries(_nc_head);
-       return(found);
+    _nc_free_entries(_nc_head);
+    return (found);
 }
 #else
-extern void _nc_read_termcap(void);
-       void _nc_read_termcap(void) { }
-#endif /* PURE_TERMINFO */
+extern void _nc_read_termcap(void);
+void
+_nc_read_termcap(void)
+{
+}
+#endif /* PURE_TERMINFO */
index 4829fa936d016d1bb326ea14f17a67b63510b891..12aedd6e565ca942087e9512300270516ec66899 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,8 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
-
 /*
  *     write_entry.c -- write a terminfo structure onto the file system
  */
 #if 0
 #define TRACE_OUT(p) DEBUG(2, p)
 #else
-#define TRACE_OUT(p) /*nothing*/
+#define TRACE_OUT(p)           /*nothing */
 #endif
 
-MODULE_ID("$Id: write_entry.c,v 1.47 1999/07/10 20:29:22 tom Exp $")
+MODULE_ID("$Id: write_entry.c,v 1.52 2000/03/11 12:23:42 tom Exp $")
 
 static int total_written;
 
 static int write_object(FILE *, TERMTYPE *);
 
-static void write_file(char *filename, TERMTYPE *tp)
+static void
+write_file(char *filename, TERMTYPE * tp)
 {
-       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);
-       }
-       DEBUG(1, ("Created %s", filename));
+    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);
+    }
+    DEBUG(1, ("Created %s", filename));
 
-       if (write_object(fp, tp) == ERR) {
-               _nc_syserr_abort("error writing %s/%s", _nc_tic_dir(0), filename);
-       }
-       fclose(fp);
+    if (write_object(fp, tp) == ERR) {
+       _nc_syserr_abort("error writing %s/%s", _nc_tic_dir(0), filename);
+    }
+    fclose(fp);
 }
 
 /*
@@ -80,36 +79,38 @@ static void write_file(char *filename, TERMTYPE *tp)
  *
  *     Make a directory if it doesn't exist.
  */
-static int make_directory(const char *path)
+static int
+make_directory(const char *path)
 {
-int    rc;
-struct stat    statbuf;
-char   fullpath[PATH_MAX];
-const char *destination = _nc_tic_dir(0);
-
-       if (path == destination || *path == '/') {
-               if (strlen(path) + 1 > sizeof(fullpath))
-                       return(-1);
-               (void)strcpy(fullpath, path);
-       } else {
-               if (strlen(destination) + strlen(path) + 2 > sizeof(fullpath))
-                       return(-1);
-               (void)sprintf(fullpath, "%s/%s", destination, path);
-       }
+    int rc;
+    struct stat statbuf;
+    char fullpath[PATH_MAX];
+    const char *destination = _nc_tic_dir(0);
+
+    if (path == destination || *path == '/') {
+       if (strlen(path) + 1 > sizeof(fullpath))
+           return (-1);
+       (void) strcpy(fullpath, path);
+    } 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 (_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 */
-               }
+    if ((rc = stat(path, &statbuf)) < 0) {
+       rc = mkdir(path, 0777);
+    } else {
+       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 */
        }
-       return rc;
+    }
+    return rc;
 }
 
-void  _nc_set_writedir(char *dir)
+void
+_nc_set_writedir(char *dir)
 /* set the write directory for compiled entries */
 {
     const char *destination;
@@ -121,15 +122,14 @@ void  _nc_set_writedir(char *dir)
        (void) _nc_tic_dir(getenv("TERMINFO"));
 
     destination = _nc_tic_dir(0);
-    if (make_directory(destination) < 0)
-    {
-       char    *home = _nc_home_terminfo();
+    if (make_directory(destination) < 0) {
+       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);
+                   destination, errno);
        }
     }
 
@@ -138,7 +138,7 @@ void  _nc_set_writedir(char *dir)
      * *once only* per run.
      */
     if (chdir(_nc_tic_dir(destination)) < 0
-     || getcwd(actual, sizeof(actual)) == 0)
+       || getcwd(actual, sizeof(actual)) == 0)
        _nc_err_abort("%s: not a directory", destination);
     _nc_keep_tic_dir(strdup(actual));
 }
@@ -155,27 +155,28 @@ void  _nc_set_writedir(char *dir)
  *
  */
 
-static void check_writeable(int code)
+static void
+check_writeable(int code)
 {
-static const char dirnames[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
-static bool verified[sizeof(dirnames)];
+    static const char dirnames[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+    static bool verified[sizeof(dirnames)];
 
-char           dir[2];
-char           *s;
+    char dir[2];
+    char *s;
 
-       if (code == 0 || (s = strchr(dirnames, code)) == 0)
-           _nc_err_abort("Illegal terminfo subdirectory \"%c\"", code);
+    if (code == 0 || (s = strchr(dirnames, code)) == 0)
+       _nc_err_abort("Illegal terminfo subdirectory \"%c\"", code);
 
-       if (verified[s-dirnames])
-           return;
+    if (verified[s - dirnames])
+       return;
 
-       dir[0] = code;
-       dir[1] = '\0';
-       if (make_directory(dir) < 0) {
-               _nc_err_abort("%s/%s: permission denied", _nc_tic_dir(0), dir);
-       }
+    dir[0] = code;
+    dir[1] = '\0';
+    if (make_directory(dir) < 0) {
+       _nc_err_abort("%s/%s: permission denied", _nc_tic_dir(0), dir);
+    }
 
-       verified[s-dirnames] = TRUE;
+    verified[s - dirnames] = TRUE;
 }
 
 /*
@@ -200,163 +201,159 @@ char            *s;
  *     _nc_curr_line is properly set before the write_entry() call.
  */
 
-void _nc_write_entry(TERMTYPE *const tp)
+void
+_nc_write_entry(TERMTYPE * const tp)
 {
-struct stat    statbuf;
-char           name_list[MAX_TERMINFO_LENGTH];
-char           *first_name, *other_names;
-char           *ptr;
-char           filename[PATH_MAX];
-char           linkname[PATH_MAX];
+    struct stat statbuf;
+    char name_list[MAX_TERMINFO_LENGTH];
+    char *first_name, *other_names;
+    char *ptr;
+    char filename[PATH_MAX];
+    char linkname[PATH_MAX];
 #if USE_SYMLINKS
-char           symlinkname[PATH_MAX];
+    char symlinkname[PATH_MAX];
 #endif /* USE_SYMLINKS */
-static int     call_count;
-static time_t  start_time;             /* time at start of writes */
+    static int call_count;
+    static time_t start_time;  /* time at start of writes */
 
-       if (call_count++ == 0) {
-               start_time = 0;
-       }
+    if (call_count++ == 0) {
+       start_time = 0;
+    }
 
-       (void) strcpy(name_list, tp->term_names);
-       DEBUG(7, ("Name list = '%s'", name_list));
+    (void) strcpy(name_list, tp->term_names);
+    DEBUG(7, ("Name list = '%s'", name_list));
 
-       first_name = name_list;
+    first_name = name_list;
 
-       ptr = &name_list[strlen(name_list) - 1];
-       other_names = ptr + 1;
+    ptr = &name_list[strlen(name_list) - 1];
+    other_names = ptr + 1;
 
-       while (ptr > name_list  &&  *ptr != '|')
-               ptr--;
+    while (ptr > name_list && *ptr != '|')
+       ptr--;
 
-       if (ptr != name_list) {
-               *ptr = '\0';
+    if (ptr != name_list) {
+       *ptr = '\0';
 
-               for (ptr = name_list; *ptr != '\0' && *ptr != '|'; ptr++)
-                       continue;
+       for (ptr = name_list; *ptr != '\0' && *ptr != '|'; ptr++)
+           continue;
 
-               if (*ptr == '\0')
-                       other_names = ptr;
-               else {
-                       *ptr = '\0';
-                       other_names = ptr + 1;
-               }
+       if (*ptr == '\0')
+           other_names = ptr;
+       else {
+           *ptr = '\0';
+           other_names = ptr + 1;
        }
+    }
 
-       DEBUG(7, ("First name = '%s'", first_name));
-       DEBUG(7, ("Other names = '%s'", other_names));
+    DEBUG(7, ("First name = '%s'", first_name));
+    DEBUG(7, ("Other names = '%s'", other_names));
 
-       _nc_set_type(first_name);
+    _nc_set_type(first_name);
 
-       if (strlen(first_name) > sizeof(filename)-3)
-               _nc_warning("terminal name too long.");
+    if (strlen(first_name) > sizeof(filename) - 3)
+       _nc_warning("terminal name too long.");
 
-       sprintf(filename, "%c/%s", first_name[0], first_name);
+    sprintf(filename, "%c/%s", first_name[0], first_name);
 
-       /*
-        * Has this primary name been written since the first call to
-        * write_entry()?  If so, the newer write will step on the older,
-        * so warn the user.
-        */
-       if (start_time > 0 &&
-           stat(filename, &statbuf) >= 0
-           && statbuf.st_mtime >= start_time)
-       {
-               _nc_warning("name multiply defined.");
+    /*
+     * Has this primary name been written since the first call to
+     * write_entry()?  If so, the newer write will step on the older,
+     * so warn the user.
+     */
+    if (start_time > 0 &&
+       stat(filename, &statbuf) >= 0
+       && statbuf.st_mtime >= start_time) {
+       _nc_warning("name multiply defined.");
+    }
+
+    check_writeable(first_name[0]);
+    write_file(filename, tp);
+
+    if (start_time == 0) {
+       if (stat(filename, &statbuf) < 0
+           || (start_time = statbuf.st_mtime) == 0) {
+           _nc_syserr_abort("error obtaining time from %s/%s",
+               _nc_tic_dir(0), filename);
        }
+    }
+    while (*other_names != '\0') {
+       ptr = other_names++;
+       while (*other_names != '|' && *other_names != '\0')
+           other_names++;
 
-       check_writeable(first_name[0]);
-       write_file(filename, tp);
+       if (*other_names != '\0')
+           *(other_names++) = '\0';
 
-       if (start_time == 0) {
-               if (stat(filename, &statbuf) < 0
-                || (start_time = statbuf.st_mtime) == 0) {
-                       _nc_syserr_abort("error obtaining time from %s/%s",
-                               _nc_tic_dir(0), filename);
-               }
+       if (strlen(ptr) > sizeof(linkname) - 3) {
+           _nc_warning("terminal alias %s too long.", ptr);
+           continue;
        }
-       while (*other_names != '\0') {
-               ptr = other_names++;
-               while (*other_names != '|'  &&  *other_names != '\0')
-                       other_names++;
-
-               if (*other_names != '\0')
-                       *(other_names++) = '\0';
-
-               if (strlen(ptr) > sizeof(linkname)-3) {
-                       _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);
-
-               if (strcmp(filename, linkname) == 0) {
-                       _nc_warning("self-synonym ignored");
-               }
-               else if (stat(linkname, &statbuf) >= 0  &&
-                                               statbuf.st_mtime < start_time)
-               {
-                       _nc_warning("alias %s multiply defined.", ptr);
-               }
-               else if (_nc_access(linkname, W_OK) == 0)
+       if (strchr(ptr, '/') != 0) {
+           _nc_warning("cannot link alias %s.", ptr);
+           continue;
+       }
+
+       check_writeable(ptr[0]);
+       sprintf(linkname, "%c/%s", ptr[0], ptr);
+
+       if (strcmp(filename, linkname) == 0) {
+           _nc_warning("self-synonym ignored");
+       } else if (stat(linkname, &statbuf) >= 0 &&
+           statbuf.st_mtime < start_time) {
+           _nc_warning("alias %s multiply defined.", ptr);
+       } else if (_nc_access(linkname, W_OK) == 0)
 #if HAVE_LINK
-               {
-                       int code;
+       {
+           int code;
 #if USE_SYMLINKS
-                       strcpy(symlinkname, "../");
-                       strncat(symlinkname, filename, sizeof(symlinkname) - 4);
-                       symlinkname[sizeof(symlinkname) - 1] = '\0';
+           strcpy(symlinkname, "../");
+           strncat(symlinkname, filename, sizeof(symlinkname) - 4);
+           symlinkname[sizeof(symlinkname) - 1] = '\0';
 #endif /* USE_SYMLINKS */
 #if HAVE_REMOVE
-                       code = remove(linkname);
+           code = remove(linkname);
 #else
-                       code = unlink(linkname);
+           code = unlink(linkname);
 #endif
-                       if (code != 0 && errno == ENOENT)
-                               code = 0;
+           if (code != 0 && errno == ENOENT)
+               code = 0;
 #if USE_SYMLINKS
-                       if (symlink(symlinkname, linkname) < 0)
+           if (symlink(symlinkname, linkname) < 0)
 #else
-                       if (link(filename, linkname) < 0)
+           if (link(filename, linkname) < 0)
 #endif /* USE_SYMLINKS */
-                       {
-                           /*
-                            * 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));
-                       }
-               }
+           {
+               /*
+                * 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);
+           write_file(linkname, tp);
 #endif /* HAVE_LINK */
-       }
+    }
 }
 
-#undef LITTLE_ENDIAN   /* BSD/OS defines this as a feature macro */
+#undef LITTLE_ENDIAN           /* BSD/OS defines this as a feature macro */
 #define HI(x)                  ((x) / 256)
 #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)
+static int
+compute_offsets(char **Strings, int strmax, short *offsets)
 {
     size_t nextfree = 0;
     int i;
@@ -375,17 +372,18 @@ static int compute_offsets(char **Strings, int strmax, short *offsets)
     return nextfree;
 }
 
-static void convert_shorts(unsigned char *buf, short *Numbers, int count)
+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;
+       if (Numbers[i] == ABSENT_NUMERIC) {     /* HI/LO won't work */
+           buf[2 * i] = buf[2 * i + 1] = 0377;
+       } else if (Numbers[i] == CANCELLED_NUMERIC) {   /* HI/LO won't work */
+           buf[2 * i] = 0376;
+           buf[2 * i + 1] = 0377;
        } else {
-           LITTLE_ENDIAN(buf + 2*i, Numbers[i]);
+           LITTLE_ENDIAN(buf + 2 * i, Numbers[i]);
            TRACE_OUT(("put Numbers[%d]=%d", i, Numbers[i]));
        }
     }
@@ -394,164 +392,188 @@ static void convert_shorts(unsigned char *buf, short *Numbers, int count)
 #define even_boundary(value) \
            ((value) % 2 != 0 && fwrite(&zero, sizeof(char), 1, fp) != 1)
 
-static int write_object(FILE *fp, TERMTYPE *tp)
+static int
+write_object(FILE * fp, TERMTYPE * tp)
 {
-char           *namelist;
-size_t         namelen, boolmax, nummax, strmax;
-char           zero = '\0';
-size_t         i;
-short          nextfree;
-short          offsets[MAX_ENTRY_SIZE/2];
-unsigned char  buf[MAX_ENTRY_SIZE];
+    char *namelist;
+    size_t namelen, boolmax, nummax, strmax;
+    char zero = '\0';
+    size_t i;
+    short nextfree;
+    short offsets[MAX_ENTRY_SIZE / 2];
+    unsigned char buf[MAX_ENTRY_SIZE];
+    unsigned last_bool = BOOLWRITE;
+    unsigned last_num = NUMWRITE;
+    unsigned last_str = STRWRITE;
 
-       namelist = tp->term_names;
-       namelen = strlen(namelist) + 1;
+#if NCURSES_XNAMES
+    /*
+     * Normally we limit the list of values to exclude the "obsolete"
+     * capabilities.  However, if we are accepting extended names, add
+     * these as well, since they are used for supporting translation
+     * to/from termcap.
+     */
+    if (_nc_user_definable) {
+       last_bool = BOOLCOUNT;
+       last_num = NUMCOUNT;
+       last_str = STRCOUNT;
+    }
+#endif
 
-       /*
-        * 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;
-       }
+    namelist = tp->term_names;
+    namelen = strlen(namelist) + 1;
 
-       nummax = 0;
-       for (i = 0; i < NUMWRITE; i++) {
-           if (tp->Numbers[i] != ABSENT_NUMERIC)
-               nummax = i+1;
-       }
+    boolmax = 0;
+    for (i = 0; i < last_bool; i++) {
+       if (tp->Booleans[i] == TRUE)
+           boolmax = i + 1;
+    }
 
-       strmax = 0;
-       for (i = 0; i < STRWRITE; i++) {
-           if (tp->Strings[i] != ABSENT_STRING)
-               strmax = i+1;
-       }
+    nummax = 0;
+    for (i = 0; i < last_num; i++) {
+       if (tp->Numbers[i] != ABSENT_NUMERIC)
+           nummax = i + 1;
+    }
 
-       nextfree = compute_offsets(tp->Strings, strmax, offsets);
+    strmax = 0;
+    for (i = 0; i < last_str; i++) {
+       if (tp->Strings[i] != ABSENT_STRING)
+           strmax = i + 1;
+    }
 
-       /* fill in the header */
-       LITTLE_ENDIAN(buf,    MAGIC);
-       LITTLE_ENDIAN(buf+2,  min(namelen, MAX_NAME_SIZE + 1));
-       LITTLE_ENDIAN(buf+4,  boolmax);
-       LITTLE_ENDIAN(buf+6,  nummax);
-       LITTLE_ENDIAN(buf+8,  strmax);
-       LITTLE_ENDIAN(buf+10, nextfree);
+    nextfree = compute_offsets(tp->Strings, strmax, offsets);
 
-       /* write out the header */
-       TRACE_OUT(("Header of %s @%ld", namelist, ftell(fp)));
-       if (fwrite(buf, 12, 1, fp) != 1
-           ||  fwrite(namelist, sizeof(char), namelen, fp) != namelen
-           ||  fwrite(tp->Booleans, sizeof(char), boolmax, fp) != boolmax)
-           return(ERR);
+    /* fill in the header */
+    LITTLE_ENDIAN(buf, MAGIC);
+    LITTLE_ENDIAN(buf + 2, min(namelen, MAX_NAME_SIZE + 1));
+    LITTLE_ENDIAN(buf + 4, boolmax);
+    LITTLE_ENDIAN(buf + 6, nummax);
+    LITTLE_ENDIAN(buf + 8, strmax);
+    LITTLE_ENDIAN(buf + 10, nextfree);
 
-       if (even_boundary(namelen+boolmax))
-           return(ERR);
+    /* write out the header */
+    TRACE_OUT(("Header of %s @%ld", namelist, ftell(fp)));
+    if (fwrite(buf, 12, 1, fp) != 1
+       || fwrite(namelist, sizeof(char), namelen, fp) != namelen)
+         return (ERR);
 
-       TRACE_OUT(("Numerics begin at %04lx", ftell(fp)));
+    for (i = 0; i < boolmax; i++)
+       if (tp->Booleans[i] == TRUE)
+           buf[i] = TRUE;
+       else
+           buf[i] = FALSE;
+    if (fwrite(buf, sizeof(char), boolmax, fp) != boolmax)
+         return (ERR);
 
-       /* the numerics */
-       convert_shorts(buf, tp->Numbers, nummax);
-       if (fwrite(buf, 2, nummax, fp) != nummax)
-           return(ERR);
+    if (even_boundary(namelen + boolmax))
+       return (ERR);
 
-       TRACE_OUT(("String offsets begin at %04lx", ftell(fp)));
+    TRACE_OUT(("Numerics begin at %04lx", ftell(fp)));
 
-       /* the string offsets */
-       convert_shorts(buf, offsets, strmax);
-       if (fwrite(buf, 2, strmax, fp) != strmax)
-           return(ERR);
+    /* the numerics */
+    convert_shorts(buf, tp->Numbers, nummax);
+    if (fwrite(buf, 2, nummax, fp) != nummax)
+       return (ERR);
 
-       TRACE_OUT(("String table begins at %04lx", ftell(fp)));
+    TRACE_OUT(("String offsets begin at %04lx", ftell(fp)));
 
-       /* the strings */
-       for (i = 0; i < strmax; i++)
-           if (VALID_STRING(tp->Strings[i]))
-               if (!WRITE_STRING(tp->Strings[i]))
-                   return(ERR);
+    /* the string offsets */
+    convert_shorts(buf, offsets, strmax);
+    if (fwrite(buf, 2, strmax, fp) != strmax)
+       return (ERR);
+
+    TRACE_OUT(("String table begins at %04lx", ftell(fp)));
+
+    /* the strings */
+    for (i = 0; i < strmax; i++)
+       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);
-           }
+    if (NUM_EXT_NAMES(tp)) {
+       unsigned extcnt = NUM_EXT_NAMES(tp);
 
-           /*
-            * 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);
-               }
-           }
+       if (even_boundary(nextfree))
+           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);
+       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);
+    total_written++;
+    return (OK);
 }
 
 /*
  * Returns the total number of entries written by this process
  */
-int _nc_tic_written(void)
+int
+_nc_tic_written(void)
 {
-       return total_written;
+    return total_written;
 }
index aa4b887111a7cd7ac2c3b94d4acb270c19e55a51..51260aec6b1737394e898ab1323d3e87a8ec8ed2 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
 #include <curses.priv.h>
 #include <tic.h>
 
-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
+
+MODULE_ID("$Id: lib_trace.c,v 1.34 2000/04/01 20:25:47 tom Exp $")
 
 unsigned _nc_tracing = 0;      /* always define this */
 
 #ifdef TRACE
 const char *_nc_tputs_trace = "";
-long _nc_outchars;
+long _nc_outchars = 0;
 
-static FILE *  tracefp;        /* default to writing to stderr */
-#endif
+static FILE *tracefp;          /* default to writing to stderr */
 
-void trace(const unsigned int tracelevel GCC_UNUSED)
+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 (_nc_access(my_name, W_OK) < 0
-                || (tracefp = fopen(my_name, "w")) == 0) {
-                       perror("curses: Can't open 'trace' file: ");
-                       exit(EXIT_FAILURE);
-               }
-               /* Try to set line-buffered mode, or (failing that) unbuffered,
-                * so that the trace-output gets flushed automatically at the
-                * end of each line.  This is useful in case the program dies. 
-                */
-#if HAVE_SETVBUF       /* ANSI */
-               (void) setvbuf(tracefp, (char *)0, _IOLBF, 0);
-#elif HAVE_SETBUF      /* POSIX */
-               (void) setbuffer(tracefp, (char *)0);
-#endif
-               _tracef("TRACING NCURSES version %s (%d)",
-                       NCURSES_VERSION, NCURSES_VERSION_PATCH);
+    static bool been_here = FALSE;
+    static char my_name[] = "trace";
+
+    _nc_tracing = tracelevel;
+    if (!been_here && tracelevel) {
+       been_here = TRUE;
+
+       if (_nc_access(my_name, W_OK) < 0
+           || (tracefp = fopen(my_name, "w")) == 0) {
+           perror("curses: Can't open 'trace' file: ");
+           exit(EXIT_FAILURE);
        }
+       /* Try to set line-buffered mode, or (failing that) unbuffered,
+        * so that the trace-output gets flushed automatically at the
+        * end of each line.  This is useful in case the program dies. 
+        */
+#if HAVE_SETVBUF               /* ANSI */
+       (void) setvbuf(tracefp, (char *) 0, _IOLBF, 0);
+#elif HAVE_SETBUF              /* POSIX */
+       (void) setbuffer(tracefp, (char *) 0);
 #endif
+       _tracef("TRACING NCURSES version %s (%d)",
+           NCURSES_VERSION, NCURSES_VERSION_PATCH);
+    }
 }
+#endif
 
-const char *_nc_visbuf2(int bufnum, const char *buf)
+const char *
+_nc_visbuf2(int bufnum, const char *buf)
 /* visibilize a given string */
 {
-char *vbuf;
-char *tp;
-int c;
-
-       if (buf == 0)
-           return("(null)");
-       if (buf == CANCELLED_STRING)
-           return("(cancelled)");
-
-       tp = vbuf = _nc_trace_buf(bufnum, (strlen(buf) * 4) + 5);
-       *tp++ = '"';
-       while ((c = *buf++) != '\0') {
-               if (c == '"') {
-                       *tp++ = '\\'; *tp++ = '"';
-               } else if (is7bits(c) && (isgraph(c) || c == ' ')) {
-                       *tp++ = c;
-               } else if (c == '\n') {
-                       *tp++ = '\\'; *tp++ = 'n';
-               } else if (c == '\r') {
-                       *tp++ = '\\'; *tp++ = 'r';
-               } else if (c == '\b') {
-                       *tp++ = '\\'; *tp++ = 'b';
-               } else if (c == '\033') {
-                       *tp++ = '\\'; *tp++ = 'e';
-               } else if (is7bits(c) && iscntrl(c)) {
-                       *tp++ = '\\'; *tp++ = '^'; *tp++ = '@' + c;
-               } else {
-                       sprintf(tp, "\\%03o", c & 0xff);
-                       tp += strlen(tp);
-               }
+    char *vbuf;
+    char *tp;
+    int c;
+
+    if (buf == 0)
+       return ("(null)");
+    if (buf == CANCELLED_STRING)
+       return ("(cancelled)");
+
+#ifdef TRACE
+    tp = vbuf = _nc_trace_buf(bufnum, (strlen(buf) * 4) + 5);
+#else
+    {
+    static char *mybuf[2];
+    mybuf[bufnum] = _nc_doalloc(mybuf[bufnum], (strlen(buf) * 4) + 5);
+    tp = vbuf = mybuf[bufnum];
+    }
+#endif
+    *tp++ = '"';
+    while ((c = *buf++) != '\0') {
+       if (c == '"') {
+           *tp++ = '\\';
+           *tp++ = '"';
+       } else if (is7bits(c) && (isgraph(c) || c == ' ')) {
+           *tp++ = c;
+       } else if (c == '\n') {
+           *tp++ = '\\';
+           *tp++ = 'n';
+       } else if (c == '\r') {
+           *tp++ = '\\';
+           *tp++ = 'r';
+       } else if (c == '\b') {
+           *tp++ = '\\';
+           *tp++ = 'b';
+       } else if (c == '\033') {
+           *tp++ = '\\';
+           *tp++ = 'e';
+       } else if (is7bits(c) && iscntrl(c)) {
+           *tp++ = '\\';
+           *tp++ = '^';
+           *tp++ = '@' + c;
+       } else {
+           sprintf(tp, "\\%03o", c & 0xff);
+           tp += strlen(tp);
        }
-       *tp++ = '"';
-       *tp++ = '\0';
-       return(vbuf);
+    }
+    *tp++ = '"';
+    *tp++ = '\0';
+    return (vbuf);
 }
 
-const char *_nc_visbuf(const char *buf)
+const char *
+_nc_visbuf(const char *buf)
 {
-       return _nc_visbuf2(0, buf);
+    return _nc_visbuf2(0, buf);
 }
 
 #ifdef TRACE
 void
-_tracef(const char *fmt, ...)
+_tracef(const char *fmt,...)
 {
-static const char Called[] = T_CALLED("");
-static const char Return[] = T_RETURN("");
-static int level;
-va_list ap;
-bool   before = FALSE;
-bool   after = FALSE;
-int    doit = _nc_tracing;
-int    save_err = errno;
-
-       if (strlen(fmt) >= sizeof(Called) - 1) {
-               if (!strncmp(fmt, Called, sizeof(Called)-1)) {
-                       before = TRUE;
-                       level++;
-               } else if (!strncmp(fmt, Return, sizeof(Return)-1)) {
-                       after = TRUE;
-               }
-               if (before || after) {
-                       if ((level <= 1)
-                        || (doit & TRACE_ICALLS) != 0)
-                               doit &= (TRACE_CALLS|TRACE_CCALLS);
-                       else
-                               doit = 0;
-               }
+    static const char Called[] = T_CALLED("");
+    static const char Return[] = T_RETURN("");
+    static int level;
+    va_list ap;
+    bool before = FALSE;
+    bool after = FALSE;
+    int doit = _nc_tracing;
+    int save_err = errno;
+
+    if (strlen(fmt) >= sizeof(Called) - 1) {
+       if (!strncmp(fmt, Called, sizeof(Called) - 1)) {
+           before = TRUE;
+           level++;
+       } else if (!strncmp(fmt, Return, sizeof(Return) - 1)) {
+           after = TRUE;
        }
-
-       if (doit != 0) {
-               if (tracefp == 0)
-                       tracefp = stderr;
-               if (before || after) {
-                       int n;
-                       for (n = 1; n < level; n++)
-                               fputs("+ ", tracefp);
-               }
-               va_start(ap, fmt);
-               vfprintf(tracefp, fmt, ap);
-               fputc('\n', tracefp);
-               va_end(ap);
-               fflush(tracefp);
+       if (before || after) {
+           if ((level <= 1)
+               || (doit & TRACE_ICALLS) != 0)
+               doit &= (TRACE_CALLS | TRACE_CCALLS);
+           else
+               doit = 0;
        }
-
-       if (after && level)
-               level--;
-       errno = save_err;
+    }
+
+    if (doit != 0) {
+       if (tracefp == 0)
+           tracefp = stderr;
+       if (before || after) {
+           int n;
+           for (n = 1; n < level; n++)
+               fputs("+ ", tracefp);
+       }
+       va_start(ap, fmt);
+       vfprintf(tracefp, fmt, ap);
+       fputc('\n', tracefp);
+       va_end(ap);
+       fflush(tracefp);
+    }
+
+    if (after && level)
+       level--;
+    errno = save_err;
 }
 
 /* Trace 'int' return-values */
-int _nc_retrace_int(int code)
+int
+_nc_retrace_int(int code)
 {
-       T((T_RETURN("%d"), code));
-       return code;
+    T((T_RETURN("%d"), code));
+    return code;
 }
 
 /* Trace 'char*' return-values */
-char * _nc_retrace_ptr(char * code)
+char *
+_nc_retrace_ptr(char *code)
 {
-       T((T_RETURN("%s"), _nc_visbuf(code)));
-       return code;
+    T((T_RETURN("%s"), _nc_visbuf(code)));
+    return code;
 }
 
 /* Trace 'WINDOW *' return-values */
-WINDOW *_nc_retrace_win(WINDOW *code)
+WINDOW *
+_nc_retrace_win(WINDOW *code)
 {
-       T((T_RETURN("%p"), code));
-       return code;
+    T((T_RETURN("%p"), code));
+    return code;
 }
 #endif /* TRACE */
index a92e00a8624e4341e752616d12777f01aed3a24f..6dbb2f793ad0d1bbea81ace51c09edc9d110c0a7 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
  ****************************************************************************/
 
 #include <curses.priv.h>
-#include <term.h>      /* cur_term */
+#include <term.h>              /* cur_term */
 
-MODULE_ID("$Id: lib_tracebits.c,v 1.3 1999/08/21 21:43:48 tom Exp $")
+MODULE_ID("$Id: lib_tracebits.c,v 1.5 2000/02/13 01:01:55 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 */
+#include <sys/termio.h>                /* needed for ISC */
 #endif
 
 #ifdef __EMX__
 #include <io.h>
-#include <fcntl.h>
 #endif
 
 /* may be undefined if we're using termio.h */
@@ -59,90 +58,89 @@ MODULE_ID("$Id: lib_tracebits.c,v 1.3 1999/08/21 21:43:48 tom Exp $")
 
 #ifdef TRACE
 
-typedef struct {unsigned int val; const char *name;} BITNAMES;
+typedef struct {
+    unsigned int val;
+    const char *name;
+} BITNAMES;
 
-static void lookup_bits(char *buf, const BITNAMES *table, const char *label, unsigned int val)
+static void
+lookup_bits(char *buf, const BITNAMES * table, const char *label, unsigned int val)
 {
-       const BITNAMES *sp;
-
-       (void) strcat(buf, label);
-       (void) strcat(buf, ": {");
-       for (sp = table; sp->name; sp++)
-               if (sp->val != 0
-               && (val & sp->val) == sp->val)
-               {
-                       (void) strcat(buf, sp->name);
-                       (void) strcat(buf, ", ");
-               }
-       if (buf[strlen(buf) - 2] == ',')
-               buf[strlen(buf) - 2] = '\0';
-       (void) strcat(buf,"} ");
+    const BITNAMES *sp;
+
+    (void) strcat(buf, label);
+    (void) strcat(buf, ": {");
+    for (sp = table; sp->name; sp++)
+       if (sp->val != 0
+           && (val & sp->val) == sp->val) {
+           (void) strcat(buf, sp->name);
+           (void) strcat(buf, ", ");
+       }
+    if (buf[strlen(buf) - 2] == ',')
+       buf[strlen(buf) - 2] = '\0';
+    (void) strcat(buf, "} ");
 }
 
-char *_nc_tracebits(void)
+char *
+_nc_tracebits(void)
 /* describe the state of the terminal control bits exactly */
 {
-char   *buf;
-static const   BITNAMES
+    char *buf;
 
 #ifdef TERMIOS
-iflags[] =
+    static const BITNAMES iflags[] =
     {
-       {BRKINT,        "BRKINT"},
-       {IGNBRK,        "IGNBRK"},
-       {IGNPAR,        "IGNPAR"},
-       {PARMRK,        "PARMRK"},
-       {INPCK,         "INPCK"},
-       {ISTRIP,        "ISTRIP"},
-       {INLCR,         "INLCR"},
-       {IGNCR,         "IGNC"},
-       {ICRNL,         "ICRNL"},
-       {IXON,          "IXON"},
-       {IXOFF,         "IXOFF"},
-       {0,             NULL}
+       {BRKINT, "BRKINT"},
+       {IGNBRK, "IGNBRK"},
+       {IGNPAR, "IGNPAR"},
+       {PARMRK, "PARMRK"},
+       {INPCK, "INPCK"},
+       {ISTRIP, "ISTRIP"},
+       {INLCR, "INLCR"},
+       {IGNCR, "IGNC"},
+       {ICRNL, "ICRNL"},
+       {IXON, "IXON"},
+       {IXOFF, "IXOFF"},
+       {0, NULL}
 #define ALLIN  (BRKINT|IGNBRK|IGNPAR|PARMRK|INPCK|ISTRIP|INLCR|IGNCR|ICRNL|IXON|IXOFF)
-    },
-oflags[] =
+    }, oflags[] =
     {
-       {OPOST,         "OPOST"},
-       {0,             NULL}
+       {OPOST, "OPOST"},
+       {0, NULL}
 #define ALLOUT (OPOST)
-    },
-cflags[] =
+    }, cflags[] =
     {
-       {CLOCAL,        "CLOCAL"},
-       {CREAD,         "CREAD"},
-       {CSTOPB,        "CSTOPB"},
+       {CLOCAL, "CLOCAL"},
+       {CREAD, "CREAD"},
+       {CSTOPB, "CSTOPB"},
 #if !defined(CS5) || !defined(CS8)
-       {CSIZE,         "CSIZE"},
+       {CSIZE, "CSIZE"},
 #endif
-       {HUPCL,         "HUPCL"},
-       {PARENB,        "PARENB"},
-       {PARODD|PARENB, "PARODD"},      /* concession to readability */
-       {0,             NULL}
+       {HUPCL, "HUPCL"},
+       {PARENB, "PARENB"},
+       {PARODD | PARENB, "PARODD"},    /* concession to readability */
+       {0, NULL}
 #define ALLCTRL        (CLOCAL|CREAD|CSIZE|CSTOPB|HUPCL|PARENB|PARODD)
-    },
-lflags[] =
+    }, lflags[] =
     {
-       {ECHO,          "ECHO"},
-       {ECHOE|ECHO,    "ECHOE"},       /* concession to readability */
-       {ECHOK|ECHO,    "ECHOK"},       /* concession to readability */
-       {ECHONL,        "ECHONL"},
-       {ICANON,        "ICANON"},
-       {ISIG,          "ISIG"},
-       {NOFLSH,        "NOFLSH"},
-       {TOSTOP,        "TOSTOP"},
-       {IEXTEN,        "IEXTEN"},
-       {0,             NULL}
+       {ECHO, "ECHO"},
+       {ECHOE | ECHO, "ECHOE"},        /* concession to readability */
+       {ECHOK | ECHO, "ECHOK"},        /* concession to readability */
+       {ECHONL, "ECHONL"},
+       {ICANON, "ICANON"},
+       {ISIG, "ISIG"},
+       {NOFLSH, "NOFLSH"},
+       {TOSTOP, "TOSTOP"},
+       {IEXTEN, "IEXTEN"},
+       {0, NULL}
 #define ALLLOCAL       (ECHO|ECHONL|ICANON|ISIG|NOFLSH|TOSTOP|IEXTEN)
     };
 
-
     buf = _nc_trace_buf(0,
-       8 + sizeof(iflags) +
-       8 + sizeof(oflags) +
-       8 + sizeof(cflags) +
-       8 + sizeof(lflags) +
+       8 + sizeof(iflags) +
+       8 + sizeof(oflags) +
+       8 + sizeof(cflags) +
+       8 + sizeof(lflags) +
        8);
 
     if (cur_term->Nttyb.c_iflag & ALLIN)
@@ -157,18 +155,28 @@ lflags[] =
 #if defined(CS5) && defined(CS8)
     switch (cur_term->Nttyb.c_cflag & CSIZE) {
 #if defined(CS5) && (CS5 != 0)
-    case CS5:  strcat(buf, "CS5 ");    break;
+    case CS5:
+       strcat(buf, "CS5 ");
+       break;
 #endif
 #if defined(CS6) && (CS6 != 0)
-    case CS6:  strcat(buf, "CS6 ");    break;
+    case CS6:
+       strcat(buf, "CS6 ");
+       break;
 #endif
 #if defined(CS7) && (CS7 != 0)
-    case CS7:  strcat(buf, "CS7 ");    break;
+    case CS7:
+       strcat(buf, "CS7 ");
+       break;
 #endif
 #if defined(CS8) && (CS8 != 0)
-    case CS8:  strcat(buf, "CS8 ");    break;
+    case CS8:
+       strcat(buf, "CS8 ");
+       break;
 #endif
-    default:   strcat(buf, "CSIZE? "); break;
+    default:
+       strcat(buf, "CSIZE? ");
+       break;
     }
 #endif
 
@@ -193,33 +201,36 @@ lflags[] =
 #define TANDEM 0
 #endif
 
-cflags[] =
+    static const BITNAMES cflags[] =
     {
-       {CBREAK,        "CBREAK"},
-       {CRMOD,         "CRMOD"},
-       {ECHO,          "ECHO"},
-       {EVENP,         "EVENP"},
-       {LCASE,         "LCASE"},
-       {LLITOUT,       "LLITOUT"},
-       {ODDP,          "ODDP"},
-       {RAW,           "RAW"},
-       {TANDEM,        "TANDEM"},
-       {XTABS,         "XTABS"},
-       {0,             NULL}
+       {CBREAK, "CBREAK"},
+       {CRMOD, "CRMOD"},
+       {ECHO, "ECHO"},
+       {EVENP, "EVENP"},
+       {LCASE, "LCASE"},
+       {LLITOUT, "LLITOUT"},
+       {ODDP, "ODDP"},
+       {RAW, "RAW"},
+       {TANDEM, "TANDEM"},
+       {XTABS, "XTABS"},
+       {0, NULL}
 #define ALLCTRL        (CBREAK|CRMOD|ECHO|EVENP|LCASE|LLITOUT|ODDP|RAW|TANDEM|XTABS)
     };
 
     buf = _nc_trace_buf(0,
-       8 + sizeof(cflags));
+       8 + sizeof(cflags));
 
-    if (cur_term->Nttyb.sg_flags & ALLCTRL)
-    {
+    if (cur_term->Nttyb.sg_flags & ALLCTRL) {
        lookup_bits(buf, cflags, "cflags", cur_term->Nttyb.sg_flags);
     }
-
 #endif
-    return(buf);
+    return (buf);
 }
 #else
-char *_nc_tracebits(void) { static char tmp[] = ""; return tmp; }
+char *
+_nc_tracebits(void)
+{
+    static char tmp[] = "";
+    return tmp;
+}
 #endif /* TRACE */
index e97e67931464f1a18f5c7c29d5a53005f3c51737..bf004f35294ed54fc806aac449601ca85b1455d7 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
-
 /*
  *     lib_tracechr.c - Tracing/Debugging routines
  */
-
-#ifndef TRACE
-#define TRACE                  /* turn on internal defs for this module */
-#endif
-
 #include <curses.priv.h>
 
-#include <ctype.h>
+MODULE_ID("$Id: lib_tracechr.c,v 1.2 2000/04/01 20:17:26 tom Exp $")
 
 #ifdef TRACE
 char *_tracechar(const unsigned char ch)
 {
     static char crep[20];
-    /* 
-     * We can show the actual character if it's either an ordinary printable
-     * or one of the high-half characters.
-     */
-    if (isprint(ch) || (ch & 0x80))
-    {
-       crep[0] = '\'';
-       crep[1] = ch;   /* necessary; printf tries too hard on metachars */
-       (void) sprintf(crep + 2, "' = 0x%02x", (unsigned)ch);
-    }
-    else
-       (void) sprintf(crep, "0x%02x", (unsigned)ch);
+    (void) sprintf(crep, "'%s' = 0x%02x", unctrl(ch), (unsigned)ch);
     return(crep);
 }
 #else
index f6a58bc6e112390578e3ad12ef9287e4748baaa1..300ac9a3232a7b0a0450a71e6f267921aa3db3fb 100644 (file)
@@ -70,7 +70,7 @@ AUTHOR
 #include <curses.priv.h>
 #include <term.h> /* for back_color_erase */
 
-MODULE_ID("$Id: hashmap.c,v 1.33 1999/03/18 02:09:45 Alexander.V.Lukyanov Exp $")
+MODULE_ID("$Id: hashmap.c,v 1.34 1999/11/28 00:10:57 tom Exp $")
 
 #ifdef HASHDEBUG
 
@@ -286,7 +286,9 @@ void _nc_hash_map(void)
        if (!hashtab)
        {
            if (oldhash)
+           {
                FreeAndNull(oldhash);
+           }
            lines_alloc = 0;
            return;
        }
index 955eb8c6cd84b99ed4356c96193e002f043646f9..190c59bd4a15c0ea5b8096ff86d20fc397ada5b5 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*
 **     lib_mvcur.c
 **
 #include <term.h>
 #include <ctype.h>
 
-MODULE_ID("$Id: lib_mvcur.c,v 1.60 1999/10/03 01:08:27 Alexander.V.Lukyanov Exp $")
+MODULE_ID("$Id: lib_mvcur.c,v 1.67 2000/06/24 21:13:51 tom Exp $")
 
 #define STRLEN(s)       (s != 0) ? strlen(s) : 0
 
+#define CURRENT_ROW    SP->_cursrow    /* phys cursor row */
+#define CURRENT_COLUMN SP->_curscol    /* phys cursor column */
 #define CURRENT_ATTR   SP->_current_attr       /* current phys attribute */
-#define CURRENT_ROW    SP->_cursrow            /* phys cursor row */
-#define CURRENT_COLUMN SP->_curscol            /* phys cursor column */
 #define REAL_ATTR      SP->_current_attr       /* phys current attribute */
 #define WANT_CHAR(y, x)        SP->_newscr->_line[y].text[x]   /* desired state */
 #define BAUDRATE       cur_term->_baudrate     /* bits per second */
@@ -176,20 +175,21 @@ 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)
+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++;
+    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;
        }
-       return result;
+       haystack++;
+    }
+    return result;
 }
 #endif
 
@@ -203,18 +203,20 @@ char * _nc_strstr(const char *haystack, const char *needle)
 static int
 trace_cost_of(const char *capname, const char *cap, int affcnt)
 {
-       int result = _nc_msec_cost(cap,affcnt);
-       TR(TRACE_CHARPUT|TRACE_MOVE, ("CostOf %s %d", capname, result));
-       return result;
+    int result = _nc_msec_cost(cap, affcnt);
+    TR(TRACE_CHARPUT | TRACE_MOVE,
+       ("CostOf %s %d %s", capname, result, _nc_visbuf(cap)));
+    return result;
 }
 #define CostOf(cap,affcnt) trace_cost_of(#cap,cap,affcnt);
 
 static int
 trace_normalized_cost(const char *capname, const char *cap, int affcnt)
 {
-       int result = normalized_cost(cap,affcnt);
-       TR(TRACE_CHARPUT|TRACE_MOVE, ("NormalizedCost %s %d", capname, result));
-       return result;
+    int result = normalized_cost(cap, affcnt);
+    TR(TRACE_CHARPUT | TRACE_MOVE,
+       ("NormalizedCost %s %d %s", capname, result, _nc_visbuf(cap)));
+    return result;
 }
 #define NormalizedCost(cap,affcnt) trace_normalized_cost(#cap,cap,affcnt);
 
@@ -225,25 +227,22 @@ trace_normalized_cost(const char *capname, const char *cap, int affcnt)
 
 #endif
 
-int _nc_msec_cost(const char *const cap, int affcnt)
+int
+_nc_msec_cost(const char *const cap, int affcnt)
 /* compute the cost of a given operation */
 {
     if (cap == 0)
-       return(INFINITY);
-    else
-    {
-       const   char    *cp;
-       float   cum_cost = 0;
+       return (INFINITY);
+    else {
+       const char *cp;
+       float cum_cost = 0;
 
-       for (cp = cap; *cp; cp++)
-       {
+       for (cp = cap; *cp; cp++) {
            /* extract padding, either mandatory or required */
-           if (cp[0] == '$' && cp[1] == '<' && strchr(cp, '>'))
-           {
-               float   number = 0;
+           if (cp[0] == '$' && cp[1] == '<' && strchr(cp, '>')) {
+               float number = 0;
 
-               for (cp += 2; *cp != '>'; cp++)
-               {
+               for (cp += 2; *cp != '>'; cp++) {
                    if (isdigit(*cp))
                        number = number * 10 + (*cp - '0');
                    else if (*cp == '*')
@@ -252,41 +251,44 @@ int _nc_msec_cost(const char *const cap, int affcnt)
                        number += (*cp - '0') / 10.0;
                }
 
-               cum_cost += number * 10;
-           }
-           else
+#ifdef NCURSES_NO_PADDING
+               if (!(SP->_no_padding))
+#endif
+                   cum_cost += number * 10;
+           } else
                cum_cost += SP->_char_padding;
        }
 
-       return((int)cum_cost);
+       return ((int) cum_cost);
     }
 }
 
-static int normalized_cost(const char *const cap, int affcnt)
+static int
+normalized_cost(const char *const cap, int affcnt)
 /* compute the effective character-count for an operation (round up) */
 {
-       int cost = _nc_msec_cost(cap, affcnt);
-       if (cost != INFINITY)
-               cost = (cost + SP->_char_padding - 1) / SP->_char_padding;
-       return cost;
+    int cost = _nc_msec_cost(cap, affcnt);
+    if (cost != INFINITY)
+       cost = (cost + SP->_char_padding - 1) / SP->_char_padding;
+    return cost;
 }
 
-static void reset_scroll_region(void)
+static void
+reset_scroll_region(void)
 /* Set the scroll-region to a known state (the default) */
 {
-    if (change_scroll_region)
-    {
+    if (change_scroll_region) {
        TPUTS_TRACE("change_scroll_region");
        putp(tparm(change_scroll_region, 0, screen_lines - 1));
     }
 }
 
-void _nc_mvcur_resume(void)
+void
+_nc_mvcur_resume(void)
 /* what to do at initialization time and after each shellout */
 {
     /* initialize screen for cursor access */
-    if (enter_ca_mode)
-    {
+    if (enter_ca_mode) {
        TPUTS_TRACE("enter_ca_mode");
        putp(enter_ca_mode);
     }
@@ -304,15 +306,15 @@ void _nc_mvcur_resume(void)
     SP->_cursrow = SP->_curscol = -1;
 
     /* restore cursor shape */
-    if (SP->_cursor != -1)
-    {
+    if (SP->_cursor != -1) {
        int cursor = SP->_cursor;
        SP->_cursor = -1;
-       curs_set (cursor);
+       curs_set(cursor);
     }
 }
 
-void _nc_mvcur_init(void)
+void
+_nc_mvcur_init(void)
 /* initialize the cost structure */
 {
     /*
@@ -321,15 +323,15 @@ void _nc_mvcur_init(void)
     SP->_char_padding = (9 * 1000 * 10) / (BAUDRATE > 0 ? BAUDRATE : 9600);
     if (SP->_char_padding <= 0)
        SP->_char_padding = 1;  /* must be nonzero */
-    TR(TRACE_CHARPUT|TRACE_MOVE, ("char_padding %d msecs", SP->_char_padding));
+    TR(TRACE_CHARPUT | TRACE_MOVE, ("char_padding %d msecs", SP->_char_padding));
 
     /* non-parameterized local-motion strings */
-    SP->_cr_cost   = CostOf(carriage_return, 0);
+    SP->_cr_cost = CostOf(carriage_return, 0);
     SP->_home_cost = CostOf(cursor_home, 0);
-    SP->_ll_cost   = CostOf(cursor_to_ll, 0);
+    SP->_ll_cost = CostOf(cursor_to_ll, 0);
 #if USE_HARD_TABS
-    SP->_ht_cost   = CostOf(tab, 0);
-    SP->_cbt_cost  = CostOf(back_tab, 0);
+    SP->_ht_cost = CostOf(tab, 0);
+    SP->_cbt_cost = CostOf(back_tab, 0);
 #endif /* USE_HARD_TABS */
     SP->_cub1_cost = CostOf(cursor_left, 0);
     SP->_cuf1_cost = CostOf(cursor_right, 0);
@@ -357,7 +359,7 @@ void _nc_mvcur_init(void)
      *
      * (1) They never have * padding.  In the entire master terminfo database
      *     as of March 1995, only the obsolete Zenith Z-100 pc violates this.
-     *    (Proportional padding is found mainly in insert, delete and scroll
+     *     (Proportional padding is found mainly in insert, delete and scroll
      *     capabilities).
      *
      * (2) The average case of cup has two two-digit parameters.  Strictly,
@@ -375,34 +377,38 @@ void _nc_mvcur_init(void)
      * All these averages depend on the assumption that all parameter values
      * are equally probable.
      */
-    SP->_cup_cost  = CostOf(tparm(SP->_address_cursor, 23, 23), 1);
-    SP->_cub_cost  = CostOf(tparm(parm_left_cursor, 23), 1);
-    SP->_cuf_cost  = CostOf(tparm(parm_right_cursor, 23), 1);
-    SP->_cud_cost  = CostOf(tparm(parm_down_cursor, 23), 1);
-    SP->_cuu_cost  = CostOf(tparm(parm_up_cursor, 23), 1);
-    SP->_hpa_cost  = CostOf(tparm(column_address, 23), 1);
-    SP->_vpa_cost  = CostOf(tparm(row_address, 23), 1);
+    SP->_cup_cost = CostOf(tparm(SP->_address_cursor, 23, 23), 1);
+    SP->_cub_cost = CostOf(tparm(parm_left_cursor, 23), 1);
+    SP->_cuf_cost = CostOf(tparm(parm_right_cursor, 23), 1);
+    SP->_cud_cost = CostOf(tparm(parm_down_cursor, 23), 1);
+    SP->_cuu_cost = CostOf(tparm(parm_up_cursor, 23), 1);
+    SP->_hpa_cost = CostOf(tparm(column_address, 23), 1);
+    SP->_vpa_cost = CostOf(tparm(row_address, 23), 1);
 
     /* non-parameterized screen-update strings */
-    SP->_ed_cost   = NormalizedCost(clr_eos, 1);
-    SP->_el_cost   = NormalizedCost(clr_eol, 1);
-    SP->_el1_cost  = NormalizedCost(clr_bol, 1);
+    SP->_ed_cost = NormalizedCost(clr_eos, 1);
+    SP->_el_cost = NormalizedCost(clr_eol, 1);
+    SP->_el1_cost = NormalizedCost(clr_bol, 1);
     SP->_dch1_cost = NormalizedCost(delete_character, 1);
     SP->_ich1_cost = NormalizedCost(insert_character, 1);
 
     /* parameterized screen-update strings */
-    SP->_dch_cost  = NormalizedCost(tparm(parm_dch, 23), 1);
-    SP->_ich_cost  = NormalizedCost(tparm(parm_ich, 23), 1);
-    SP->_ech_cost  = NormalizedCost(tparm(erase_chars, 23), 1);
-    SP->_rep_cost  = NormalizedCost(tparm(repeat_char, ' ', 23), 1);
+    SP->_dch_cost = NormalizedCost(tparm(parm_dch, 23), 1);
+    SP->_ich_cost = NormalizedCost(tparm(parm_ich, 23), 1);
+    SP->_ech_cost = NormalizedCost(tparm(erase_chars, 23), 1);
+    SP->_rep_cost = NormalizedCost(tparm(repeat_char, ' ', 23), 1);
 
     SP->_cup_ch_cost = NormalizedCost(tparm(SP->_address_cursor, 23, 23), 1);
     SP->_hpa_ch_cost = NormalizedCost(tparm(column_address, 23), 1);
+    SP->_cuf_ch_cost = NormalizedCost(tparm(parm_right_cursor, 23), 1);
+    SP->_inline_cost = min(SP->_cup_ch_cost,
+       min(SP->_hpa_ch_cost,
+           SP->_cuf_ch_cost));
 
     /* pre-compute some capability lengths */
     SP->_carriage_return_length = STRLEN(carriage_return);
-    SP->_cursor_home_length     = STRLEN(cursor_home);
-    SP->_cursor_to_ll_length    = STRLEN(cursor_to_ll);
+    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
@@ -411,8 +417,8 @@ void _nc_mvcur_init(void)
      * feature.
      */
     if (save_cursor != 0
-     && enter_ca_mode != 0
-     && strstr(enter_ca_mode, 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;
@@ -426,7 +432,8 @@ void _nc_mvcur_init(void)
     _nc_mvcur_resume();
 }
 
-void _nc_mvcur_wrap(void)
+void
+_nc_mvcur_wrap(void)
 /* wrap up cursor-addressing mode */
 {
     /* leave cursor at screen bottom */
@@ -436,8 +443,7 @@ void _nc_mvcur_wrap(void)
     if (SP->_cursor != -1)
        curs_set(1);
 
-    if (exit_ca_mode)
-    {
+    if (exit_ca_mode) {
        TPUTS_TRACE("exit_ca_mode");
        putp(exit_ca_mode);
     }
@@ -462,24 +468,24 @@ void _nc_mvcur_wrap(void)
  * Perform repeated-append, returning cost
  */
 static inline int
-repeated_append (int total, int num, int repeat, char *dst, const char *src)
+repeated_append(int total, int num, int repeat, char *dst, const char *src)
 {
-       register size_t src_len = strlen(src);
-       register size_t dst_len = STRLEN(dst);
-
-       if ((dst_len + repeat * src_len) < OPT_SIZE-1) {
-               total += (num * repeat);
-               if (dst) {
-                   dst += dst_len;
-                   while (repeat-- > 0) {
-                       (void) strcpy(dst, src);
-                       dst += src_len;
-                   }
-               }
-       } else {
-               total = INFINITY;
+    register size_t src_len = strlen(src);
+    register size_t dst_len = STRLEN(dst);
+
+    if ((dst_len + repeat * src_len) < OPT_SIZE - 1) {
+       total += (num * repeat);
+       if (dst) {
+           dst += dst_len;
+           while (repeat-- > 0) {
+               (void) strcpy(dst, src);
+               dst += src_len;
+           }
        }
-       return total;
+    } else {
+       total = INFINITY;
+    }
+    return total;
 }
 
 #ifndef NO_OPTIMIZE
@@ -494,56 +500,47 @@ repeated_append (int total, int num, int repeat, char *dst, const char *src)
 /* Note: we'd like to inline this for speed, but GNU C barfs on the attempt. */
 
 static int
-relative_move(char *result, int from_y,int from_x,int to_y,int to_x, bool ovw)
+relative_move(char *result, int from_y, int from_x, int to_y, int to_x, bool ovw)
 /* move via local motions (cuu/cuu1/cud/cud1/cub1/cub/cuf1/cuf/vpa/hpa) */
 {
-    int                n, vcost = 0, hcost = 0;
+    int n, vcost = 0, hcost = 0;
 
     if (result)
        result[0] = '\0';
 
-    if (to_y != from_y)
-    {
+    if (to_y != from_y) {
        vcost = INFINITY;
 
-       if (row_address)
-       {
+       if (row_address) {
            if (result)
                (void) strcpy(result, tparm(row_address, to_y));
            vcost = SP->_vpa_cost;
        }
 
-       if (to_y > from_y)
-       {
+       if (to_y > from_y) {
            n = (to_y - from_y);
 
-           if (parm_down_cursor && SP->_cud_cost < vcost)
-           {
+           if (parm_down_cursor && SP->_cud_cost < vcost) {
                if (result)
                    (void) strcpy(result, tparm(parm_down_cursor, n));
                vcost = SP->_cud_cost;
            }
 
-           if (cursor_down && (n * SP->_cud1_cost < vcost))
-           {
+           if (cursor_down && (n * SP->_cud1_cost < vcost)) {
                if (result)
                    result[0] = '\0';
                vcost = repeated_append(0, SP->_cud1_cost, n, result, cursor_down);
            }
-       }
-       else /* (to_y < from_y) */
-       {
+       } else {                /* (to_y < from_y) */
            n = (from_y - to_y);
 
-           if (parm_up_cursor && SP->_cup_cost < vcost)
-           {
+           if (parm_up_cursor && SP->_cup_cost < vcost) {
                if (result)
                    (void) strcpy(result, tparm(parm_up_cursor, n));
                vcost = SP->_cup_cost;
            }
 
-           if (cursor_up && (n * SP->_cuu1_cost < vcost))
-           {
+           if (cursor_up && (n * SP->_cuu1_cost < vcost)) {
                if (result)
                    result[0] = '\0';
                vcost = repeated_append(0, SP->_cuu1_cost, n, result, cursor_up);
@@ -551,53 +548,47 @@ relative_move(char *result, int from_y,int from_x,int to_y,int to_x, bool ovw)
        }
 
        if (vcost == INFINITY)
-           return(INFINITY);
+           return (INFINITY);
     }
 
     if (result)
        result += strlen(result);
 
-    if (to_x != from_x)
-    {
-       char    str[OPT_SIZE];
+    if (to_x != from_x) {
+       char str[OPT_SIZE];
 
        hcost = INFINITY;
 
-       if (column_address)
-       {
+       if (column_address) {
            if (result)
                (void) strcpy(result, tparm(column_address, to_x));
            hcost = SP->_hpa_cost;
        }
 
-       if (to_x > from_x)
-       {
+       if (to_x > from_x) {
            n = to_x - from_x;
 
-           if (parm_right_cursor && SP->_cuf_cost < hcost)
-           {
+           if (parm_right_cursor && SP->_cuf_cost < hcost) {
                if (result)
                    (void) strcpy(result, tparm(parm_right_cursor, n));
                hcost = SP->_cuf_cost;
            }
 
-           if (cursor_right)
-           {
-               int     lhcost = 0;
+           if (cursor_right) {
+               int lhcost = 0;
 
                str[0] = '\0';
 
 #if USE_HARD_TABS
                /* use hard tabs, if we have them, to do as much as possible */
-               if (init_tabs > 0 && tab)
-               {
-                   int nxt, fr;
+               if (init_tabs > 0 && tab) {
+                   int nxt, fr;
 
-                   for (fr = from_x; (nxt = NEXTTAB(fr)) <= to_x; fr = nxt)
-                   {
-                       lhcost = repeated_append(lhcost, SP->_ht_cost, 1, str, tab);
+                   for (fr = from_x; (nxt = NEXTTAB(fr)) <= to_x; fr = nxt) {
+                       lhcost = repeated_append(lhcost, SP->_ht_cost, 1,
+                           str, tab);
                        if (lhcost == INFINITY)
-                               break;
+                           break;
                    }
 
                    n = to_x - fr;
@@ -614,11 +605,11 @@ relative_move(char *result, int from_y,int from_x,int to_y,int to_x, bool ovw)
                 * screen.
                 */
                if (ovw
-                && n > 0
-                && vcost == 0
-                && str[0] == '\0'
-                && isdigit(TextOf(WANT_CHAR(to_y, from_x))))
-                       ovw = FALSE;
+                   && 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.
@@ -628,21 +619,18 @@ relative_move(char *result, int from_y,int from_x,int to_y,int to_x, bool ovw)
                 * and the time the structure WANT_CHAR would access has been
                 * updated.
                 */
-               if (ovw)
-               {
-                   int i;
+               if (ovw) {
+                   int i;
 
                    for (i = 0; i < n; i++)
-                       if ((WANT_CHAR(to_y, from_x + i) & A_ATTRIBUTES) != CURRENT_ATTR)
-                       {
+                       if ((WANT_CHAR(to_y, from_x + i) & A_ATTRIBUTES) != CURRENT_ATTR) {
                            ovw = FALSE;
                            break;
                        }
                }
-               if (ovw)
-               {
-                   char        *sp;
-                   int i;
+               if (ovw) {
+                   char *sp;
+                   int i;
 
                    sp = str + strlen(str);
 
@@ -650,48 +638,41 @@ 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
+               } else
 #endif /* defined(REAL_ATTR) && defined(WANT_CHAR) */
                {
                    lhcost = repeated_append(lhcost, SP->_cuf1_cost, n, str, cursor_right);
                }
 
-               if (lhcost < hcost)
-               {
+               if (lhcost < hcost) {
                    if (result)
                        (void) strcpy(result, str);
                    hcost = lhcost;
                }
            }
-       }
-       else /* (to_x < from_x) */
-       {
+       } else {                /* (to_x < from_x) */
            n = from_x - to_x;
 
-           if (parm_left_cursor && SP->_cub_cost < hcost)
-           {
+           if (parm_left_cursor && SP->_cub_cost < hcost) {
                if (result)
                    (void) strcpy(result, tparm(parm_left_cursor, n));
                hcost = SP->_cub_cost;
            }
 
-           if (cursor_left)
-           {
-               int     lhcost = 0;
+           if (cursor_left) {
+               int lhcost = 0;
 
                str[0] = '\0';
 
 #if USE_HARD_TABS
-               if (init_tabs > 0 && back_tab)
-               {
-                   int nxt, fr;
+               if (init_tabs > 0 && back_tab) {
+                   int nxt, fr;
 
-                   for (fr = from_x; (nxt = LASTTAB(fr)) >= to_x; fr = nxt)
-                   {
-                       lhcost = repeated_append(lhcost, SP->_cbt_cost, 1, str, back_tab);
+                   for (fr = from_x; (nxt = LASTTAB(fr)) >= to_x; fr = nxt) {
+                       lhcost = repeated_append(lhcost, SP->_cbt_cost, 1,
+                           str, back_tab);
                        if (lhcost == INFINITY)
-                               break;
+                           break;
                    }
 
                    n = fr - to_x;
@@ -700,8 +681,7 @@ relative_move(char *result, int from_y,int from_x,int to_y,int to_x, bool ovw)
 
                lhcost = repeated_append(lhcost, SP->_cub1_cost, n, str, cursor_left);
 
-               if (lhcost < hcost)
-               {
+               if (lhcost < hcost) {
                    if (result)
                        (void) strcpy(result, str);
                    hcost = lhcost;
@@ -710,10 +690,10 @@ relative_move(char *result, int from_y,int from_x,int to_y,int to_x, bool ovw)
        }
 
        if (hcost == INFINITY)
-           return(INFINITY);
+           return (INFINITY);
     }
 
-    return(vcost + hcost);
+    return (vcost + hcost);
 }
 #endif /* !NO_OPTIMIZE */
 
@@ -729,12 +709,12 @@ relative_move(char *result, int from_y,int from_x,int to_y,int to_x, bool ovw)
  */
 
 static inline int
-onscreen_mvcur(int yold,int xold,int ynew,int xnew, bool ovw)
+onscreen_mvcur(int yold, int xold, int ynew, int xnew, bool ovw)
 /* onscreen move from (yold, xold) to (ynew, xnew) */
 {
-    char       use[OPT_SIZE], *sp;
-    int                tactic = 0, newcost, usecost = INFINITY;
-    int                t5_cr_cost;
+    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;
@@ -744,8 +724,7 @@ onscreen_mvcur(int yold,int xold,int ynew,int xnew, bool ovw)
 
     /* tactic #0: use direct cursor addressing */
     sp = tparm(SP->_address_cursor, ynew, xnew);
-    if (sp)
-    {
+    if (sp) {
        tactic = 0;
        (void) strcpy(use, sp);
        usecost = SP->_cup_cost;
@@ -763,11 +742,9 @@ onscreen_mvcur(int yold,int xold,int ynew,int xnew, bool ovw)
         * (like, say, local-movement \n getting mapped to some obscure
         * character because A_ALTCHARSET is on).
         */
-       if (yold == -1 || xold == -1 || NOT_LOCAL(yold, xold, ynew, xnew))
-       {
+       if (yold == -1 || xold == -1 || NOT_LOCAL(yold, xold, ynew, xnew)) {
 #if defined(MAIN) || defined(NCURSES_TEST)
-           if (!profiling)
-           {
+           if (!profiling) {
                (void) fputs("nonlocal\n", stderr);
                goto nonlocal;  /* always run the optimizer if profiling */
            }
@@ -776,40 +753,36 @@ onscreen_mvcur(int yold,int xold,int ynew,int xnew, bool ovw)
 #endif /* MAIN */
        }
     }
-
 #ifndef NO_OPTIMIZE
     /* tactic #1: use local movement */
     if (yold != -1 && xold != -1
-               && ((newcost=relative_move(NULL, yold, xold, ynew, xnew, ovw))!=INFINITY)
-               && newcost < usecost)
-    {
+       && ((newcost = relative_move(NULL, yold, xold, ynew, xnew, ovw)) != INFINITY)
+       && newcost < usecost) {
        tactic = 1;
        usecost = newcost;
     }
 
     /* tactic #2: use carriage-return + local movement */
     if (yold != -1 && carriage_return
-               && ((newcost=relative_move(NULL, yold,0,ynew,xnew, ovw)) != INFINITY)
-               && SP->_cr_cost + newcost < usecost)
-    {
+       && ((newcost = relative_move(NULL, yold, 0, ynew, xnew, ovw)) != INFINITY)
+       && SP->_cr_cost + newcost < usecost) {
        tactic = 2;
        usecost = SP->_cr_cost + newcost;
     }
 
     /* tactic #3: use home-cursor + local movement */
     if (cursor_home
-       && ((newcost=relative_move(NULL, 0, 0, ynew, xnew, ovw)) != INFINITY)
-       && SP->_home_cost + newcost < usecost)
-    {
+       && ((newcost = relative_move(NULL, 0, 0, ynew, xnew, ovw)) != INFINITY)
+       && SP->_home_cost + newcost < usecost) {
        tactic = 3;
        usecost = SP->_home_cost + newcost;
     }
 
     /* tactic #4: use home-down + local movement */
     if (cursor_to_ll
-       && ((newcost=relative_move(NULL, screen_lines-1, 0, ynew, xnew, ovw)) != INFINITY)
-       && SP->_ll_cost + newcost < usecost)
-    {
+       && ((newcost = relative_move(NULL, screen_lines - 1, 0, ynew, xnew,
+                   ovw)) != INFINITY)
+       && SP->_ll_cost + newcost < usecost) {
        tactic = 4;
        usecost = SP->_ll_cost + newcost;
     }
@@ -818,12 +791,12 @@ 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);
+    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)
-       && t5_cr_cost + SP->_cub1_cost + newcost < usecost)
-    {
+       && ((newcost = relative_move(NULL, yold - 1, screen_columns - 1,
+                   ynew, xnew, ovw)) != INFINITY)
+       && t5_cr_cost + SP->_cub1_cost + newcost < usecost) {
        tactic = 5;
        usecost = t5_cr_cost + SP->_cub1_cost + newcost;
     }
@@ -831,37 +804,33 @@ onscreen_mvcur(int yold,int xold,int ynew,int xnew, bool ovw)
     /*
      * These cases are ordered by estimated relative frequency.
      */
-    if (tactic)
-    {
-       if (tactic == 1)
-           (void) relative_move(use, yold, xold, ynew, xnew, ovw);
-       else if (tactic == 2)
-       {
-           (void) strcpy(use, carriage_return);
-           (void) relative_move(use + SP->_carriage_return_length,
-                                yold,0,ynew,xnew, ovw);
-       }
-       else if (tactic == 3)
-       {
-           (void) strcpy(use, cursor_home);
-           (void) relative_move(use + SP->_cursor_home_length,
-                                0, 0, ynew, xnew, ovw);
-       }
-       else if (tactic == 4)
-       {
-           (void) strcpy(use, cursor_to_ll);
-           (void) relative_move(use + SP->_cursor_to_ll_length,
-                                screen_lines-1, 0, ynew, xnew, ovw);
-       }
-       else /* if (tactic == 5) */
-       {
-           use[0] = '\0';
-           if (xold > 0)
-               (void) strcat(use, carriage_return);
-           (void) strcat(use, cursor_left);
-           (void) relative_move(use + strlen(use),
-                                yold-1, screen_columns-1, ynew, xnew, ovw);
-       }
+    switch (tactic) {
+    case 1:
+       (void) relative_move(use, yold, xold, ynew, xnew, ovw);
+       break;
+    case 2:
+       (void) strcpy(use, carriage_return);
+       (void) relative_move(use + SP->_carriage_return_length,
+           yold, 0, ynew, xnew, ovw);
+       break;
+    case 3:
+       (void) strcpy(use, cursor_home);
+       (void) relative_move(use + SP->_cursor_home_length,
+           0, 0, ynew, xnew, ovw);
+       break;
+    case 4:
+       (void) strcpy(use, cursor_to_ll);
+       (void) relative_move(use + SP->_cursor_to_ll_length,
+           screen_lines - 1, 0, ynew, xnew, ovw);
+       break;
+    case 5:
+       use[0] = '\0';
+       if (xold > 0)
+           (void) strcat(use, carriage_return);
+       (void) strcat(use, cursor_left);
+       (void) relative_move(use + strlen(use),
+           yold - 1, screen_columns - 1, ynew, xnew, ovw);
+       break;
     }
 #endif /* !NO_OPTIMIZE */
 
@@ -870,28 +839,28 @@ onscreen_mvcur(int yold,int xold,int ynew,int xnew, bool ovw)
     diff = after.tv_usec - before.tv_usec
        + (after.tv_sec - before.tv_sec) * 1000000;
     if (!profiling)
-       (void) fprintf(stderr, "onscreen: %d msec, %f 28.8Kbps char-equivalents\n",
-                      (int)diff, diff/288);
+       (void) fprintf(stderr,
+           "onscreen: %d msec, %f 28.8Kbps char-equivalents\n",
+           (int) diff, diff / 288);
 #endif /* MAIN */
 
- nonlocal:
-    if (usecost != INFINITY)
-    {
+  nonlocal:
+    if (usecost != INFINITY) {
        TPUTS_TRACE("mvcur");
        tputs(use, 1, _nc_outch);
-       return(OK);
-    }
-    else
-       return(ERR);
+       return (OK);
+    } else
+       return (ERR);
 }
 
-int mvcur(int yold, int xold, int ynew, int xnew)
+int
+mvcur(int yold, int xold, int ynew, int xnew)
 /* optimized cursor move from (yold, xold) to (ynew, xnew) */
 {
     TR(TRACE_MOVE, ("mvcur(%d,%d,%d,%d) called", yold, xold, ynew, xnew));
 
     if (yold == ynew && xold == xnew)
-       return(OK);
+       return (OK);
 
     /*
      * Most work here is rounding for terminal boundaries getting the
@@ -899,40 +868,33 @@ int mvcur(int yold, int xold, int ynew, int xnew)
      * rolling up the screen to get ynew on the screen.
      */
 
-    if (xnew >= screen_columns)
-    {
+    if (xnew >= screen_columns) {
        ynew += xnew / screen_columns;
        xnew %= screen_columns;
     }
-    if (xold >= screen_columns)
-    {
-       int     l;
+    if (xold >= screen_columns) {
+       int l;
 
        l = (xold + 1) / screen_columns;
        yold += l;
        if (yold >= screen_lines)
-               l -= (yold - screen_lines - 1);
+           l -= (yold - screen_lines - 1);
 
        while (l > 0) {
-               if (newline)
-               {
-                       TPUTS_TRACE("newline");
-                       tputs(newline, 0, _nc_outch);
-               }
-               else
-                       putchar('\n');
-               l--;
-               if (xold > 0)
-               {
-                       if (carriage_return)
-                       {
-                               TPUTS_TRACE("carriage_return");
-                               tputs(carriage_return, 0, _nc_outch);
-                       }
-                       else
-                               putchar('\r');
-                       xold = 0;
-               }
+           if (newline) {
+               TPUTS_TRACE("newline");
+               tputs(newline, 0, _nc_outch);
+           } else
+               putchar('\n');
+           l--;
+           if (xold > 0) {
+               if (carriage_return) {
+                   TPUTS_TRACE("carriage_return");
+                   tputs(carriage_return, 0, _nc_outch);
+               } else
+                   putchar('\r');
+               xold = 0;
+           }
        }
     }
 
@@ -942,7 +904,7 @@ int mvcur(int yold, int xold, int ynew, int xnew)
        ynew = screen_lines - 1;
 
     /* destination location is on screen now */
-    return(onscreen_mvcur(yold, xold, ynew, xnew, TRUE));
+    return (onscreen_mvcur(yold, xold, ynew, xnew, TRUE));
 }
 
 #if defined(TRACE) || defined(NCURSES_TEST)
@@ -963,35 +925,51 @@ const char *_nc_progname = "mvcur";
 
 static unsigned long xmits;
 
-int tputs(const char *string, int affcnt GCC_UNUSED, int (*outc)(int) GCC_UNUSED)
+/* these override lib_tputs.c */
+int
+tputs(const char *string, int affcnt GCC_UNUSED, int (*outc) (int) GCC_UNUSED)
 /* stub tputs() that dumps sequences in a visible form */
 {
     if (profiling)
        xmits += strlen(string);
     else
        (void) fputs(_nc_visbuf(string), stdout);
-    return(OK);
+    return (OK);
 }
 
-int putp(const char *string)
+int
+putp(const char *string)
 {
-    return(tputs(string, 1, _nc_outch));
+    return (tputs(string, 1, _nc_outch));
 }
 
-int _nc_outch(int ch)
+int
+_nc_outch(int ch)
 {
     putc(ch, stdout);
     return OK;
 }
 
-static char    tname[MAX_ALIAS];
+char PC = 0;                   /* used by termcap library */
+speed_t ospeed = 0;            /* used by termcap library */
+int _nc_nulls_sent = 0;                /* used by 'tack' program */
+
+int
+delay_output(int ms GCC_UNUSED)
+{
+    return OK;
+}
+
+static char tname[MAX_ALIAS];
 
-static void load_term(void)
+static void
+load_term(void)
 {
     (void) setupterm(tname, STDOUT_FILENO, NULL);
 }
 
-static int roll(int n)
+static int
+roll(int n)
 {
     int i, j;
 
@@ -1001,7 +979,8 @@ static int roll(int n)
     return (j % n);
 }
 
-int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
+int
+main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
 {
     (void) strcpy(tname, termname());
     load_term();
@@ -1016,30 +995,32 @@ int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
     fputs("smcup:", stdout);
     putchar('\n');
 
-    for (;;)
-    {
-       int     fy, fx, ty, tx, n, i;
-       char    buf[BUFSIZ], capname[BUFSIZ];
+    for (;;) {
+       int fy, fx, ty, tx, n, i;
+       char buf[BUFSIZ], capname[BUFSIZ];
 
        (void) fputs("> ", stdout);
        (void) fgets(buf, sizeof(buf), stdin);
 
-       if (buf[0] == '?')
-       {
-(void) puts("?                -- display this help message");
-(void) puts("fy fx ty tx      -- (4 numbers) display (fy,fx)->(ty,tx) move");
-(void) puts("s[croll] n t b m -- display scrolling sequence");
-(void) printf("r[eload]         -- reload terminal info for %s\n", termname());
-(void) puts("l[oad] <term>    -- load terminal info for type <term>");
-(void) puts("d[elete] <cap>   -- delete named capability");
-(void) puts("i[nspect]        -- display terminal capabilities");
-(void) puts("c[ost]           -- dump cursor-optimization cost table");
-(void) puts("o[optimize]      -- toggle movement optimization");
-(void) puts("t[orture] <num>  -- torture-test with <num> random moves");
-(void) puts("q[uit]           -- quit the program");
-       }
-       else if (sscanf(buf, "%d %d %d %d", &fy, &fx, &ty, &tx) == 4)
-       {
+       if (buf[0] == '?') {
+           (void) puts("?                -- display this help message");
+           (void)
+               puts("fy fx ty tx      -- (4 numbers) display (fy,fx)->(ty,tx) move");
+           (void) puts("s[croll] n t b m -- display scrolling sequence");
+           (void)
+               printf("r[eload]         -- reload terminal info for %s\n",
+               termname());
+           (void)
+               puts("l[oad] <term>    -- load terminal info for type <term>");
+           (void) puts("d[elete] <cap>   -- delete named capability");
+           (void) puts("i[nspect]        -- display terminal capabilities");
+           (void)
+               puts("c[ost]           -- dump cursor-optimization cost table");
+           (void) puts("o[optimize]      -- toggle movement optimization");
+           (void)
+               puts("t[orture] <num>  -- torture-test with <num> random moves");
+           (void) puts("q[uit]           -- quit the program");
+       } else if (sscanf(buf, "%d %d %d %d", &fy, &fx, &ty, &tx) == 4) {
            struct timeval before, after;
 
            putchar('"');
@@ -1049,10 +1030,9 @@ int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
            gettimeofday(&after, NULL);
 
            printf("\" (%ld msec)\n",
-               (long)(after.tv_usec - before.tv_usec + (after.tv_sec - before.tv_sec) * 1000000));
-       }
-       else if (sscanf(buf, "s %d %d %d %d", &fy, &fx, &ty, &tx) == 4)
-       {
+               (long) (after.tv_usec - before.tv_usec + (after.tv_sec -
+                       before.tv_sec) * 1000000));
+       } else if (sscanf(buf, "s %d %d %d %d", &fy, &fx, &ty, &tx) == 4) {
            struct timeval before, after;
 
            putchar('"');
@@ -1062,66 +1042,53 @@ int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
            gettimeofday(&after, NULL);
 
            printf("\" (%ld msec)\n",
-               (long)(after.tv_usec - before.tv_usec + (after.tv_sec - before.tv_sec) * 1000000));
-       }
-       else if (buf[0] == 'r')
-       {
+               (long) (after.tv_usec - before.tv_usec + (after.tv_sec -
+                       before.tv_sec) * 1000000));
+       } else if (buf[0] == 'r') {
            (void) strcpy(tname, termname());
            load_term();
-       }
-       else if (sscanf(buf, "l %s", tname) == 1)
-       {
+       } else if (sscanf(buf, "l %s", tname) == 1) {
            load_term();
-       }
-       else if (sscanf(buf, "d %s", capname) == 1)
-       {
-           struct name_table_entry const       *np = _nc_find_entry(capname,
-                                                        _nc_info_hash_table);
+       } else if (sscanf(buf, "d %s", capname) == 1) {
+           struct name_table_entry const *np = _nc_find_entry(capname,
+               _nc_info_hash_table);
 
            if (np == NULL)
                (void) printf("No such capability as \"%s\"\n", capname);
-           else
-           {
-               switch(np->nte_type)
-               {
+           else {
+               switch (np->nte_type) {
                case BOOLEAN:
                    cur_term->type.Booleans[np->nte_index] = FALSE;
-                   (void) printf("Boolean capability `%s' (%d) turned off.\n",
-                                 np->nte_name, np->nte_index);
+                   (void)
+                       printf("Boolean capability `%s' (%d) turned off.\n",
+                       np->nte_name, np->nte_index);
                    break;
 
                case NUMBER:
-                   cur_term->type.Numbers[np->nte_index] = -1;
+                   cur_term->type.Numbers[np->nte_index] = ABSENT_NUMERIC;
                    (void) printf("Number capability `%s' (%d) set to -1.\n",
-                                 np->nte_name, np->nte_index);
+                       np->nte_name, np->nte_index);
                    break;
 
                case STRING:
-                   cur_term->type.Strings[np->nte_index] = (char *)NULL;
+                   cur_term->type.Strings[np->nte_index] = ABSENT_STRING;
                    (void) printf("String capability `%s' (%d) deleted.\n",
-                                 np->nte_name, np->nte_index);
+                       np->nte_name, np->nte_index);
                    break;
                }
            }
-       }
-       else if (buf[0] == 'i')
-       {
-            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')
-       {
-            if (_nc_optimize_enable & OPTIMIZE_MVCUR)
-            {
-                _nc_optimize_enable &=~ OPTIMIZE_MVCUR;
-                (void) puts("Optimization is now off.");
-            }
-            else
-            {
-                _nc_optimize_enable |= OPTIMIZE_MVCUR;
-                (void) puts("Optimization is now on.");
-            }
+       } else if (buf[0] == 'i') {
+           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') {
+           if (_nc_optimize_enable & OPTIMIZE_MVCUR) {
+               _nc_optimize_enable &= ~OPTIMIZE_MVCUR;
+               (void) puts("Optimization is now off.");
+           } else {
+               _nc_optimize_enable |= OPTIMIZE_MVCUR;
+               (void) puts("Optimization is now on.");
+           }
        }
        /*
         * You can use the `t' test to profile and tune the movement
@@ -1142,16 +1109,15 @@ int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
         * modes.  As long as the optimized times are less, the optimizer
         * is winning.
         */
-       else if (sscanf(buf, "t %d", &n) == 1)
-       {
+       else if (sscanf(buf, "t %d", &n) == 1) {
            float cumtime = 0, perchar;
-           int speeds[] = {2400, 9600, 14400, 19200, 28800, 38400, 0};
+           int speeds[] =
+           {2400, 9600, 14400, 19200, 28800, 38400, 0};
 
-           srand((unsigned)(getpid() + time((time_t *)0)));
+           srand((unsigned) (getpid() + time((time_t *) 0)));
            profiling = TRUE;
            xmits = 0;
-           for (i = 0; i < n; i++)
-           {
+           for (i = 0; i < n; i++) {
                /*
                 * This does a move test between two random locations,
                 * Random moves probably short-change the optimizer,
@@ -1182,10 +1148,9 @@ int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
            perchar = cumtime / n;
 
            (void) printf("%d moves (%ld chars) in %d msec, %f msec each:\n",
-                         n, xmits, (int)cumtime, perchar);
+               n, xmits, (int) cumtime, perchar);
 
-           for (i = 0; speeds[i]; i++)
-           {
+           for (i = 0; speeds[i]; i++) {
                /*
                 * Total estimated time for the moves, computation and
                 * transmission both. Transmission time is an estimate
@@ -1200,12 +1165,11 @@ int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
                 */
                float overhead = speeds[i] * perchar / 1e6;
 
-               (void) printf("%6d bps: %3.2f char-xmits overhead; total estimated time %15.2f\n",
-                             speeds[i], overhead, totalest);
+               (void)
+                   printf("%6d bps: %3.2f char-xmits overhead; total estimated time %15.2f\n",
+                   speeds[i], overhead, totalest);
            }
-       }
-       else if (buf[0] == 'c')
-       {
+       } else if (buf[0] == 'c') {
            (void) printf("char padding: %d\n", SP->_char_padding);
            (void) printf("cr cost: %d\n", SP->_cr_cost);
            (void) printf("cup cost: %d\n", SP->_cup_cost);
@@ -1225,8 +1189,7 @@ int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
            (void) printf("cuu cost: %d\n", SP->_cuu_cost);
            (void) printf("hpa cost: %d\n", SP->_hpa_cost);
            (void) printf("vpa cost: %d\n", SP->_vpa_cost);
-       }
-       else if (buf[0] == 'x' || buf[0] == 'q')
+       } else if (buf[0] == 'x' || buf[0] == 'q')
            break;
        else
            (void) puts("Invalid command.");
@@ -1236,7 +1199,7 @@ int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
     _nc_mvcur_wrap();
     putchar('\n');
 
-    return(0);
+    return (0);
 }
 
 #endif /* MAIN */
index 6fb912cf5096d2bd7ef3b988d146d05df886ceb9..d01a62f714879b573878e2f5796900ebdddc539b 100644 (file)
@@ -48,7 +48,7 @@
 #define _POSIX_SOURCE
 #endif
 
-MODULE_ID("$Id: lib_tstp.c,v 1.20 1999/10/22 23:11:09 tom Exp $")
+MODULE_ID("$Id: lib_tstp.c,v 1.21 2000/05/20 23:28:56 tom Exp $")
 
 #if defined(SIGTSTP) && (HAVE_SIGACTION || HAVE_SIGVEC)
 #define USE_SIGTSTP 1
@@ -226,6 +226,7 @@ static void cleanup(int sig)
                        && SP->_ofp != 0
                        && isatty(fileno(SP->_ofp))) {
                            SP->_cleanup = TRUE;
+                           SP->_outch = _nc_outch;
                        }
                        set_term(scan);
                        endwin();
index f095c9b53c0c8c5e6c04c7ab56b764d14bb131f5..a21e2a16db0fa7ea140233d404d8365ae7b129cf 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -47,8 +47,6 @@
 #include <curses.priv.h>
 
 #if USE_FUNC_POLL
-# include <stropts.h>
-# include <poll.h>
 # if HAVE_SYS_TIME_H
 #  include <sys/time.h>
 # endif
@@ -61,7 +59,7 @@
 # endif
 #endif
 
-MODULE_ID("$Id: lib_twait.c,v 1.34 1999/10/16 21:25:10 tom Exp $")
+MODULE_ID("$Id: lib_twait.c,v 1.37 2000/06/29 23:03:09 tom Exp $")
 
 static long _nc_gettime(bool first)
 {
@@ -243,7 +241,6 @@ retry:
                                if ((mode & (1 << count))
                                 && (fds[count].revents & POLLIN)) {
                                        result |= (1 << count);
-                                       count++;
                                }
                        }
 #elif defined(__BEOS__)
index 20cc2b138011c528a4f162aadee7ecfedb58d239..7cff22ec4b430504a37023aca9798e74fddfec87 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -64,7 +64,7 @@
 #include <curses.priv.h>
 #include <term.h>
 
-MODULE_ID("$Id: lib_vidattr.c,v 1.23 1999/06/12 21:20:41 tom Exp $")
+MODULE_ID("$Id: lib_vidattr.c,v 1.27 2000/04/29 23:25:27 tom Exp $")
 
 #define doPut(mode) TPUTS_TRACE(#mode); tputs(mode, 1, outc)
 
@@ -76,203 +76,218 @@ MODULE_ID("$Id: lib_vidattr.c,v 1.23 1999/06/12 21:20:41 tom Exp $")
 
        /* if there is no current screen, assume we *can* do color */
 #define SetColorsIf(why,old_attr) \
-       if ((!SP || SP->_coloron) && (why)) { \
+       if (can_color && (why)) { \
                int old_pair = PAIR_NUMBER(old_attr); \
                T(("old pair = %d -- new pair = %d", old_pair, pair)); \
                if ((pair != old_pair) \
+                || (fix_pair0 && (pair == 0)) \
                 || (reverse ^ ((old_attr & A_REVERSE) != 0))) { \
-                       _nc_do_color(pair, reverse, outc); \
+                       _nc_do_color(old_pair, pair, reverse, outc); \
                } \
        }
 
-int vidputs(attr_t newmode, int  (*outc)(int))
+int
+vidputs(attr_t newmode, int (*outc) (int))
 {
-static attr_t previous_attr = A_NORMAL;
-attr_t turn_on, turn_off;
-int pair;
-bool reverse = FALSE;
-bool used_ncv = FALSE;
+    static attr_t previous_attr = A_NORMAL;
+    attr_t turn_on, turn_off;
+    int pair;
+    bool reverse = FALSE;
+    bool used_ncv = FALSE;
+    bool can_color = (SP == 0 || SP->_coloron);
+#ifdef NCURSES_EXT_FUNCS
+    bool fix_pair0 = (SP != 0 && SP->_coloron && !SP->_default_color);
+#else
+#define fix_pair0 FALSE
+#endif
 
-       T((T_CALLED("vidputs(%s)"), _traceattr(newmode)));
+    T((T_CALLED("vidputs(%s)"), _traceattr(newmode)));
 
-       /* this allows us to go on whether or not newterm() has been called */
-       if (SP)
-               previous_attr = SP->_current_attr;
+    /* this allows us to go on whether or not newterm() has been called */
+    if (SP)
+       previous_attr = SP->_current_attr;
 
-       T(("previous attribute was %s", _traceattr(previous_attr)));
+    T(("previous attribute was %s", _traceattr(previous_attr)));
 
 #if !USE_XMC_SUPPORT
-       if ((SP != 0)
-        && (magic_cookie_glitch > 0))
-               newmode &= ~(SP->_xmc_suppress);
+    if ((SP != 0)
+       && (magic_cookie_glitch > 0))
+       newmode &= ~(SP->_xmc_suppress);
 #endif
 
-       /*
-        * If we have a terminal that cannot combine color with video
-        * attributes, use the colors in preference.
-        */
-       if ((newmode & A_COLOR)
-        && (no_color_video > 0)) {
-               static const struct {
-                       attr_t video;
-                       unsigned bit;
-               } table[] = {
-                       { A_STANDOUT,           1 },
-                       { A_UNDERLINE,          2 },
-                       { A_REVERSE,            4 },
-                       { A_BLINK,              8 },
-                       { A_DIM,                16 },
-                       { A_BOLD,               32 },
-                       { A_INVIS,              64 },
-                       { A_PROTECT,            128 },
-                       { A_ALTCHARSET,         256 },
-               };
-               size_t n;
-               for (n = 0; n < SIZEOF(table); n++) {
-                       if ((table[n].bit & no_color_video)
-                        && (table[n].video & newmode)) {
-                               used_ncv = TRUE;
-                               if (table[n].video == A_REVERSE)
-                                       reverse = TRUE;
-                               else
-                                       newmode &= ~table[n].video;
-                       }
-               }
+    /*
+     * If we have a terminal that cannot combine color with video
+     * attributes, use the colors in preference.
+     */
+    if (((newmode & A_COLOR) != 0
+           || fix_pair0)
+       && (no_color_video > 0)) {
+       /* *INDENT-OFF* */
+       static const struct {
+           attr_t video;
+           unsigned bit;
+       } table[] = {
+           { A_STANDOUT,       1 },
+           { A_UNDERLINE,      2 },
+           { A_REVERSE,        4 },
+           { A_BLINK,          8 },
+           { A_DIM,            16 },
+           { A_BOLD,           32 },
+           { A_INVIS,          64 },
+           { A_PROTECT,        128 },
+           { A_ALTCHARSET,     256 },
+       };
+       /* *INDENT-ON* */
+
+       size_t n;
+       for (n = 0; n < SIZEOF(table); n++) {
+           if ((table[n].bit & no_color_video)
+               && (table[n].video & newmode)) {
+               used_ncv = TRUE;
+               if (table[n].video == A_REVERSE)
+                   reverse = TRUE;
+               else
+                   newmode &= ~table[n].video;
+           }
        }
+    }
+
+    if (newmode == previous_attr)
+       returnCode(OK);
+
+    pair = PAIR_NUMBER(newmode);
 
-       if (newmode == previous_attr)
-               returnCode(OK);
+    if (reverse) {
+       newmode &= ~A_REVERSE;
+    }
 
-       pair = PAIR_NUMBER(newmode);
+    turn_off = (~newmode & previous_attr) & ALL_BUT_COLOR;
+    turn_on = (newmode & ~previous_attr) & ALL_BUT_COLOR;
 
-       if (reverse) {
-               newmode &= ~A_REVERSE;
+    SetColorsIf(((pair == 0) && !fix_pair0), previous_attr);
+
+    if (newmode == A_NORMAL) {
+       if ((previous_attr & A_ALTCHARSET) && exit_alt_charset_mode) {
+           doPut(exit_alt_charset_mode);
+           previous_attr &= ~A_ALTCHARSET;
+       }
+       if (previous_attr) {
+           doPut(exit_attribute_mode);
+           previous_attr &= ~A_COLOR;
        }
 
-       turn_off = (~newmode & previous_attr) & ALL_BUT_COLOR;
-       turn_on  = (newmode & ~previous_attr) & ALL_BUT_COLOR;
-
-       SetColorsIf(pair == 0, previous_attr);
-
-       if (newmode == A_NORMAL) {
-               if((previous_attr & A_ALTCHARSET) && exit_alt_charset_mode) {
-                       doPut(exit_alt_charset_mode);
-                       previous_attr &= ~A_ALTCHARSET;
-               }
-               if (previous_attr) {
-                       doPut(exit_attribute_mode);
-                       previous_attr &= ~A_COLOR;
-               }
-
-               SetColorsIf(pair != 0, previous_attr);
-       } else if (set_attributes && !used_ncv) {
-               if (turn_on || turn_off) {
-                       TPUTS_TRACE("set_attributes");
-                       tputs(tparm(set_attributes,
-                               (newmode & A_STANDOUT) != 0,
-                               (newmode & A_UNDERLINE) != 0,
-                               (newmode & A_REVERSE) != 0,
-                               (newmode & A_BLINK) != 0,
-                               (newmode & A_DIM) != 0,
-                               (newmode & A_BOLD) != 0,
-                               (newmode & A_INVIS) != 0,
-                               (newmode & A_PROTECT) != 0,
-                               (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);
-
-               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)));
-
-               TurnOn (A_ALTCHARSET, enter_alt_charset_mode);
-               TurnOn (A_BLINK,      enter_blink_mode);
-               TurnOn (A_BOLD,       enter_bold_mode);
-               TurnOn (A_DIM,        enter_dim_mode);
-               TurnOn (A_REVERSE,    enter_reverse_mode);
-               TurnOn (A_STANDOUT,   enter_standout_mode);
-               TurnOn (A_PROTECT,    enter_protected_mode);
-               TurnOn (A_INVIS,      enter_secure_mode);
-               TurnOn (A_UNDERLINE,  enter_underline_mode);
-               TurnOn (A_HORIZONTAL, enter_horizontal_hl_mode);
-               TurnOn (A_LEFT,       enter_left_hl_mode);
-               TurnOn (A_LOW,        enter_low_hl_mode);
-               TurnOn (A_RIGHT,      enter_right_hl_mode);
-               TurnOn (A_TOP,        enter_top_hl_mode);
-               TurnOn (A_VERTICAL,   enter_vertical_hl_mode);
+       SetColorsIf((pair != 0) || fix_pair0, previous_attr);
+    } else if (set_attributes && !used_ncv) {
+       if (turn_on || turn_off) {
+           TPUTS_TRACE("set_attributes");
+           tputs(tparm(set_attributes,
+                   (newmode & A_STANDOUT) != 0,
+                   (newmode & A_UNDERLINE) != 0,
+                   (newmode & A_REVERSE) != 0,
+                   (newmode & A_BLINK) != 0,
+                   (newmode & A_DIM) != 0,
+                   (newmode & A_BOLD) != 0,
+                   (newmode & A_INVIS) != 0,
+                   (newmode & A_PROTECT) != 0,
+                   (newmode & A_ALTCHARSET) != 0), 1, outc);
+           previous_attr &= ~A_COLOR;
        }
+       SetColorsIf((pair != 0) || fix_pair0, previous_attr);
+    } else {
 
-       if (reverse)
-               newmode |= A_REVERSE;
+       T(("turning %s off", _traceattr(turn_off)));
 
-       if (SP)
-               SP->_current_attr = newmode;
-       else
-               previous_attr = newmode;
+       TurnOff(A_ALTCHARSET, exit_alt_charset_mode);
 
-       returnCode(OK);
+       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) || fix_pair0, previous_attr);
+
+       T(("turning %s on", _traceattr(turn_on)));
+       /* *INDENT-OFF* */
+       TurnOn(A_ALTCHARSET,    enter_alt_charset_mode);
+       TurnOn(A_BLINK,         enter_blink_mode);
+       TurnOn(A_BOLD,          enter_bold_mode);
+       TurnOn(A_DIM,           enter_dim_mode);
+       TurnOn(A_REVERSE,       enter_reverse_mode);
+       TurnOn(A_STANDOUT,      enter_standout_mode);
+       TurnOn(A_PROTECT,       enter_protected_mode);
+       TurnOn(A_INVIS,         enter_secure_mode);
+       TurnOn(A_UNDERLINE,     enter_underline_mode);
+       TurnOn(A_HORIZONTAL,    enter_horizontal_hl_mode);
+       TurnOn(A_LEFT,          enter_left_hl_mode);
+       TurnOn(A_LOW,           enter_low_hl_mode);
+       TurnOn(A_RIGHT,         enter_right_hl_mode);
+       TurnOn(A_TOP,           enter_top_hl_mode);
+       TurnOn(A_VERTICAL,      enter_vertical_hl_mode);
+       /* *INDENT-ON* */
+
+    }
+
+    if (reverse)
+       newmode |= A_REVERSE;
+
+    if (SP)
+       SP->_current_attr = newmode;
+    else
+       previous_attr = newmode;
+
+    returnCode(OK);
 }
 
-int vidattr(attr_t newmode)
+int
+vidattr(attr_t newmode)
 {
-       T((T_CALLED("vidattr(%s)"), _traceattr(newmode)));
+    T((T_CALLED("vidattr(%s)"), _traceattr(newmode)));
 
-       returnCode(vidputs(newmode, _nc_outch));
+    returnCode(vidputs(newmode, _nc_outch));
 }
 
-chtype termattrs(void)
+chtype
+termattrs(void)
 {
-       chtype attrs = A_NORMAL;
+    chtype attrs = A_NORMAL;
 
-       if (enter_alt_charset_mode)
-               attrs |= A_ALTCHARSET;
+    if (enter_alt_charset_mode)
+       attrs |= A_ALTCHARSET;
 
-       if (enter_blink_mode)
-               attrs |= A_BLINK;
+    if (enter_blink_mode)
+       attrs |= A_BLINK;
 
-       if (enter_bold_mode)
-               attrs |= A_BOLD;
+    if (enter_bold_mode)
+       attrs |= A_BOLD;
 
-       if (enter_dim_mode)
-               attrs |= A_DIM;
+    if (enter_dim_mode)
+       attrs |= A_DIM;
 
-       if (enter_reverse_mode)
-               attrs |= A_REVERSE;
+    if (enter_reverse_mode)
+       attrs |= A_REVERSE;
 
-       if (enter_standout_mode)
-               attrs |= A_STANDOUT;
+    if (enter_standout_mode)
+       attrs |= A_STANDOUT;
 
-       if (enter_protected_mode)
-               attrs |= A_PROTECT;
+    if (enter_protected_mode)
+       attrs |= A_PROTECT;
 
-       if (enter_secure_mode)
-               attrs |= A_INVIS;
+    if (enter_secure_mode)
+       attrs |= A_INVIS;
 
-       if (enter_underline_mode)
-               attrs |= A_UNDERLINE;
+    if (enter_underline_mode)
+       attrs |= A_UNDERLINE;
 
-       if (SP->_coloron)
-               attrs |= A_COLOR;
+    if (SP->_coloron)
+       attrs |= A_COLOR;
 
-       return(attrs);
+    return (attrs);
 }
-
index 1bc0d2d9dc426b4bfdff476d2521483e73a4f658..e7b447d8045dd776e8ccc96dbf8bdc1d76cb9292 100644 (file)
@@ -132,15 +132,6 @@ struct tty_display_data {
                                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 */
index a5a640f8663c7da328ff6f6286ab5be2e5d8c716..1f3dd4635d859db33b5584ddae7d317445801504 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*-----------------------------------------------------------------
  *
  *     lib_doupdate.c
@@ -63,8 +62,6 @@
 #endif
 
 #if USE_FUNC_POLL
-#include <stropts.h>
-#include <poll.h>
 #elif HAVE_SELECT
 #if HAVE_SYS_SELECT_H
 #include <sys/select.h>
@@ -73,7 +70,7 @@
 
 #include <term.h>
 
-MODULE_ID("$Id: tty_update.c,v 1.117 1999/10/22 23:28:46 tom Exp $")
+MODULE_ID("$Id: tty_update.c,v 1.141 2000/07/04 21:01:40 tom Exp $")
 
 /*
  * This define controls the line-breakout optimization.  Every once in a
@@ -86,6 +83,8 @@ MODULE_ID("$Id: tty_update.c,v 1.117 1999/10/22 23:28:46 tom Exp $")
  */
 #define CHECK_INTERVAL 5
 
+#define FILL_BCE() (SP->_coloron && !SP->_default_color && !back_color_erase)
+
 /*
  * Enable checking to see if doupdate and friends are tracking the true
  * cursor position correctly.  NOTE: this is a debugging hack which will
@@ -93,13 +92,13 @@ MODULE_ID("$Id: tty_update.c,v 1.117 1999/10/22 23:28:46 tom Exp $")
  */
 /* #define POSITION_DEBUG */
 
-static inline chtype ClrBlank ( WINDOW *win );
+static inline chtype ClrBlank(WINDOW *win);
 static int ClrBottom(int total);
-static void ClearScreen( chtype blank );
-static void ClrUpdate( void );
-static void DelChar( int count );
-static void InsStr( chtype *line, int count );
-static void TransformLine( int const lineno );
+static void ClearScreen(chtype blank);
+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
 /****************************************************************************
@@ -108,19 +107,20 @@ static void TransformLine( int const lineno );
  *
  ****************************************************************************/
 
-static 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 */
 {
-    char  buf[20];
+    char buf[20];
     int y, x;
 
     if (!_nc_tracing || (expected_y < 0 && expected_x < 0))
        return;
 
     memset(buf, '\0', sizeof(buf));
-    putp("\033[6n");   /* only works on ANSI-compatibles */
+    putp("\033[6n");           /* only works on ANSI-compatibles */
     _nc_flush();
-    (void) read(0, buf, sizeof(buf)-1);
+    (void) read(0, buf, sizeof(buf) - 1);
     _tracef("probe returned %s", _nc_visbuf(buf));
 
     /* try to interpret as a position report */
@@ -134,14 +134,14 @@ static void position_check(int expected_y, int expected_x, char *legend)
        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);
+               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 */
+#define position_check(expected_y, expected_x, legend) /* nothing */
 #endif /* POSITION_DEBUG */
 
 /****************************************************************************
@@ -150,115 +150,118 @@ static void position_check(int expected_y, int expected_x, char *legend)
  *
  ****************************************************************************/
 
-static inline void GoTo(int const row, int const col)
+static inline void
+GoTo(int const row, int const col)
 {
-       chtype  oldattr = SP->_current_attr;
+    chtype oldattr = SP->_current_attr;
 
-       TR(TRACE_MOVE, ("GoTo(%d, %d) from (%d, %d)",
-                       row, col, SP->_cursrow, SP->_curscol));
+    TR(TRACE_MOVE, ("GoTo(%d, %d) from (%d, %d)",
+           row, col, SP->_cursrow, SP->_curscol));
 
-       position_check(SP->_cursrow, SP->_curscol, "GoTo");
+    position_check(SP->_cursrow, SP->_curscol, "GoTo");
 
-       /*
-        * Force restore even if msgr is on when we're in an alternate
-        * character set -- these have a strong tendency to screw up the
-        * CR & LF used for local character motions!
-        */
-       if ((oldattr & A_ALTCHARSET)
-           || (oldattr && !move_standout_mode))
-       {
-               TR(TRACE_CHARPUT, ("turning off (%#lx) %s before move",
-                  oldattr, _traceattr(oldattr)));
-               vidattr(A_NORMAL);
-       }
+    /*
+     * Force restore even if msgr is on when we're in an alternate
+     * character set -- these have a strong tendency to screw up the
+     * CR & LF used for local character motions!
+     */
+    if ((oldattr & A_ALTCHARSET)
+       || (oldattr && !move_standout_mode)) {
+       TR(TRACE_CHARPUT, ("turning off (%#lx) %s before move",
+               oldattr, _traceattr(oldattr)));
+       vidattr(A_NORMAL);
+    }
 
-       mvcur(SP->_cursrow, SP->_curscol, row, col);
-       SP->_cursrow = row;
-       SP->_curscol = col;
-       position_check(SP->_cursrow, SP->_curscol, "GoTo2");
+    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)
+static inline void
+PutAttrChar(chtype ch)
 {
-       if (tilde_glitch && (TextOf(ch) == '~'))
-               ch = ('`' | AttrOf(ch));
-
-       TR(TRACE_CHARPUT, ("PutAttrChar(%s) at (%d, %d)",
-                         _tracechtype(ch),
-                          SP->_cursrow, SP->_curscol));
-       UpdateAttrs(ch);
-       if (SP->_cleanup) {
-               _nc_outch((int)TextOf(ch));
-       } else {
-               putc((int)TextOf(ch), SP->_ofp); /* macro's fastest... */
+    int data;
+
+    if (tilde_glitch && (TextOf(ch) == '~'))
+       ch = ('`' | AttrOf(ch));
+
+    TR(TRACE_CHARPUT, ("PutAttrChar(%s) at (%d, %d)",
+           _tracechtype(ch),
+           SP->_cursrow, SP->_curscol));
+    UpdateAttrs(ch);
+    data = TextOf(ch);
+    if (SP->_outch != 0) {
+       SP->_outch(data);
+    } else {
+       putc(data, SP->_ofp);   /* macro's fastest... */
 #ifdef TRACE
-               _nc_outchars++;
+       _nc_outchars++;
 #endif /* TRACE */
-       }
-       SP->_curscol++;
-       if (char_padding) {
-               TPUTS_TRACE("char_padding");
-               putp(char_padding);
-       }
+    }
+    SP->_curscol++;
+    if (char_padding) {
+       TPUTS_TRACE("char_padding");
+       putp(char_padding);
+    }
 }
 
-static bool check_pending(void)
+static bool
+check_pending(void)
 /* check for pending input */
 {
-       bool have_pending = FALSE;
+    bool have_pending = FALSE;
 
-       /*
-        * Only carry out this check when the flag is zero, otherwise we'll
-        * have the refreshing slow down drastically (or stop) if there's an
-        * unread character available.
-        */
-       if(SP->_fifohold != 0)
-               return FALSE;
+    /*
+     * Only carry out this check when the flag is zero, otherwise we'll
+     * have the refreshing slow down drastically (or stop) if there's an
+     * unread character available.
+     */
+    if (SP->_fifohold != 0)
+       return FALSE;
 
-       if (SP->_checkfd >= 0) {
+    if (SP->_checkfd >= 0) {
 #if USE_FUNC_POLL
-               struct pollfd fds[1];
-               fds[0].fd = SP->_checkfd;
-               fds[0].events = POLLIN;
-               if (poll(fds, 1, 0) > 0)
-               {
-                       have_pending = TRUE;
-               }
+       struct pollfd fds[1];
+       fds[0].fd = SP->_checkfd;
+       fds[0].events = POLLIN;
+       if (poll(fds, 1, 0) > 0) {
+           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;
-               }
+       /*
+        * 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;
+       fd_set fdset;
+       struct timeval ktimeout;
 
-               ktimeout.tv_sec =
-               ktimeout.tv_usec = 0;
+       ktimeout.tv_sec =
+           ktimeout.tv_usec = 0;
 
-               FD_ZERO(&fdset);
-               FD_SET(SP->_checkfd, &fdset);
-               if (select(SP->_checkfd+1, &fdset, NULL, NULL, &ktimeout) != 0)
-               {
-                       have_pending = TRUE;
-               }
-#endif
-       }
-       if (have_pending) {
-               SP->_fifohold = 5;
-               _nc_flush();
+       FD_ZERO(&fdset);
+       FD_SET(SP->_checkfd, &fdset);
+       if (select(SP->_checkfd + 1, &fdset, NULL, NULL, &ktimeout) != 0) {
+           have_pending = TRUE;
        }
-       return FALSE;
+#endif
+    }
+    if (have_pending) {
+       SP->_fifohold = 5;
+       _nc_flush();
+    }
+    return FALSE;
 }
 
 /*
@@ -274,15 +277,13 @@ static void callPutChar(chtype const);
 static inline void PutChar(chtype const ch);   /* forward declaration */
 
 /* put char at lower right corner */
-static void PutCharLR(chtype const ch)
+static void
+PutCharLR(chtype const ch)
 {
-    if (!auto_right_margin)
-    {
+    if (!auto_right_margin) {
        /* we can put the char directly */
        PutAttrChar(ch);
-    }
-    else if (enter_am_mode && exit_am_mode)
-    {
+    } else if (enter_am_mode && exit_am_mode) {
        /* we can suppress automargin */
        TPUTS_TRACE("exit_am_mode");
        putp(exit_am_mode);
@@ -293,21 +294,19 @@ static void PutCharLR(chtype const ch)
 
        TPUTS_TRACE("enter_am_mode");
        putp(enter_am_mode);
-    }
-    else if ((enter_insert_mode && exit_insert_mode)
-            || insert_character || parm_ich)
-    {
-       GoTo(screen_lines-1,screen_columns-2);
+    } else if ((enter_insert_mode && exit_insert_mode)
+       || insert_character || parm_ich) {
+       GoTo(screen_lines - 1, screen_columns - 2);
        callPutChar(ch);
-       GoTo(screen_lines-1,screen_columns-2);
-       InsStr(newscr->_line[screen_lines-1].text+screen_columns-2,1);
+       GoTo(screen_lines - 1, screen_columns - 2);
+       InsStr(newscr->_line[screen_lines - 1].text + screen_columns - 2, 1);
     }
 }
 
-static void wrap_cursor(void)
+static void
+wrap_cursor(void)
 {
-    if (eat_newline_glitch)
-    {
+    if (eat_newline_glitch) {
        /*
         * xenl can manifest two different ways.  The vt100
         * way is that, when you'd expect the cursor to wrap,
@@ -326,23 +325,20 @@ static void wrap_cursor(void)
         */
        SP->_curscol = -1;
        SP->_cursrow = -1;
-    }
-    else if (auto_right_margin)
-    {
+    } else if (auto_right_margin) {
        SP->_curscol = 0;
        SP->_cursrow++;
-    }
-    else
-    {
+    } else {
        SP->_curscol--;
     }
     position_check(SP->_cursrow, SP->_curscol, "wrap_cursor");
 }
 
-static inline void PutChar(chtype const ch)
+static inline void
+PutChar(chtype const ch)
 /* insert character, handling automargin stuff */
 {
-    if (SP->_cursrow == screen_lines-1 && SP->_curscol == screen_columns-1)
+    if (SP->_cursrow == screen_lines - 1 && SP->_curscol == screen_columns - 1)
        PutCharLR(ch);
     else
        PutAttrChar(ch);
@@ -353,6 +349,28 @@ static inline void PutChar(chtype const ch)
     position_check(SP->_cursrow, SP->_curscol, "PutChar");
 }
 
+/*
+ * 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.
+ */
+static inline bool
+can_clear_with(chtype ch)
+{
+    if (!back_color_erase && SP->_coloron) {
+       if (ch & A_COLOR)
+           return FALSE;
+#ifdef NCURSES_EXT_FUNCS
+       if (!SP->_default_color)
+           return FALSE;
+       if (SP->_default_fg != C_MASK || SP->_default_bg != C_MASK)
+           return FALSE;
+#endif
+    }
+    return ((ch & ~(NONBLANK_ATTR | A_COLOR)) == BLANK);
+}
+
 /*
  * Issue a given span of characters from an array.
  * Must be functionally equivalent to:
@@ -365,26 +383,23 @@ static inline void PutChar(chtype const ch)
  *
  * This code is optimized using ech and rep.
  */
-static int EmitRange(const chtype *ntext, int num)
+static int
+EmitRange(const chtype * ntext, int num)
 {
-    int        i;
+    int i;
 
-    if (erase_chars || repeat_char)
-    {
-       while (num > 0)
-       {
-           int runcount;
+    if (erase_chars || repeat_char) {
+       while (num > 0) {
+           int runcount;
            chtype ntext0;
 
-           while (num>1 && ntext[0]!=ntext[1])
-           {
+           while (num > 1 && ntext[0] != ntext[1]) {
                PutChar(ntext[0]);
                ntext++;
                num--;
            }
            ntext0 = ntext[0];
-           if (num==1)
-           {
+           if (num == 1) {
                PutChar(ntext0);
                return 0;
            }
@@ -395,16 +410,15 @@ static int EmitRange(const chtype *ntext, int num)
 
            /*
             * The cost expression in the middle isn't exactly right.
-            * _cup_cost is an upper bound on the cost for moving to the
+            * _cup_ch_cost is an upper bound on the cost for moving to the
             * end of the erased area, but not the cost itself (which we
             * can't compute without emitting the move).  This may result
             * in erase_chars not getting used in some situations for
             * which it would be marginally advantageous.
             */
            if (erase_chars
-               && runcount > SP->_ech_cost + SP->_cup_cost
-               && can_clear_with(ntext0))
-           {
+               && runcount > SP->_ech_cost + SP->_cup_ch_cost
+               && can_clear_with(ntext0)) {
                UpdateAttrs(ntext0);
                putp(tparm(erase_chars, runcount));
 
@@ -417,9 +431,7 @@ static int EmitRange(const chtype *ntext, int num)
                    GoTo(SP->_cursrow, SP->_curscol + runcount);
                else
                    return 1;   /* cursor stays in the middle */
-           }
-           else if (repeat_char && runcount > SP->_rep_cost)
-           {
+           } else if (repeat_char && runcount > SP->_rep_cost) {
                bool wrap_possible = (SP->_curscol + runcount >= screen_columns);
                int rep_count = runcount;
 
@@ -432,9 +444,7 @@ static int EmitRange(const chtype *ntext, int num)
 
                if (wrap_possible)
                    PutChar(ntext0);
-           }
-           else
-           {
+           } else {
                for (i = 0; i < runcount; i++)
                    PutChar(ntext[i]);
            }
@@ -457,345 +467,333 @@ static int EmitRange(const chtype *ntext, int num)
  *
  * Returns: same as EmitRange
  */
-static int PutRange(
-       const chtype *otext,
-       const chtype *ntext,
-       int row,
-       int first, int last)
+static int
+PutRange(
+    const chtype * otext,
+    const chtype * ntext,
+    int row,
+    int first, int last)
 {
-       int j, run;
-       int cost = min(SP->_cup_ch_cost, SP->_hpa_ch_cost);
-
-       TR(TRACE_CHARPUT, ("PutRange(%p, %p, %d, %d, %d)",
-                        otext, ntext, row, first, last));
-
-       if (otext != ntext
-        && (last-first+1) > cost) {
-               for (j = first, run = 0; j <= last; j++) {
-                       if (otext[j] == ntext[j]) {
-                               run++;
-                       } else {
-                               if (run > cost) {
-                                       int before_run = (j - run);
-                                       EmitRange(ntext+first, before_run-first);
-                                       GoTo(row, first = j);
-                               }
-                               run = 0;
-                       }
+    int j, run;
+
+    TR(TRACE_CHARPUT, ("PutRange(%p, %p, %d, %d, %d)",
+           otext, ntext, row, first, last));
+
+    if (otext != ntext
+       && (last - first + 1) > SP->_inline_cost) {
+       for (j = first, run = 0; j <= last; j++) {
+           if (otext[j] == ntext[j]) {
+               run++;
+           } else {
+               if (run > SP->_inline_cost) {
+                   int before_run = (j - run);
+                   EmitRange(ntext + first, before_run - first);
+                   GoTo(row, first = j);
                }
+               run = 0;
+           }
        }
-       return EmitRange(ntext + first, last-first+1);
+    }
+    return EmitRange(ntext + first, last - first + 1);
 }
 
 #if CC_HAS_INLINE_FUNCS
-static void callPutChar(chtype const ch)
+static void
+callPutChar(chtype const ch)
 {
-       PutChar(ch);
+    PutChar(ch);
 }
 #endif
 
+/* leave unbracketed here so 'indent' works */
 #define MARK_NOCHANGE(win,row) \
-       { \
                win->_line[row].firstchar = _NOCHANGE; \
                win->_line[row].lastchar = _NOCHANGE; \
-               if_USE_SCROLL_HINTS(win->_line[row].oldindex = row); \
-       }
+               if_USE_SCROLL_HINTS(win->_line[row].oldindex = row)
 
-int doupdate(void)
+int
+doupdate(void)
 {
-int    i;
-int    nonempty;
+    int i;
+    int nonempty;
 #if USE_TRACE_TIMES
-struct tms before, after;
+    struct tms before, after;
 #endif /* USE_TRACE_TIMES */
 
-       T((T_CALLED("doupdate()")));
+    T((T_CALLED("doupdate()")));
 
 #ifdef TRACE
-       if (_nc_tracing & TRACE_UPDATE)
-       {
-           if (curscr->_clear)
-               _tracef("curscr is clear");
-           else
-               _tracedump("curscr", curscr);
-           _tracedump("newscr", newscr);
-       }
+    if (_nc_tracing & TRACE_UPDATE) {
+       if (curscr->_clear)
+           _tracef("curscr is clear");
+       else
+           _tracedump("curscr", curscr);
+       _tracedump("newscr", newscr);
+    }
 #endif /* TRACE */
 
-       _nc_signal_handler(FALSE);
+    _nc_signal_handler(FALSE);
 
-       if (SP->_fifohold)
-               SP->_fifohold--;
+    if (SP->_fifohold)
+       SP->_fifohold--;
 
 #if USE_SIZECHANGE
-       if (SP->_endwin || SP->_sig_winch)
-       {
-               /*
-                * This is a transparent extension:  XSI does not address it,
-                * and applications need not know that ncurses can do it.
-                *
-                * Check if the terminal size has changed while curses was off
-                * (this can happen in an xterm, for example), and resize the
-                * ncurses data structures accordingly.
-                */
-               _nc_update_screensize();
-       }
+    if (SP->_endwin || SP->_sig_winch) {
+       /*
+        * This is a transparent extension:  XSI does not address it,
+        * and applications need not know that ncurses can do it.
+        *
+        * Check if the terminal size has changed while curses was off
+        * (this can happen in an xterm, for example), and resize the
+        * ncurses data structures accordingly.
+        */
+       _nc_update_screensize();
+    }
 #endif
 
-       if (SP->_endwin) {
+    if (SP->_endwin) {
 
-               T(("coming back from shell mode"));
-               reset_prog_mode();
+       T(("coming back from shell mode"));
+       reset_prog_mode();
 
-               _nc_mvcur_resume();
-               _nc_screen_resume();
-               SP->_mouse_resume(SP);
-
-               SP->_endwin = FALSE;
-       }
+       _nc_mvcur_resume();
+       _nc_screen_resume();
+       SP->_mouse_resume(SP);
 
+       SP->_endwin = FALSE;
+    }
 #if USE_TRACE_TIMES
-       /* zero the metering machinery */
-       _nc_outchars = 0;
-       (void) times(&before);
+    /* zero the metering machinery */
+    _nc_outchars = 0;
+    (void) times(&before);
 #endif /* USE_TRACE_TIMES */
 
-       /*
-        * This is the support for magic-cookie terminals.  The
-        * theory: we scan the virtual screen looking for attribute
-        * turnons.  Where we find one, check to make sure it's
-        * realizable by seeing if the required number of
-        * un-attributed blanks are present before and after the
-        * attributed range; try to shift the range boundaries over
-        * blanks (not changing the screen display) so this becomes
-        * true.  If it is, shift the beginning attribute change
-        * appropriately (the end one, if we've gotten this far, is
-        * guaranteed room for its cookie). If not, nuke the added
-        * attributes out of the span.
-        */
+    /*
+     * This is the support for magic-cookie terminals.  The
+     * theory: we scan the virtual screen looking for attribute
+     * turnons.  Where we find one, check to make sure it's
+     * realizable by seeing if the required number of
+     * un-attributed blanks are present before and after the
+     * attributed range; try to shift the range boundaries over
+     * blanks (not changing the screen display) so this becomes
+     * true.  If it is, shift the beginning attribute change
+     * appropriately (the end one, if we've gotten this far, is
+     * guaranteed room for its cookie). If not, nuke the added
+     * attributes out of the span.
+     */
 #if USE_XMC_SUPPORT
-       if (magic_cookie_glitch > 0) {
-           int j, k;
-           attr_t rattr = A_NORMAL;
-
-           for (i = 0; i < screen_lines; i++)
-               for (j = 0; j < screen_columns; j++)
-               {
-                   bool failed = FALSE;
-                   chtype turnon = AttrOf(newscr->_line[i].text[j]) & ~rattr;
-
-                   /* is an attribute turned on here? */
-                   if (turnon == 0) {
-                       rattr = AttrOf(newscr->_line[i].text[j]);
-                       continue;
-                   }
+    if (magic_cookie_glitch > 0) {
+       int j, k;
+       attr_t rattr = A_NORMAL;
 
-                   T(("At (%d, %d): from %s...", i, j, _traceattr(rattr)));
-                   T(("...to %s",_traceattr(turnon)));
+       for (i = 0; i < screen_lines; i++) {
+           for (j = 0; j < screen_columns; j++) {
+               bool failed = FALSE;
+               chtype turnon = AttrOf(newscr->_line[i].text[j]) & ~rattr;
 
-                   /*
-                    * If the attribute change location is a blank with a
-                    * "safe" attribute, undo the attribute turnon.  This may
-                    * ensure there's enough room to set the attribute before
-                    * the first non-blank in the run.
-                    */
-#define SAFE(a)        !((a) & (chtype)~NONBLANK_ATTR)
-                   if (TextOf(newscr->_line[i].text[j])==' ' && SAFE(turnon))
-                   {
-                       newscr->_line[i].text[j] &= ~turnon;
-                       continue;
-                   }
+               /* is an attribute turned on here? */
+               if (turnon == 0) {
+                   rattr = AttrOf(newscr->_line[i].text[j]);
+                   continue;
+               }
 
-                   /* check that there's enough room at start of span */
-                   for (k = 1; k <= magic_cookie_glitch; k++)
-                       if (j-k < 0
-                               || TextOf(newscr->_line[i].text[j-k]) != ' '
-                               || !SAFE(AttrOf(newscr->_line[i].text[j-k])))
-                           failed = TRUE;
-                   if (!failed)
-                   {
-                       bool    end_onscreen = FALSE;
-                       int     m, n = j;
-
-                       /* find end of span, if it's onscreen */
-                       for (m = i; m < screen_lines; m++)
-                       {
-                           for ( ; n < screen_columns; n++)
-                           {
-                               if (AttrOf(newscr->_line[m].text[n]) == rattr)
-                               {
-                                   end_onscreen = TRUE;
-                                   T(("Range attributed with %s ends at (%d, %d)",
-                                      _traceattr(turnon),m,n));
-                                   goto foundit;
-                               }
-                           }
-                           n = 0;
-                       }
-                       T(("Range attributed with %s ends offscreen",
-                           _traceattr(turnon)));
-                   foundit:;
-
-                       if (end_onscreen)
-                       {
-                           chtype      *lastline = newscr->_line[m].text;
-
-                           /*
-                            * If there are safely-attributed blanks at the
-                            * end of the range, shorten the range.  This will
-                            * help ensure that there is enough room at end
-                            * of span.
-                            */
-                           while (n >= 0
-                                  && TextOf(lastline[n]) == ' '
-                                  && SAFE(AttrOf(lastline[n])))
-                               lastline[n--] &= ~turnon;
-
-                           /* check that there's enough room at end of span */
-                           for (k = 1; k <= magic_cookie_glitch; k++)
-                               if (n + k >= screen_columns
-                                       || TextOf(lastline[n + k]) != ' '
-                                       || !SAFE(AttrOf(lastline[n+k])))
-                                   failed = TRUE;
-                       }
-                   }
+               T(("At (%d, %d): from %s...", i, j, _traceattr(rattr)));
+               T(("...to %s", _traceattr(turnon)));
+
+               /*
+                * If the attribute change location is a blank with a
+                * "safe" attribute, undo the attribute turnon.  This may
+                * ensure there's enough room to set the attribute before
+                * the first non-blank in the run.
+                */
+#define SAFE(a)        (!((a) & (chtype)~NONBLANK_ATTR))
+               if (TextOf(newscr->_line[i].text[j]) == ' ' && SAFE(turnon)) {
+                   newscr->_line[i].text[j] &= ~turnon;
+                   continue;
+               }
 
-                   if (failed)
-                   {
-                       int p, q = j;
-
-                       T(("Clearing %s beginning at (%d, %d)",
-                                               _traceattr(turnon), i, j));
-
-                       /* turn off new attributes over span */
-                       for (p = i; p < screen_lines; p++)
-                       {
-                           for ( ; q < screen_columns; q++)
-                           {
-                               if (AttrOf(newscr->_line[p].text[q]) == rattr)
-                                   goto foundend;
-                               newscr->_line[p].text[q] &= ~turnon;
+               /* check that there's enough room at start of span */
+               for (k = 1; k <= magic_cookie_glitch; k++) {
+                   if (j - k < 0
+                       || TextOf(newscr->_line[i].text[j - k]) != ' '
+                       || !SAFE(AttrOf(newscr->_line[i].text[j - k])))
+                       failed = TRUE;
+               }
+               if (!failed) {
+                   bool end_onscreen = FALSE;
+                   int m, n = j;
+
+                   /* find end of span, if it's onscreen */
+                   for (m = i; m < screen_lines; m++) {
+                       for (; n < screen_columns; n++) {
+                           if (AttrOf(newscr->_line[m].text[n]) == rattr) {
+                               end_onscreen = TRUE;
+                               T(("Range attributed with %s ends at (%d, %d)",
+                                       _traceattr(turnon), m, n));
+                               goto foundit;
                            }
-                           q = 0;
                        }
-                   foundend:;
+                       n = 0;
                    }
-                   else
-                   {
-                       T(("Cookie space for %s found before (%d, %d)",
-                                               _traceattr(turnon), i, j));
+                   T(("Range attributed with %s ends offscreen",
+                           _traceattr(turnon)));
+                 foundit:;
+
+                   if (end_onscreen) {
+                       chtype *lastline = newscr->_line[m].text;
 
                        /*
-                        * back up the start of range so there's room
-                        * for cookies before the first nonblank character
+                        * If there are safely-attributed blanks at the
+                        * end of the range, shorten the range.  This will
+                        * help ensure that there is enough room at end
+                        * of span.
                         */
+                       while (n >= 0
+                           && TextOf(lastline[n]) == ' '
+                           && SAFE(AttrOf(lastline[n])))
+                           lastline[n--] &= ~turnon;
+
+                       /* check that there's enough room at end of span */
                        for (k = 1; k <= magic_cookie_glitch; k++)
-                           newscr->_line[i].text[j-k] |= turnon;
+                           if (n + k >= screen_columns
+                               || TextOf(lastline[n + k]) != ' '
+                               || !SAFE(AttrOf(lastline[n + k])))
+                               failed = TRUE;
                    }
+               }
 
-                   rattr = AttrOf(newscr->_line[i].text[j]);
+               if (failed) {
+                   int p, q = j;
+
+                   T(("Clearing %s beginning at (%d, %d)",
+                           _traceattr(turnon), i, j));
+
+                   /* turn off new attributes over span */
+                   for (p = i; p < screen_lines; p++) {
+                       for (; q < screen_columns; q++) {
+                           if (AttrOf(newscr->_line[p].text[q]) == rattr)
+                               goto foundend;
+                           newscr->_line[p].text[q] &= ~turnon;
+                       }
+                       q = 0;
+                   }
+                 foundend:;
+               } else {
+                   T(("Cookie space for %s found before (%d, %d)",
+                           _traceattr(turnon), i, j));
+
+                   /*
+                    * back up the start of range so there's room
+                    * for cookies before the first nonblank character
+                    */
+                   for (k = 1; k <= magic_cookie_glitch; k++)
+                       newscr->_line[i].text[j - k] |= turnon;
                }
 
-#ifdef TRACE
-           /* show altered highlights after magic-cookie check */
-           if (_nc_tracing & TRACE_UPDATE)
-           {
-               _tracef("After magic-cookie check...");
-               _tracedump("newscr", newscr);
+               rattr = AttrOf(newscr->_line[i].text[j]);
            }
-#endif /* TRACE */
        }
-#endif /* USE_XMC_SUPPORT */
-
-       nonempty = 0;
-       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 {
-               int changedlines = CHECK_INTERVAL;
 
-               if(check_pending())
-                   goto cleanup;
+#ifdef TRACE
+       /* show altered highlights after magic-cookie check */
+       if (_nc_tracing & TRACE_UPDATE) {
+           _tracef("After magic-cookie check...");
+           _tracedump("newscr", newscr);
+       }
+#endif /* TRACE */
+    }
+#endif /* USE_XMC_SUPPORT */
 
-               nonempty = min(screen_lines, newscr->_maxy+1);
+    nonempty = 0;
+    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 {
+       int changedlines = CHECK_INTERVAL;
 
-               if (SP->_scrolling) {
-                       _nc_scroll_optimize();
-               }
+       if (check_pending())
+           goto cleanup;
 
-               nonempty = ClrBottom(nonempty);
+       nonempty = min(screen_lines, newscr->_maxy + 1);
 
-               T(("Transforming lines, nonempty %d", nonempty));
-               for (i = 0; i < nonempty; i++) {
-                       /*
-                        * Here is our line-breakout optimization.
-                        */
-                       if (changedlines == CHECK_INTERVAL)
-                       {
-                           if (check_pending())
-                               goto cleanup;
-                           changedlines = 0;
-                       }
+       if (SP->_scrolling) {
+           _nc_scroll_optimize();
+       }
 
-                       /*
-                        * newscr->line[i].firstchar is normally set
-                        * by wnoutrefresh.  curscr->line[i].firstchar
-                        * is normally set by _nc_scroll_window in the
-                        * vertical-movement optimization code,
-                        */
-                       if (newscr->_line[i].firstchar != _NOCHANGE
-                        || curscr->_line[i].firstchar != _NOCHANGE)
-                       {
-                               TransformLine(i);
-                               changedlines++;
-                       }
+       nonempty = ClrBottom(nonempty);
 
-                       /* mark line changed successfully */
-                       if (i <= newscr->_maxy)
-                               MARK_NOCHANGE(newscr,i)
-                       if (i <= curscr->_maxy)
-                               MARK_NOCHANGE(curscr,i)
-               }
+       T(("Transforming lines, nonempty %d", nonempty));
+       for (i = 0; i < nonempty; i++) {
+           /*
+            * Here is our line-breakout optimization.
+            */
+           if (changedlines == CHECK_INTERVAL) {
+               if (check_pending())
+                   goto cleanup;
+               changedlines = 0;
+           }
+
+           /*
+            * newscr->line[i].firstchar is normally set
+            * by wnoutrefresh.  curscr->line[i].firstchar
+            * is normally set by _nc_scroll_window in the
+            * vertical-movement optimization code,
+            */
+           if (newscr->_line[i].firstchar != _NOCHANGE
+               || curscr->_line[i].firstchar != _NOCHANGE) {
+               TransformLine(i);
+               changedlines++;
+           }
+
+           /* mark line changed successfully */
+           if (i <= newscr->_maxy) {
+               MARK_NOCHANGE(newscr, i)
+           }
+           if (i <= curscr->_maxy) {
+               MARK_NOCHANGE(curscr, i)
+           }
        }
+    }
 
-       /* put everything back in sync */
-       for (i = nonempty; i <= newscr->_maxy; i++)
-               MARK_NOCHANGE(newscr,i)
-       for (i = nonempty; i <= curscr->_maxy; i++)
-               MARK_NOCHANGE(curscr,i)
+    /* put everything back in sync */
+    for (i = nonempty; i <= newscr->_maxy; i++) {
+       MARK_NOCHANGE(newscr, i)
+    }
+    for (i = nonempty; i <= curscr->_maxy; i++) {
+       MARK_NOCHANGE(curscr, i)
+    }
 
-       if (!newscr->_leaveok)
-       {
-               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:
-       /*
-        * Keep the physical screen in normal mode in case we get other
-        * processes writing to the screen.
-        */
-       UpdateAttrs(A_NORMAL);
+  cleanup:
+    /*
+     * Keep the physical screen in normal mode in case we get other
+     * processes writing to the screen.
+     */
+    UpdateAttrs(A_NORMAL);
 
-       _nc_flush();
-       curscr->_attrs = newscr->_attrs;
-/*     curscr->_bkgd  = newscr->_bkgd; */
+    _nc_flush();
+    curscr->_attrs = newscr->_attrs;
 
 #if USE_TRACE_TIMES
-       (void) times(&after);
-       TR(TRACE_TIMES, ("Update cost: %ld chars, %ld clocks system time, %ld clocks user time",
+    (void) times(&after);
+    TR(TRACE_TIMES,
+       ("Update cost: %ld chars, %ld clocks system time, %ld clocks user time",
            _nc_outchars,
-           after.tms_stime-before.tms_stime,
-           after.tms_utime-before.tms_utime));
+           after.tms_stime - before.tms_stime,
+           after.tms_utime - before.tms_utime));
 #endif /* USE_TRACE_TIMES */
 
-       _nc_signal_handler(TRUE);
+    _nc_signal_handler(TRUE);
 
-       returnCode(OK);
+    returnCode(OK);
 }
 
 /*
@@ -811,12 +809,13 @@ struct tms before, after;
 #define BCE_ATTRS (A_NORMAL|A_COLOR)
 #define BCE_BKGD(win) (((win) == curscr ? stdscr : (win))->_bkgd)
 
-static inline chtype ClrBlank (WINDOW *win)
+static inline chtype
+ClrBlank(WINDOW *win)
 {
-chtype blank = BLANK;
-       if (back_color_erase)
-               blank |= (BCE_BKGD(win) & BCE_ATTRS);
-       return blank;
+    chtype blank = BLANK;
+    if (back_color_erase)
+       blank |= (BCE_BKGD(win) & BCE_ATTRS);
+    return blank;
 }
 
 /*
@@ -826,22 +825,23 @@ chtype    blank = BLANK;
 **
 */
 
-static void ClrUpdate(void)
+static void
+ClrUpdate(void)
 {
-       int i;
-       chtype blank = ClrBlank(stdscr);
-       int nonempty = min(screen_lines, newscr->_maxy+1);
+    int i;
+    chtype blank = ClrBlank(stdscr);
+    int nonempty = min(screen_lines, newscr->_maxy + 1);
 
-       T(("ClrUpdate() called"));
+    T(("ClrUpdate() called"));
 
-       ClearScreen(blank);
+    ClearScreen(blank);
 
-       T(("updating screen from scratch"));
+    T(("updating screen from scratch"));
 
-       nonempty = ClrBottom(nonempty);
+    nonempty = ClrBottom(nonempty);
 
-       for (i = 0; i < nonempty; i++)
-               TransformLine(i);
+    for (i = 0; i < nonempty; i++)
+       TransformLine(i);
 }
 
 /*
@@ -850,35 +850,37 @@ static void ClrUpdate(void)
 **     Clear to end of current line, starting at the cursor position
 */
 
-static void ClrToEOL(chtype blank)
+static void
+ClrToEOL(chtype blank, bool needclear)
 {
-int    j;
-bool   needclear = FALSE;
+    int j;
 
-       for (j = SP->_curscol; j < screen_columns; j++)
-       {
+    if (curscr != 0
+       && SP->_cursrow >= 0
+       && SP->_curscol >= 0) {
+       for (j = SP->_curscol; j < screen_columns; j++) {
            chtype *cp = &(curscr->_line[SP->_cursrow].text[j]);
 
-           if (*cp != blank)
-           {
+           if (*cp != blank) {
                *cp = blank;
                needclear = TRUE;
            }
        }
+    } else {
+       needclear = TRUE;
+    }
 
-       if (needclear)
-       {
-           UpdateAttrs(blank);
-           TPUTS_TRACE("clr_eol");
-           if (SP->_el_cost > (screen_columns - SP->_curscol))
-           {
-               int count = (screen_columns - SP->_curscol);
-               while (count-- > 0)
-                       PutChar(blank);
-           }
-           else
-               putp(clr_eol);
+    if (needclear) {
+       UpdateAttrs(blank);
+       TPUTS_TRACE("clr_eol");
+       if (SP->_el_cost > (screen_columns - SP->_curscol)) {
+           int count = (screen_columns - SP->_curscol);
+           while (count-- > 0)
+               PutChar(blank);
+       } else {
+           putp(clr_eol);
        }
+    }
 }
 
 /*
@@ -887,23 +889,27 @@ bool      needclear = FALSE;
 **     Clear to end of screen, starting at the cursor position
 */
 
-static void ClrToEOS(chtype blank)
+static void
+ClrToEOS(chtype blank)
 {
-int row, col;
+    int row, col;
+
+    row = SP->_cursrow;
+    col = SP->_curscol;
 
+    {
        UpdateAttrs(blank);
        TPUTS_TRACE("clr_eos");
-       row = SP->_cursrow;
-       tputs(clr_eos, screen_lines-row, _nc_outch);
+       tputs(clr_eos, screen_lines - row, _nc_outch);
+    }
 
-       for (col = SP->_curscol; col < screen_columns; col++)
-               curscr->_line[row].text[col] = blank;
+    while (col < screen_columns)
+       curscr->_line[row].text[col++] = blank;
 
-       for (row++; row < screen_lines; row++)
-       {
-               for (col = 0; col < screen_columns; col++)
-                       curscr->_line[row].text[col] = blank;
-       }
+    for (row++; row < screen_lines; row++) {
+       for (col = 0; col < screen_columns; col++)
+           curscr->_line[row].text[col] = blank;
+    }
 }
 
 /*
@@ -913,57 +919,44 @@ int row, col;
  *     screen-update.  Do this by scanning backwards through the lines in the
  *     screen, checking if each is blank, and one or more are changed.
  */
-static int ClrBottom(int total)
+static int
+ClrBottom(int total)
 {
-static chtype  *tstLine;
-static size_t  lenLine;
-
-int    row, col;
-int    top    = total;
-int    last   = min(screen_columns, newscr->_maxx+1);
-size_t length = sizeof(chtype) * last;
-chtype blank  = newscr->_line[total-1].text[last-1]; /* lower right char */
-
-       if(!clr_eos || !can_clear_with(blank))
-               return total;
-
-       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;
-               }
-       }
+    int row;
+    int col;
+    int top = total;
+    int last = min(screen_columns, newscr->_maxx + 1);
+    chtype blank = ClrBlank(stdscr);
+    bool ok;
+
+    if (clr_eos && can_clear_with(blank)) {
+
+       for (row = total - 1; row >= 0; row--) {
+           for (col = 0, ok = TRUE; ok && col < last; col++) {
+               ok = (newscr->_line[row].text[col] == blank);
+           }
+           if (!ok) break;
 
-       if (tstLine != 0) {
-               for (row = total-1; row >= 0; row--) {
-                       if (memcmp(tstLine, newscr->_line[row].text, length))
-                               break;
-                       if (memcmp(tstLine, curscr->_line[row].text, length))
-                               top = row;
-               }
+           for (col = 0; ok && col < last; col++) {
+               ok = (curscr->_line[row].text[col] == blank);
+           }
+           if (!ok) top = row;
+       }
 
-               /* don't use clr_eos for just one line if clr_eol available */
-               if (top < total-1 || (top < total && !clr_eol && !clr_bol)) {
-                       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];
-                       }
-               }
+       /* don't use clr_eos for just one line if clr_eol available */
+       if (top < total - 1 || (top < total && !clr_eol && !clr_bol)) {
+           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
-       if (tstLine != 0)
-               FreeAndNull(tstLine);
-#endif
-       return total;
+    }
+    return total;
 }
 
-
 /*
 **     TransformLine(lineno)
 **
@@ -982,35 +975,69 @@ chtype    blank  = newscr->_line[total-1].text[last-1]; /* lower right char */
 **                     delete oLastChar - nLastChar spaces
 */
 
-static void TransformLine(int const lineno)
+static void
+TransformLine(int const lineno)
 {
-int    firstChar, oLastChar, nLastChar;
-chtype *newLine = newscr->_line[lineno].text;
-chtype *oldLine = curscr->_line[lineno].text;
-int    n;
-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) {
-                       if(AttrOf(newLine[firstChar]) != AttrOf(oldLine[firstChar]))
-                               attrchanged = TRUE;
-                       firstChar++;
+    int firstChar, oLastChar, nLastChar;
+    chtype *newLine = newscr->_line[lineno].text;
+    chtype *oldLine = curscr->_line[lineno].text;
+    int n;
+    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];
+
+#define ColorOf(n) ((n) & A_COLOR)
+#define unColor(n) ((n) & ALL_BUT_COLOR)
+    /*
+     * If we have colors, there is the possibility of having two color pairs
+     * that display as the same colors.  For instance, Lynx does this.  Check
+     * for this case, and update the old line with the new line's colors when
+     * they are equivalent.
+     */
+    if (SP->_coloron) {
+       chtype oldColor;
+       chtype newColor;
+       int oldPair;
+       int newPair;
+
+       for (n = 0; n < screen_columns; n++) {
+           if (newLine[n] != oldLine[n]) {
+               oldColor = ColorOf(oldLine[n]);
+               newColor = ColorOf(newLine[n]);
+               if (oldColor != newColor
+                   && unColor(oldLine[n]) == unColor(newLine[n])) {
+                   oldPair = PAIR_NUMBER(oldColor);
+                   newPair = PAIR_NUMBER(newColor);
+                   if (oldPair < COLOR_PAIRS
+                       && newPair < COLOR_PAIRS
+                       && SP->_color_pairs[oldPair] == SP->_color_pairs[newPair]) {
+                       oldLine[n] &= ~A_COLOR;
+                       oldLine[n] |= ColorOf(newLine[n]);
+                   }
                }
+           }
        }
+    }
 
+    if (ceol_standout_glitch && clr_eol) {
        firstChar = 0;
+       while (firstChar < screen_columns) {
+           if (AttrOf(newLine[firstChar]) != AttrOf(oldLine[firstChar]))
+               attrchanged = TRUE;
+           firstChar++;
+       }
+    }
 
-       if (attrchanged) {      /* we may have to disregard the whole line */
-               GoTo(lineno, firstChar);
-               ClrToEOL(ClrBlank(curscr));
-               PutRange(oldLine, newLine, lineno, 0, (screen_columns-1));
+    firstChar = 0;
+
+    if (attrchanged) {         /* we may have to disregard the whole line */
+       GoTo(lineno, firstChar);
+       ClrToEOL(ClrBlank(curscr), FALSE);
+       PutRange(oldLine, newLine, lineno, 0, (screen_columns - 1));
 #if USE_XMC_SUPPORT
 
 #define NEW(r,c) newscr->_line[r].text[c]
@@ -1028,199 +1055,194 @@ bool  attrchanged = FALSE;
         * will work properly only once, since we may overwrite a cookie in a
         * following operation.
         */
-       } else if (magic_cookie_glitch > 0) {
-               GoTo(lineno, firstChar);
-               for (n = 0; n < screen_columns; n++) {
-                       int m = n + magic_cookie_glitch;
-
-                       /* check for turn-on:
-                        * If we are writing an attributed blank, where the
-                        * previous cell is not attributed.
-                        */
-                       if (TextOf(newLine[n]) == ' '
-                        && ((n > 0
-                          && xmc_turn_on(newLine[n-1], newLine[n]))
-                         || (n == 0
-                          && lineno > 0
-                          && xmc_turn_on(NEW(lineno-1,screen_columns-1), newLine[n])))) {
-                               n = m;
-                       }
+    } else if (magic_cookie_glitch > 0) {
+       GoTo(lineno, firstChar);
+       for (n = 0; n < screen_columns; n++) {
+           int m = n + magic_cookie_glitch;
+
+           /* check for turn-on:
+            * If we are writing an attributed blank, where the
+            * previous cell is not attributed.
+            */
+           if (TextOf(newLine[n]) == ' '
+               && ((n > 0
+                       && xmc_turn_on(newLine[n - 1], newLine[n]))
+                   || (n == 0
+                       && lineno > 0
+                       && xmc_turn_on(NEW(lineno - 1, screen_columns - 1),
+                           newLine[n])))) {
+               n = m;
+           }
 
-                       PutChar(newLine[n]);
+           PutChar(newLine[n]);
 
-                       /* check for turn-off:
-                        * If we are writing an attributed non-blank, where the
-                        * next cell is blank, and not attributed.
-                        */
-                       if (TextOf(newLine[n]) != ' '
-                        && ((n+1 < screen_columns
-                          && xmc_turn_off(newLine[n], newLine[n+1]))
-                         || (n+1 >= screen_columns
-                          && lineno+1 < screen_lines
-                          && xmc_turn_off(newLine[n], NEW(lineno+1,0))))) {
-                               n = m;
-                       }
+           /* check for turn-off:
+            * If we are writing an attributed non-blank, where the
+            * next cell is blank, and not attributed.
+            */
+           if (TextOf(newLine[n]) != ' '
+               && ((n + 1 < screen_columns
+                       && xmc_turn_off(newLine[n], newLine[n + 1]))
+                   || (n + 1 >= screen_columns
+                       && lineno + 1 < screen_lines
+                       && xmc_turn_off(newLine[n], NEW(lineno + 1, 0))))) {
+               n = m;
+           }
 
-               }
+       }
 #undef NEW
 #endif
-       } else {
-               chtype blank;
+    } else {
+       chtype blank;
+
+       /* find the first differing character */
+       while (firstChar < screen_columns &&
+           newLine[firstChar] == oldLine[firstChar])
+           firstChar++;
+
+       /* if there wasn't one, we're done */
+       if (firstChar >= screen_columns)
+           return;
+
+       /* it may be cheap to clear leading whitespace with clr_bol */
+       if (clr_bol && can_clear_with(blank = newLine[0])) {
+           int oFirstChar, nFirstChar;
+
+           for (oFirstChar = 0; oFirstChar < screen_columns; oFirstChar++)
+               if (oldLine[oFirstChar] != blank)
+                   break;
+           for (nFirstChar = 0; nFirstChar < screen_columns; nFirstChar++)
+               if (newLine[nFirstChar] != blank)
+                   break;
+
+           if (nFirstChar > oFirstChar + SP->_el1_cost) {
+               if (nFirstChar >= screen_columns && SP->_el_cost <= SP->_el1_cost) {
+                   GoTo(lineno, 0);
+                   UpdateAttrs(blank);
+                   TPUTS_TRACE("clr_eol");
+                   putp(clr_eol);
+               } else {
+                   GoTo(lineno, nFirstChar - 1);
+                   UpdateAttrs(blank);
+                   TPUTS_TRACE("clr_bol");
+                   putp(clr_bol);
+               }
 
-               /* find the first differing character */
-               while (firstChar < screen_columns  &&
-                               newLine[firstChar] == oldLine[firstChar])
-                       firstChar++;
+               while (firstChar < nFirstChar)
+                   oldLine[firstChar++] = blank;
 
-               /* if there wasn't one, we're done */
                if (firstChar >= screen_columns)
-                       return;
-
-               /* it may be cheap to clear leading whitespace with clr_bol */
-               if (clr_bol && can_clear_with(blank=newLine[0]))
-               {
-                       int oFirstChar, nFirstChar;
-
-                       for (oFirstChar = 0; oFirstChar < screen_columns; oFirstChar++)
-                               if (oldLine[oFirstChar] != blank)
-                                       break;
-                       for (nFirstChar = 0; nFirstChar < screen_columns; nFirstChar++)
-                               if (newLine[nFirstChar] != blank)
-                                       break;
-
-                       if (nFirstChar > oFirstChar + SP->_el1_cost)
-                       {
-                           if (nFirstChar >= screen_columns && SP->_el_cost <= SP->_el1_cost)
-                           {
-                               GoTo(lineno, 0);
-                               UpdateAttrs(blank);
-                               TPUTS_TRACE("clr_eol");
-                               putp(clr_eol);
-                           }
-                           else
-                           {
-                               GoTo(lineno, nFirstChar - 1);
-                               UpdateAttrs(blank);
-                               TPUTS_TRACE("clr_bol");
-                               putp(clr_bol);
-                           }
-
-                           while (firstChar < nFirstChar)
-                               oldLine[firstChar++] = blank;
-
-                           if (firstChar >= screen_columns)
-                               return;
-                       }
-               }
+                   return;
+           }
+       }
 
-               blank = newLine[screen_columns-1];
+       blank = newLine[screen_columns - 1];
 
-               if(!can_clear_with(blank))
-               {
-                       /* find the last differing character */
-                       nLastChar = screen_columns - 1;
+       if (!can_clear_with(blank)) {
+           /* find the last differing character */
+           nLastChar = screen_columns - 1;
 
-                       while (nLastChar > firstChar
-                        && newLine[nLastChar] == oldLine[nLastChar])
-                               nLastChar--;
+           while (nLastChar > firstChar
+               && newLine[nLastChar] == oldLine[nLastChar])
+               nLastChar--;
 
-                       if (nLastChar >= firstChar) {
-                               GoTo(lineno, firstChar);
-                               PutRange(oldLine, newLine, lineno, firstChar, nLastChar);
-                               memcpy( oldLine + firstChar,
-                                       newLine + firstChar,
-                                       (nLastChar - firstChar + 1) * sizeof(chtype));
-                       }
-                       return;
-               }
+           if (nLastChar >= firstChar) {
+               GoTo(lineno, firstChar);
+               PutRange(oldLine, newLine, lineno, firstChar, nLastChar);
+               memcpy(oldLine + firstChar,
+                   newLine + firstChar,
+                   (nLastChar - firstChar + 1) * sizeof(chtype));
+           }
+           return;
+       }
 
-               /* find last non-blank character on old line */
-               oLastChar = screen_columns - 1;
-               while (oLastChar > firstChar  &&  oldLine[oLastChar] == blank)
-                       oLastChar--;
-
-               /* find last non-blank character on new line */
-               nLastChar = screen_columns - 1;
-               while (nLastChar > firstChar  &&  newLine[nLastChar] == blank)
-                       nLastChar--;
-
-               if((nLastChar == firstChar)
-                && (SP->_el_cost < (oLastChar - nLastChar))) {
-                       GoTo(lineno, firstChar);
-                       if(newLine[firstChar] != blank )
-                               PutChar(newLine[firstChar]);
-                       ClrToEOL(blank);
-               } 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))
-                                   GoTo(lineno, nLastChar+1);
-                               ClrToEOL(blank);
-                       } else {
-                               n = max( nLastChar , oLastChar );
-                               PutRange(oldLine, newLine, lineno, firstChar, n);
-                       }
+       /* find last non-blank character on old line */
+       oLastChar = screen_columns - 1;
+       while (oLastChar > firstChar && oldLine[oLastChar] == blank)
+           oLastChar--;
+
+       /* find last non-blank character on new line */
+       nLastChar = screen_columns - 1;
+       while (nLastChar > firstChar && newLine[nLastChar] == blank)
+           nLastChar--;
+
+       if ((nLastChar == firstChar)
+           && (SP->_el_cost < (oLastChar - nLastChar))) {
+           GoTo(lineno, firstChar);
+           if (newLine[firstChar] != blank)
+               PutChar(newLine[firstChar]);
+           ClrToEOL(blank, FALSE);
+       } 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))
+                   GoTo(lineno, nLastChar + 1);
+               ClrToEOL(blank, FALSE);
+           } else {
+               n = max(nLastChar, oLastChar);
+               PutRange(oldLine, newLine, lineno, firstChar, n);
+           }
+       } else {
+           int nLastNonblank = nLastChar;
+           int oLastNonblank = oLastChar;
+
+           /* find the last characters that really differ */
+           while (newLine[nLastChar] == oldLine[oLastChar]) {
+               if (nLastChar != 0
+                   && oLastChar != 0) {
+                   nLastChar--;
+                   oLastChar--;
                } else {
-                       int nLastNonblank = nLastChar;
-                       int oLastNonblank = oLastChar;
-
-                       /* find the last characters that really differ */
-                       while (newLine[nLastChar] == oldLine[oLastChar]) {
-                               if (nLastChar != 0
-                                && oLastChar != 0) {
-                                       nLastChar--;
-                                       oLastChar--;
-                                } else {
-                                       break;
-                                }
-                       }
+                   break;
+               }
+           }
 
-                       n = min(oLastChar, nLastChar);
-                       if (n >= firstChar) {
-                               GoTo(lineno, firstChar);
-                               PutRange(oldLine, newLine, lineno, firstChar, n);
-                       }
+           n = min(oLastChar, nLastChar);
+           if (n >= firstChar) {
+               GoTo(lineno, firstChar);
+               PutRange(oldLine, newLine, lineno, firstChar, n);
+           }
 
-                       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);
-                               } else {
-                                       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,
-                                                       n+1, nLastNonblank))
-                                               GoTo(lineno, nLastNonblank+1);
-                                       ClrToEOL(blank);
-                               } else {
-                                       /*
-                                        * The delete-char sequence will
-                                        * effectively shift in blanks from the
-                                        * right margin of the screen.  Ensure
-                                        * that they are the right color by
-                                        * setting the video attributes from
-                                        * the last character on the row.
-                                        */
-                                       UpdateAttrs(blank);
-                                       DelChar(oLastChar - nLastChar);
-                               }
-                       }
+           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);
+               } else {
+                   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,
+                           n + 1, nLastNonblank))
+                       GoTo(lineno, nLastNonblank + 1);
+                   ClrToEOL(blank, FALSE);
+               } else {
+                   /*
+                    * The delete-char sequence will
+                    * effectively shift in blanks from the
+                    * right margin of the screen.  Ensure
+                    * that they are the right color by
+                    * setting the video attributes from
+                    * the last character on the row.
+                    */
+                   UpdateAttrs(blank);
+                   DelChar(oLastChar - nLastChar);
                }
+           }
        }
+    }
 
-       /* update the code's internal representation */
-       if (screen_columns > firstChar)
-               memcpy( oldLine + firstChar,
-                       newLine + firstChar,
-                       (screen_columns - firstChar) * sizeof(chtype));
+    /* update the code's internal representation */
+    if (screen_columns > firstChar)
+       memcpy(oldLine + firstChar,
+           newLine + firstChar,
+           (screen_columns - firstChar) * sizeof(chtype));
 }
 
 /*
@@ -1230,46 +1252,65 @@ bool    attrchanged = FALSE;
 **
 */
 
-static void ClearScreen(chtype blank)
+static void
+ClearScreen(chtype blank)
 {
-       int     i, j;
+    int i, j;
+    bool fast_clear = (clear_screen || clr_eos || clr_eol);
+
+    T(("ClearScreen() called"));
 
-       T(("ClearScreen() called"));
+#ifdef NCURSES_EXT_FUNCS
+    if (SP->_coloron
+       && !SP->_default_color) {
+       _nc_do_color(COLOR_PAIR(SP->_current_attr), 0, FALSE, _nc_outch);
+       if (!back_color_erase) {
+           fast_clear = FALSE;
+       }
+    }
+#endif
 
+    if (fast_clear) {
        if (clear_screen) {
-               UpdateAttrs(blank);
-               TPUTS_TRACE("clear_screen");
-               putp(clear_screen);
-               SP->_cursrow = SP->_curscol = 0;
-               position_check(SP->_cursrow, SP->_curscol, "ClearScreen");
+           UpdateAttrs(blank);
+           TPUTS_TRACE("clear_screen");
+           putp(clear_screen);
+           SP->_cursrow = SP->_curscol = 0;
+           position_check(SP->_cursrow, SP->_curscol, "ClearScreen");
        } else if (clr_eos) {
-               SP->_cursrow = SP->_curscol = -1;
-               GoTo(0,0);
+           SP->_cursrow = SP->_curscol = -1;
+           GoTo(0, 0);
 
-               UpdateAttrs(blank);
-               TPUTS_TRACE("clr_eos");
-               putp(clr_eos);
+           UpdateAttrs(blank);
+           TPUTS_TRACE("clr_eos");
+           putp(clr_eos);
        } else if (clr_eol) {
-               SP->_cursrow = SP->_curscol = -1;
+           SP->_cursrow = SP->_curscol = -1;
 
-               for (i = 0; i < screen_lines; i++) {
-                       GoTo(i, 0);
-                       UpdateAttrs(blank);
-                       TPUTS_TRACE("clr_eol");
-                       putp(clr_eol);
-               }
-               GoTo(0,0);
-       } else {
-               T(("cannot clear screen"));
-               return;
+           UpdateAttrs(blank);
+           for (i = 0; i < screen_lines; i++) {
+               GoTo(i, 0);
+               TPUTS_TRACE("clr_eol");
+               putp(clr_eol);
+           }
+           GoTo(0, 0);
        }
-
+    } else {
+       UpdateAttrs(blank);
        for (i = 0; i < screen_lines; i++) {
-               for (j = 0; j < screen_columns; j++)
-                       curscr->_line[i].text[j] = blank;
+           GoTo(i, 0);
+           for (j = 0; j < screen_columns; j++)
+               PutChar(blank);
        }
+       GoTo(0, 0);
+    }
 
-       T(("screen cleared"));
+    for (i = 0; i < screen_lines; i++) {
+       for (j = 0; j < screen_columns; j++)
+           curscr->_line[i].text[j] = blank;
+    }
+
+    T(("screen cleared"));
 }
 
 /*
@@ -1279,51 +1320,50 @@ static void ClearScreen(chtype blank)
 **
 */
 
-static void InsStr(chtype *line, int count)
+static void
+InsStr(chtype * line, int count)
 {
-       T(("InsStr(%p,%d) called", line, count));
-
-       /* 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--;
-               }
-       } 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--;
-               }
-               TPUTS_TRACE("exit_insert_mode");
-               putp(exit_insert_mode);
-       } else {
-               while (count) {
-                       TPUTS_TRACE("insert_character");
-                       putp(insert_character);
-                       PutAttrChar(*line);
-                       if (insert_padding)
-                       {
-                               TPUTS_TRACE("insert_padding");
-                               putp(insert_padding);
-                       }
-                       line++;
-                       count--;
-               }
+    T(("InsStr(%p,%d) called", line, count));
+
+    /* 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--;
        }
-       position_check(SP->_cursrow, SP->_curscol, "InsStr");
+    } 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--;
+       }
+       TPUTS_TRACE("exit_insert_mode");
+       putp(exit_insert_mode);
+    } else {
+       while (count) {
+           TPUTS_TRACE("insert_character");
+           putp(insert_character);
+           PutAttrChar(*line);
+           if (insert_padding) {
+               TPUTS_TRACE("insert_padding");
+               putp(insert_padding);
+           }
+           line++;
+           count--;
+       }
+    }
+    position_check(SP->_cursrow, SP->_curscol, "InsStr");
 }
 
 /*
@@ -1333,20 +1373,22 @@ static void InsStr(chtype *line, int count)
 **
 */
 
-static void DelChar(int count)
+static void
+DelChar(int count)
 {
-       T(("DelChar(%d) called, position = (%d,%d)", count, newscr->_cury, newscr->_curx));
+    int n;
 
-       if (parm_dch) {
-               TPUTS_TRACE("parm_dch");
-               tputs(tparm(parm_dch, count), count, _nc_outch);
-       } else {
-               while (count--)
-               {
-                       TPUTS_TRACE("delete_character");
-                       putp(delete_character);
-               }
+    T(("DelChar(%d) called, position = (%d,%d)", count, newscr->_cury, newscr->_curx));
+
+    if (parm_dch) {
+       TPUTS_TRACE("parm_dch");
+       tputs(tparm(parm_dch, count), count, _nc_outch);
+    } else {
+       for (n = 0; n < count; n++) {
+           TPUTS_TRACE("delete_character");
+           putp(delete_character);
        }
+    }
 }
 
 /*
@@ -1355,7 +1397,8 @@ static void DelChar(int count)
 **     Emit a string without waiting for update.
 */
 
-void _nc_outstr(const char *str)
+void
+_nc_outstr(const char *str)
 {
     (void) putp(str);
     _nc_flush();
@@ -1394,149 +1437,136 @@ void _nc_outstr(const char *str)
  */
 
 /* Try to scroll up assuming given csr (miny, maxy). Returns ERR on failure */
-static int scroll_csr_forward(int n, int top, int bot, int miny, int maxy, chtype blank)
+static int
+scroll_csr_forward(int n, int top, int bot, int miny, int maxy, chtype blank)
 {
-    int i;
+    int i, j;
 
-    if (n == 1 && scroll_forward && top == miny && bot == maxy)
-    {
+    if (n == 1 && scroll_forward && top == miny && bot == maxy) {
        GoTo(bot, 0);
        UpdateAttrs(blank);
        TPUTS_TRACE("scroll_forward");
        tputs(scroll_forward, 0, _nc_outch);
-    }
-    else if (n == 1 && delete_line && bot == maxy)
-    {
+    } else if (n == 1 && delete_line && bot == maxy) {
        GoTo(top, 0);
        UpdateAttrs(blank);
        TPUTS_TRACE("delete_line");
        tputs(delete_line, 0, _nc_outch);
-    }
-    else if (parm_index && top == miny && bot == maxy)
-    {
+    } else if (parm_index && top == miny && bot == maxy) {
        GoTo(bot, 0);
        UpdateAttrs(blank);
        TPUTS_TRACE("parm_index");
        tputs(tparm(parm_index, n, 0), n, _nc_outch);
-    }
-    else if (parm_delete_line && bot == maxy)
-    {
+    } else if (parm_delete_line && bot == maxy) {
        GoTo(top, 0);
        UpdateAttrs(blank);
        TPUTS_TRACE("parm_delete_line");
        tputs(tparm(parm_delete_line, n, 0), n, _nc_outch);
-    }
-    else if (scroll_forward && top == miny && bot == maxy)
-    {
+    } else if (scroll_forward && top == miny && bot == maxy) {
        GoTo(bot, 0);
        UpdateAttrs(blank);
-       for (i = 0; i < n; i++)
-       {
+       for (i = 0; i < n; i++) {
            TPUTS_TRACE("scroll_forward");
            tputs(scroll_forward, 0, _nc_outch);
        }
-    }
-    else if (delete_line && bot == maxy)
-    {
+    } else if (delete_line && bot == maxy) {
        GoTo(top, 0);
        UpdateAttrs(blank);
-       for (i = 0; i < n; i++)
-       {
+       for (i = 0; i < n; i++) {
            TPUTS_TRACE("delete_line");
            tputs(delete_line, 0, _nc_outch);
        }
-    }
-    else
+    } else
        return ERR;
 
+#ifdef NCURSES_EXT_FUNCS
+    if (FILL_BCE()) {
+       for (i = 0; i < n; i++) {
+           GoTo(bot - i, 0);
+           for (j = 0; j < screen_columns; j++)
+               PutChar(blank);
+       }
+    }
+#endif
     return OK;
 }
 
 /* Try to scroll down assuming given csr (miny, maxy). Returns ERR on failure */
 /* n > 0 */
-static int scroll_csr_backward(int n, int top, int bot, int miny, int maxy, chtype blank)
+static int
+scroll_csr_backward(int n, int top, int bot, int miny, int maxy, chtype blank)
 {
-    int i;
+    int i, j;
 
-    if (n == 1 && scroll_reverse && top == miny && bot == maxy)
-    {
+    if (n == 1 && scroll_reverse && top == miny && bot == maxy) {
        GoTo(top, 0);
        UpdateAttrs(blank);
        TPUTS_TRACE("scroll_reverse");
        tputs(scroll_reverse, 0, _nc_outch);
-    }
-    else if (n == 1 && insert_line && bot == maxy)
-    {
+    } else if (n == 1 && insert_line && bot == maxy) {
        GoTo(top, 0);
        UpdateAttrs(blank);
        TPUTS_TRACE("insert_line");
        tputs(insert_line, 0, _nc_outch);
-    }
-    else if (parm_rindex && top == miny && bot == maxy)
-    {
+    } else if (parm_rindex && top == miny && bot == maxy) {
        GoTo(top, 0);
        UpdateAttrs(blank);
        TPUTS_TRACE("parm_rindex");
        tputs(tparm(parm_rindex, n, 0), n, _nc_outch);
-    }
-    else if (parm_insert_line && bot == maxy)
-    {
+    } else if (parm_insert_line && bot == maxy) {
        GoTo(top, 0);
        UpdateAttrs(blank);
        TPUTS_TRACE("parm_insert_line");
        tputs(tparm(parm_insert_line, n, 0), n, _nc_outch);
-    }
-    else if (scroll_reverse && top == miny && bot == maxy)
-    {
+    } else if (scroll_reverse && top == miny && bot == maxy) {
        GoTo(top, 0);
        UpdateAttrs(blank);
-       for (i = 0; i < n; i++)
-       {
+       for (i = 0; i < n; i++) {
            TPUTS_TRACE("scroll_reverse");
            tputs(scroll_reverse, 0, _nc_outch);
        }
-    }
-    else if (insert_line && bot == maxy)
-    {
+    } else if (insert_line && bot == maxy) {
        GoTo(top, 0);
        UpdateAttrs(blank);
-       for (i = 0; i < n; i++)
-       {
+       for (i = 0; i < n; i++) {
            TPUTS_TRACE("insert_line");
            tputs(insert_line, 0, _nc_outch);
        }
-    }
-    else
+    } else
        return ERR;
 
+#ifdef NCURSES_EXT_FUNCS
+    if (FILL_BCE()) {
+       for (i = 0; i < n; i++) {
+           GoTo(top + i, 0);
+           for (j = 0; j < screen_columns; j++)
+               PutChar(blank);
+       }
+    }
+#endif
     return OK;
 }
 
 /* scroll by using delete_line at del and insert_line at ins */
 /* n > 0 */
-static int scroll_idl(int n, int del, int ins, chtype blank)
+static int
+scroll_idl(int n, int del, int ins, chtype blank)
 {
     int i;
 
-    if(!((parm_delete_line || delete_line) && (parm_insert_line || insert_line)))
+    if (!((parm_delete_line || delete_line) && (parm_insert_line || insert_line)))
        return ERR;
 
     GoTo(del, 0);
     UpdateAttrs(blank);
-    if (n == 1 && delete_line)
-    {
+    if (n == 1 && delete_line) {
        TPUTS_TRACE("delete_line");
        tputs(delete_line, 0, _nc_outch);
-    }
-    else if (parm_delete_line)
-    {
+    } else if (parm_delete_line) {
        TPUTS_TRACE("parm_delete_line");
        tputs(tparm(parm_delete_line, n, 0), n, _nc_outch);
-    }
-    else /* if (delete_line) */
-    {
-       for (i = 0; i < n; i++)
-       {
+    } else {                   /* if (delete_line) */
+       for (i = 0; i < n; i++) {
            TPUTS_TRACE("delete_line");
            tputs(delete_line, 0, _nc_outch);
        }
@@ -1544,20 +1574,14 @@ static int scroll_idl(int n, int del, int ins, chtype blank)
 
     GoTo(ins, 0);
     UpdateAttrs(blank);
-    if (n == 1 && insert_line)
-    {
+    if (n == 1 && insert_line) {
        TPUTS_TRACE("insert_line");
        tputs(insert_line, 0, _nc_outch);
-    }
-    else if (parm_insert_line)
-    {
+    } else if (parm_insert_line) {
        TPUTS_TRACE("parm_insert_line");
        tputs(tparm(parm_insert_line, n, 0), n, _nc_outch);
-    }
-    else /* if (insert_line) */
-    {
-       for (i = 0; i < n; i++)
-       {
+    } else {                   /* if (insert_line) */
+       for (i = 0; i < n; i++) {
            TPUTS_TRACE("insert_line");
            tputs(insert_line, 0, _nc_outch);
        }
@@ -1566,12 +1590,13 @@ static int scroll_idl(int n, int del, int ins, chtype blank)
     return OK;
 }
 
-int _nc_scrolln(int n, int top, int bot, int maxy)
+int
+_nc_scrolln(int n, int top, int bot, int maxy)
 /* scroll region from top to bot by n lines */
 {
-    chtype blank=ClrBlank(stdscr);
+    chtype blank = ClrBlank(stdscr);
     int i;
-    bool cursor_saved=FALSE;
+    bool cursor_saved = FALSE;
     int res;
 
     TR(TRACE_MOVE, ("mvcur_scrolln(%d, %d, %d, %d)", n, top, bot, maxy));
@@ -1585,41 +1610,34 @@ int _nc_scrolln(int n, int top, int bot, int maxy)
     }
 #endif
 
-    if (n > 0) /* scroll up (forward) */
-    {
+    if (n > 0) {               /* scroll up (forward) */
        /*
         * Explicitly clear if stuff pushed off top of region might
         * be saved by the terminal.
         */
        if (non_dest_scroll_region || (memory_above && top == 0)) {
-           for (i = 0; i < n; i++)
-           {
+           for (i = 0; i < n; i++) {
                GoTo(i, 0);
-               ClrToEOL(BLANK);
+               ClrToEOL(BLANK, FALSE);
            }
        }
 
        res = scroll_csr_forward(n, top, bot, 0, maxy, blank);
 
-       if (res == ERR && change_scroll_region)
-       {
-           if ((((n==1 && scroll_forward) || parm_index)
-                && (SP->_cursrow == bot || SP->_cursrow == bot-1))
-               && save_cursor && restore_cursor)
-           {
-               cursor_saved=TRUE;
+       if (res == ERR && change_scroll_region) {
+           if ((((n == 1 && scroll_forward) || parm_index)
+                   && (SP->_cursrow == bot || SP->_cursrow == bot - 1))
+               && save_cursor && restore_cursor) {
+               cursor_saved = TRUE;
                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)
-           {
+           if (cursor_saved) {
                TPUTS_TRACE("restore_cursor");
                tputs(restore_cursor, 0, _nc_outch);
-           }
-           else
-           {
+           } else {
                SP->_cursrow = SP->_curscol = -1;
            }
 
@@ -1631,51 +1649,39 @@ int _nc_scrolln(int n, int top, int bot, int maxy)
        }
 
        if (res == ERR && _nc_idlok)
-           res = scroll_idl(n, top, bot-n+1, blank);
-    }
-    else /* (n < 0) - scroll down (backward) */
-    {
+           res = scroll_idl(n, top, bot - n + 1, blank);
+    } else {                   /* (n < 0) - scroll down (backward) */
        /*
         * Do explicit clear to end of region if it's possible that the
         * terminal might hold on to stuff we push off the end.
         */
-       if (non_dest_scroll_region || (memory_below && bot == maxy))
-       {
-           if (bot == maxy && clr_eos)
-           {
+       if (non_dest_scroll_region || (memory_below && bot == maxy)) {
+           if (bot == maxy && clr_eos) {
                GoTo(maxy + n, 0);
                ClrToEOS(BLANK);
-           }
-           else if (clr_eol)
-           {
-               for (i = 0; i < -n; i++)
-               {
+           } else if (clr_eol) {
+               for (i = 0; i < -n; i++) {
                    GoTo(maxy + n + i, 0);
-                   ClrToEOL(BLANK);
+                   ClrToEOL(BLANK, FALSE);
                }
            }
        }
 
        res = scroll_csr_backward(-n, top, bot, 0, maxy, blank);
 
-       if (res == ERR && change_scroll_region)
-       {
-           if (top != 0 && (SP->_cursrow == top || SP->_cursrow == top-1)
-               && save_cursor && restore_cursor)
-           {
-               cursor_saved=TRUE;
+       if (res == ERR && change_scroll_region) {
+           if (top != 0 && (SP->_cursrow == top || SP->_cursrow == top - 1)
+               && save_cursor && restore_cursor) {
+               cursor_saved = TRUE;
                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)
-           {
+           if (cursor_saved) {
                TPUTS_TRACE("restore_cursor");
                tputs(restore_cursor, 0, _nc_outch);
-           }
-           else
-           {
+           } else {
                SP->_cursrow = SP->_curscol = -1;
            }
 
@@ -1687,22 +1693,22 @@ int _nc_scrolln(int n, int top, int bot, int maxy)
        }
 
        if (res == ERR && _nc_idlok)
-           res = scroll_idl(-n, bot+n+1, top, blank);
+           res = scroll_idl(-n, bot + n + 1, top, blank);
     }
 
     if (res == ERR)
-       return(ERR);
+       return (ERR);
 
     _nc_scroll_window(curscr, n, top, bot, blank);
 
     /* shift hash values too - they can be reused */
     _nc_scroll_oldhash(n, top, bot);
 
-    return(OK);
+    return (OK);
 }
 
-
-void _nc_screen_resume()
+void
+_nc_screen_resume(void)
 {
     /* make sure terminal is in a sane known state */
     SP->_current_attr = A_NORMAL;
@@ -1712,8 +1718,7 @@ void _nc_screen_resume()
        putp(orig_pair);
     if (exit_attribute_mode)
        putp(exit_attribute_mode);
-    else
-    {
+    else {
        /* turn off attributes */
        if (exit_alt_charset_mode)
            putp(exit_alt_charset_mode);
@@ -1728,30 +1733,47 @@ void _nc_screen_resume()
        putp(auto_right_margin ? enter_am_mode : exit_am_mode);
 }
 
-void _nc_screen_init()
+void
+_nc_screen_init(void)
 {
     _nc_screen_resume();
 }
 
 /* wrap up screen handling */
-void _nc_screen_wrap()
+void
+_nc_screen_wrap(void)
 {
     UpdateAttrs(A_NORMAL);
+#ifdef NCURSES_EXT_FUNCS
+    if (SP->_coloron
+       && !SP->_default_color) {
+       SP->_default_color = TRUE;
+       _nc_do_color(-1, 0, FALSE, _nc_outch);
+       SP->_default_color = FALSE;
+
+       mvcur(SP->_cursrow, SP->_curscol, screen_lines - 1, 0);
+       SP->_cursrow = screen_lines - 1;
+       SP->_curscol = 0;
+
+       ClrToEOL(BLANK, TRUE);
+    }
+#endif
 }
 
 #if USE_XMC_SUPPORT
-void _nc_do_xmc_glitch(attr_t previous)
+void
+_nc_do_xmc_glitch(attr_t previous)
 {
-       attr_t chg = XMC_CHANGES(previous ^ SP->_current_attr);
-
-       while (chg != 0) {
-               if (chg & 1) {
-                       SP->_curscol += magic_cookie_glitch;
-                       if (SP->_curscol >= SP->_columns)
-                               wrap_cursor();
-                       T(("bumped to %d,%d after cookie", SP->_cursrow, SP->_curscol));
-               }
-               chg >>= 1;
+    attr_t chg = XMC_CHANGES(previous ^ SP->_current_attr);
+
+    while (chg != 0) {
+       if (chg & 1) {
+           SP->_curscol += magic_cookie_glitch;
+           if (SP->_curscol >= SP->_columns)
+               wrap_cursor();
+           T(("bumped to %d,%d after cookie", SP->_cursrow, SP->_curscol));
        }
+       chg >>= 1;
+    }
 }
 #endif /* USE_XMC_SUPPORT */
index 3110f830558c0b97131a4e30fba68041d82ded5b..e5f528d79157326d227cdfae11515a30a5d2884c 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.28 1998/11/29 01:03:31 Rick.Ohnemus Exp $
+# $Id: Makefile.in,v 1.31 2000/05/28 01:40:32 tom Exp $
 ##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc.                          #
+# Copyright (c) 1998-2000 Free Software Foundation, Inc.                     #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -67,6 +67,7 @@ LD            = @LD@
 LN_S           = @LN_S@
 
 CC             = @CC@
+CPP            = @CPP@
 CFLAGS         = @CFLAGS@
 
 CPPFLAGS       = @CPPFLAGS@ \
@@ -85,7 +86,7 @@ LINK          = $(CC)
 LDFLAGS                = @LDFLAGS@ @LD_MODEL@ @LIBS@
 
 SHLIB_DIRS     = -L../lib -L$(libdir)
-SHLIB_LIST     = $(SHLIB_DIRS) -lncurses @SHLIB_LIST@
+SHLIB_LIST     = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
 
 MK_SHARED_LIB  = @MK_SHARED_LIB@
 
@@ -104,7 +105,9 @@ AUTO_SRC    = \
                ../include/panel.h
 
 ################################################################################
-all install :: $(AUTO_SRC) $(LIBRARIES)
+all \
+libs \
+install ::     $(AUTO_SRC) $(LIBRARIES)
 
 sources:       $(AUTO_SRC)
 
index ab75ffee56e848bce77c0a03f5ba9286296304f6..2ca1a3e31818b018634a70b13ee8f91381e01dd7 100644 (file)
 
 #include "panel.priv.h"
 
-#undef _nc_free_obscure
-void   _nc_free_obscure(
-               PANEL   *pan)
-               { /* void */ }
-
-#undef _nc_override
-void   _nc_override(
-               const PANEL *pan, 
-               int     show)
-               { /* void */ }
-
-#undef _nc_calculate_obscure
-void   _nc_calculate_obscure(void)
-               { /* void */ }
-
-#undef _nc_panel_is_linked
-bool   _nc_panel_is_linked(
-               const PANEL *pan)
-               { return(*(bool *)0); }
-
-#undef _nc_panel_link_bottom
-void   _nc_panel_link_bottom(
-               PANEL   *pan)
-               { /* void */ }
 
 /* ./p_above.c */
 
index 4e6e11d183b3a1d8a823b1d49ffdc6dbb2b6f722..f671864231db6e74bcedf10dedb9de265aa94a38 100644 (file)
  */
 #include "panel.priv.h"
 
-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);
-}
+MODULE_ID("$Id: p_bottom.c,v 1.7 1999/11/25 13:49:26 juergen Exp $")
 
 int
 bottom_panel(PANEL *pan)
 {
-  if(!pan)
-    return(ERR);
-  if(Is_Bottom(pan))
-    return(OK);
-  dBug(("--> bottom_panel %s", USER_PTR(pan->user)));
-  if(_nc_panel_is_linked(pan))
-    (void)hide_panel(pan);
-  panel_link_bottom(pan);
-  return(OK);
+  int err = OK;
+
+  if (pan) {
+
+    if(!Is_Bottom(pan)) {
+      
+      dBug(("--> bottom_panel %s", USER_PTR(pan->user)));
+     
+      HIDE_PANEL(pan,err,FALSE);
+      assert(_nc_bottom_panel == _nc_stdscr_pseudo_panel);
+      
+      dStack("<lb%d>",1,pan);      
+      
+      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);
+    }
+  }
+  else
+    err = ERR;
+  
+  return(err);
 }
index aabccdc428f15b8700f0b80d257bd18378248fa8..3f975d3b3e89f6a46afbfa2c328f7f0c7c17c752 100644 (file)
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_delete.c,v 1.2 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: p_delete.c,v 1.4 1999/11/25 13:49:26 juergen Exp $")
 
 int
 del_panel(PANEL *pan)
 {
+  int err = OK;
   if(pan)
     {
       dBug(("--> del_panel %s", USER_PTR(pan->user)));
-      if(_nc_panel_is_linked(pan))
-       (void)hide_panel(pan);
+      HIDE_PANEL(pan,err,FALSE);
       free((void *)pan);
-      return(OK);
     }
-  return(ERR);
+  else
+    err = ERR;
+  return(err);
 }
index fa05e6ab23df3baa65ac4ce6580bf8f21f04bc92..7a13ec4335dfe71d73c8e2f6fd6c47e08f89f3c7 100644 (file)
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_hidden.c,v 1.3 1999/09/18 11:04:19 juergen Exp $")
+MODULE_ID("$Id: p_hidden.c,v 1.4 1999/11/22 18:02:41 juergen Exp $")
 
 int
 panel_hidden(const PANEL *pan)
 {
   if(!pan)
     return(ERR);
-  return(_nc_panel_is_linked(pan) ? FALSE : TRUE);
+  return(IS_LINKED(pan) ? FALSE : TRUE);
 } 
index d61429538440a22bca87dcff058aa1ed1881947d..ecc9eed2226f5e078707c9a2bf047565bd19badf 100644 (file)
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_hide.c,v 1.3 1999/09/29 15:22:32 juergen Exp $")
-
-/*+-------------------------------------------------------------------------
-       __panel_unlink(pan) - unlink panel from stack
---------------------------------------------------------------------------*/
-static void
-__panel_unlink(PANEL *pan)
-{
-  PANEL *prev;
-  PANEL *next;
-
-#ifdef TRACE
-  dStack("<u%d>",1,pan);
-  if(!_nc_panel_is_linked(pan))
-    return;
-#endif
-
-  PANEL_UPDATE(pan,(PANEL*)0);
-
-  prev = pan->below;
-  next = pan->above;
-
-  if(prev)
-    { /* if non-zero, we will not update the list head */
-      prev->above = next;
-      if(next)
-       next->below = prev;
-    }
-  else if(next)
-    next->below = prev;
-  if(pan == _nc_bottom_panel)
-    _nc_bottom_panel = next;
-  if(pan == _nc_top_panel)
-    _nc_top_panel = prev;
-
-  pan->above = (PANEL *)0;
-  pan->below = (PANEL *)0;
-  dStack("<u%d>",9,pan);
-}
+MODULE_ID("$Id: p_hide.c,v 1.5 1999/11/25 13:49:26 juergen Exp $")
 
 int
 hide_panel(register PANEL *pan)
 {
+  int err = OK;
+
   if(!pan)
     return(ERR);
 
   dBug(("--> hide_panel %s", USER_PTR(pan->user)));
+  dStack("<u%d>",1,pan);
+
+  HIDE_PANEL(pan,err,TRUE);
 
-  if(!_nc_panel_is_linked(pan))
-    {
-      pan->above = (PANEL *)0;
-      pan->below = (PANEL *)0;
-      return(ERR);
-    }
+  dStack("<u%d>",9,pan);
 
-  __panel_unlink(pan);
-  return(OK);
+  return(err);
 }
index 3bc6328fa6c6ec63355a5e4d3c2f2d902e3acaf9..d34b4fb84e56b3434fc5dbe8a7120dd396dccdd0 100644 (file)
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_move.c,v 1.3 1999/09/29 15:22:32 juergen Exp $")
+MODULE_ID("$Id: p_move.c,v 1.5 1999/11/25 13:49:26 juergen Exp $")
 
 int
 move_panel(PANEL *pan, int starty, int startx)
 {
-  WINDOW *win;
-
   if(!pan)
     return(ERR);
-  if(_nc_panel_is_linked(pan))
-    PANEL_UPDATE(pan,(PANEL*)0);
-  win = pan->win;
-  if(mvwin(win,starty,startx))
+
+  if (IS_LINKED(pan))
+    PANEL_UPDATE(pan,(PANEL*)0, TRUE);
+
+  if (mvwin(pan->win,starty,startx))
     return(ERR);
+
   return(OK);
 }
index f2f208d6ec7b68cb2a9ebb9eaa302d4fbdd5b8fb..43542fea2154313e796b6b373420081eaab4c833 100644 (file)
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_new.c,v 1.4 1999/09/29 15:22:32 juergen Exp $")
+MODULE_ID("$Id: p_new.c,v 1.5 1999/11/22 18:02:41 juergen Exp $")
+
+#ifdef TRACE
+static char* stdscr_id;
+static char* new_id;
+#endif
 
 /*+-------------------------------------------------------------------------
   Get root (i.e. stdscr's) panel.
@@ -57,7 +62,9 @@ root_panel(void)
        pan->below   = (PANEL*)0;
        pan->above   = (PANEL*)0;
 #ifdef TRACE
-       pan->user = "stdscr";
+       if (!stdscr_id)
+         stdscr_id = strdup("stdscr");
+       pan->user = stdscr_id;
 #else
        pan->user = (void*)0;
 #endif
@@ -72,7 +79,11 @@ new_panel(WINDOW *win)
 {
   PANEL *pan = (PANEL*)0;
 
-  (void)root_panel();
+  if (!win)
+    return(pan);
+
+  if (!_nc_stdscr_pseudo_panel)
+    (void)root_panel();
   assert(_nc_stdscr_pseudo_panel);
 
   if (!(win->_flags & _ISPAD) && (pan = (PANEL*)malloc(sizeof(PANEL))))
@@ -81,7 +92,9 @@ new_panel(WINDOW *win)
       pan->above = (PANEL *)0;
       pan->below = (PANEL *)0;
 #ifdef TRACE
-      pan->user = "new";
+      if (!new_id)
+       new_id = strdup("new");
+      pan->user = new_id;
 #else
       pan->user = (char *)0;
 #endif
index 3c4aca185d4f5bde0a5b7d2ffd8378f0c3175b04..b7d51746610febff2122870bd3c42570f25e5431 100644 (file)
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_replace.c,v 1.3 1999/09/29 15:22:32 juergen Exp $")
+MODULE_ID("$Id: p_replace.c,v 1.5 1999/11/25 13:49:26 juergen Exp $")
 
 int
 replace_panel(PANEL *pan, WINDOW *win)
 {
   if(!pan)
     return(ERR);
-  if(_nc_panel_is_linked(pan))
-    PANEL_UPDATE(pan,(PANEL*)0);
+
+  if (IS_LINKED(pan))
+    PANEL_UPDATE(pan,(PANEL*)0, TRUE);
+  
   pan->win = win;
+
   return(OK);
 }
index d129fd50715b35355ba9718aed55cef82149ed0c..4fc7b1dbcba1034c949745283f35866e3ffbec0e 100644 (file)
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_show.c,v 1.5 1999/09/29 15:22:32 juergen Exp $")
-
-static void
-panel_link_top(PANEL *pan)
-{
-#ifdef TRACE
-  dStack("<lt%d>",1,pan);
-  if(_nc_panel_is_linked(pan))
-    return;
-#endif
-
-  assert(_nc_bottom_panel == _nc_stdscr_pseudo_panel);
-
-  pan->above = (PANEL *)0;
-  pan->below = (PANEL *)0;
-  
-  _nc_top_panel->above = pan;
-  pan->below = _nc_top_panel;  
-  _nc_top_panel = pan;
-  
-  dStack("<lt%d>",9,pan);
-}
+MODULE_ID("$Id: p_show.c,v 1.7 1999/11/25 13:49:26 juergen Exp $")
 
 int
 show_panel(PANEL *pan)
-{
+{ 
+  int err = OK;
+
   if(!pan)
     return(ERR);
 
@@ -70,10 +51,17 @@ show_panel(PANEL *pan)
 
   dBug(("--> show_panel %s", USER_PTR(pan->user)));
 
-  if(_nc_panel_is_linked(pan))
-    (void)hide_panel(pan);
+  HIDE_PANEL(pan,err,FALSE);
+
+  dStack("<lt%d>",1,pan);
+  assert(_nc_bottom_panel == _nc_stdscr_pseudo_panel);
 
-  panel_link_top(pan);
+  _nc_top_panel->above = pan;
+  pan->below = _nc_top_panel;  
+  pan->above = (PANEL *)0;
+  _nc_top_panel = pan;
+  
+  dStack("<lt%d>",9,pan);
 
   return(OK);
 }
index 692a3f33b95d5c2129a37cf758237aad5ff33abb..983d0b607288b22bc57b6ba9f53a5d4863a53aee 100644 (file)
@@ -36,7 +36,7 @@
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_update.c,v 1.3 1999/09/29 15:22:32 juergen Exp $")
+MODULE_ID("$Id: p_update.c,v 1.5 1999/11/25 13:49:26 juergen Exp $")
 
 void
 update_panels(void)
@@ -47,15 +47,14 @@ update_panels(void)
   pan = _nc_bottom_panel;
   while(pan && pan->above)
     {
-      PANEL_UPDATE(pan,pan->above);
+      PANEL_UPDATE(pan,pan->above, FALSE);
       pan = pan->above;
     }
 
   pan = _nc_bottom_panel;
   while (pan)
     {
-      if (is_wintouched(pan->win))
-       Wnoutrefresh(pan);
+      Wnoutrefresh(pan);
       pan = pan->above;
     }
 }
index cd470a983b16e3c2101f9d262aac42162d00d103..57bf793a007e6b101edd2c73e46a5b1ce22d10a4 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: panel.priv.h,v 1.10 1999/09/29 15:21:58 juergen Exp $ */
+/* $Id: panel.priv.h,v 1.13 2000/01/15 20:39:53 juergen Exp $ */
 
 #ifndef _PANEL_PRIV_H
 #define _PANEL_PRIV_H
 #define Is_Top(p) (((p)!=(PANEL*)0) && !EMPTY_STACK() && (_nc_top_panel==(p)))
 #define Is_Pseudo(p) ((p) && ((p)==_nc_bottom_panel))
 
+/* borrowed from curses.priv.h */
+#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
+
 /*+-------------------------------------------------------------------------
-       _nc_panel_is_linked(pan) - check to see if panel is in the stack
+       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 IS_LINKED(p) (((p)->above || (p)->below ||((p)==_nc_bottom_panel)) ? TRUE : FALSE)
 
 #define PSTARTX(pan) ((pan)->win->_begx)
-#define PENDX(pan)   ((pan)->win->_begx + getmaxx((pan)->win))
+#define PENDX(pan)   ((pan)->win->_begx + getmaxx((pan)->win) - 1)
 #define PSTARTY(pan) ((pan)->win->_begy)
-#define PENDY(pan)   ((pan)->win->_begy + getmaxy((pan)->win))
+#define PENDY(pan)   ((pan)->win->_begy + getmaxy((pan)->win) - 1)
 
 /*+-------------------------------------------------------------------------
        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) ) \
+       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) {\
+/*+-------------------------------------------------------------------------
+       Compute the intersection rectangle of two overlapping rectangles
+---------------------------------------------------------------------------*/
+#define COMPUTE_INTERSECTION(pan1,pan2,ix1,ix2,iy1,iy2)\
+   ix1 = (PSTARTX(pan1) < PSTARTX(pan2)) ? PSTARTX(pan2) : PSTARTX(pan1);\
+   ix2 = (PENDX(pan1)   < PENDX(pan2))   ? PENDX(pan1)   : PENDX(pan2);\
+   iy1 = (PSTARTY(pan1) < PSTARTY(pan2)) ? PSTARTY(pan2) : PSTARTY(pan1);\
+   iy2 = (PENDY(pan1)   < PENDY(pan2))   ? PENDY(pan1)   : PENDY(pan2);\
+   assert((ix1<=ix2) && (iy1<=iy2));\
+
+
+/*+-------------------------------------------------------------------------
+       Walk through the panel stack starting at the given location and
+        check for intersections; overlapping panels are "touched", so they
+        are incrementally overwriting cells that should be hidden. 
+        If the "touch" flag is set, the panel gets touched before it is
+        updated. 
+---------------------------------------------------------------------------*/
+#define PANEL_UPDATE(pan,panstart,touch)\
+{  PANEL* pan2 = ((panstart) ? (panstart) : _nc_bottom_panel);\
+   if (touch)\
       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);\
+        int y,ix1,ix2,iy1,iy2;\
+        COMPUTE_INTERSECTION(pan,pan2,ix1,ix2,iy1,iy2);\
+       for(y = iy1; y <= iy2; y++) {\
+         if (is_linetouched(pan->win,y - PSTARTY(pan))) {\
+            struct ldat* line = &(pan2->win->_line[y - PSTARTY(pan2)]);\
+            CHANGED_RANGE(line,ix1-PSTARTX(pan2),ix2-PSTARTX(pan2));\
+          }\
        }\
       }\
       pan2 = pan2->above;\
-    }\
+   }\
+}
+
+/*+-------------------------------------------------------------------------
+       Remove panel from stack.
+---------------------------------------------------------------------------*/
+#define PANEL_UNLINK(pan,err) \
+{  err = ERR;\
+   if (pan) {\
+     if (IS_LINKED(pan)) {\
+       if ((pan)->below)\
+         (pan)->below->above = (pan)->above;\
+       if ((pan)->above)\
+         (pan)->above->below = (pan)->below;\
+       if ((pan) == _nc_bottom_panel) \
+         _nc_bottom_panel = (pan)->above;\
+       if ((pan) == _nc_top_panel) \
+         _nc_top_panel = (pan)->below;\
+       err = OK;\
+     }\
+     (pan)->above = (pan)->below = (PANEL*)0;\
+   }\
 }
+
+#define HIDE_PANEL(pan,err,err_if_unlinked)\
+  if (IS_LINKED(pan)) {\
+    PANEL_UPDATE(pan,(PANEL*)0,TRUE);\
+    PANEL_UNLINK(pan,err);\
+  } \
+  else {\
+    if (err_if_unlinked)\
+      err = ERR;\
+  }
+
 #endif /* _PANEL_PRIV_H */
index 6cbe9548354ed3c598145b943541401f17e0d2df..5486fd7436891d9d81802f9dbbb7a0295e24a813 100755 (executable)
@@ -1,17 +1,24 @@
 #!/bin/sh
+# $Id: MKtermsort.sh,v 1.6 2000/01/25 11:35:36 tom Exp $
 #
 # MKtermsort.sh -- generate indirection vectors for the various sort methods
 #
 # The output of this script is C source for nine arrays that list three sort
 # orders for each of the three different classes of terminfo capabilities.
 #
+# keep the order independent of locale:
+LANGUAGE=C
+LC_ALL=C
+export LANGUAGE
+export LC_ALL
+#
 AWK=${1-awk}
 DATA=${2-../include/Caps}
 
 echo "/*";
 echo " * termsort.c --- sort order arrays for use by infocmp.";
 echo " *";
-echo " * Note: this file is generated using termsort.sh, do not edit by hand.";
+echo " * Note: this file is generated using MKtermsort.sh, do not edit by hand.";
 echo " */";
 
 echo "static const int bool_terminfo_sort[] = {";
@@ -95,27 +102,26 @@ $3 == "str"     {printf("%s\t%d\n", $4, i++);}
 echo "};";
 echo "";
 
-echo "static const int bool_from_termcap[] = {";
+echo "static const bool bool_from_termcap[] = {";
 $AWK <$DATA '
-$3 == "bool" && substr($5, 1, 1) == "-"       {print "0,\t/* ", $2, " */";}
-$3 == "bool" && substr($5, 1, 1) == "Y"       {print "1,\t/* ", $2, " */";}
+$3 == "bool" && substr($5, 1, 1) == "-"       {print "\tFALSE,\t/* ", $2, " */";}
+$3 == "bool" && substr($5, 1, 1) == "Y"       {print "\tTRUE,\t/* ", $2, " */";}
 '
 echo "};";
 echo "";
 
-echo "static const int num_from_termcap[] = {";
+echo "static const bool num_from_termcap[] = {";
 $AWK <$DATA '
-$3 == "num" && substr($5, 1, 1) == "-"        {print "0,\t/* ", $2, " */";}
-$3 == "num" && substr($5, 1, 1) == "Y"        {print "1,\t/* ", $2, " */";}
+$3 == "num" && substr($5, 1, 1) == "-"        {print "\tFALSE,\t/* ", $2, " */";}
+$3 == "num" && substr($5, 1, 1) == "Y"        {print "\tTRUE,\t/* ", $2, " */";}
 '
 echo "};";
 echo "";
 
-echo "static const int str_from_termcap[] = {";
+echo "static const bool str_from_termcap[] = {";
 $AWK <$DATA '
-$3 == "str" && substr($5, 1, 1) == "-"        {print "0,\t/* ", $2, " */";}
-$3 == "str" && substr($5, 1, 1) == "Y"        {print "1,\t/* ", $2, " */";}
+$3 == "str" && substr($5, 1, 1) == "-"        {print "\tFALSE,\t/* ", $2, " */";}
+$3 == "str" && substr($5, 1, 1) == "Y"        {print "\tTRUE,\t/* ", $2, " */";}
 '
 echo "};";
 echo "";
-
index f22a016843bc857d28426feaa2ca05daaff0f422..a0a296ef935b47f1832945b82aa57c272c89de01 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.37 1998/05/31 00:07:33 tom Exp $
+# $Id: Makefile.in,v 1.41 2000/07/08 01:56:25 tom Exp $
 ##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc.                          #
+# Copyright (c) 1998-2000 Free Software Foundation, Inc.                     #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -68,6 +68,7 @@ AWK           = @AWK@
 LN_S           = @LN_S@
 
 CC             = @CC@
+CPP            = @CPP@
 CFLAGS         = @CFLAGS@
 
 INCDIR         = $(srcdir)/../include
@@ -79,7 +80,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@)
 
@@ -107,7 +108,7 @@ PROGS = tic$x toe$x infocmp$x clear$x tput$x tset$x
 TESTPROGS = mvcur$x tctest$x hardscroll$x hashmap$x
 
 # Default library, for linking applications
-DEPS_CURSES = @LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@
+DEPS_CURSES = ../lib/@LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@
 
 ################################################################################
 all:           $(AUTO_SRC) $(PROGS) 
@@ -118,7 +119,8 @@ install: install.progs
 uninstall: uninstall.progs 
 
 # this line simplifies the configure-script
-install.libs:
+libs \
+install.libs \
 uninstall.libs:
 
 install.progs: $(PROGS) $(INSTALL_PREFIX)$(bindir)
index 8324fe2252286b887773707110a3d3072ee1aa9e..3830742fcbd6c0ca106929e08d49cec8e2d3b74d 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc.                   *
+ * Copyright (c) 1998-2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
 #include "termsort.c"          /* this C file is generated */
 #include <parametrized.h>      /* so is this */
 
-MODULE_ID("$Id: dump_entry.c,v 1.37 1999/03/14 12:29:30 tom Exp $")
+MODULE_ID("$Id: dump_entry.c,v 1.53 2000/04/15 21:23:30 tom Exp $")
 
 #define INDENT                 8
-
 #define DISCARD(string) string = ABSENT_STRING
+#define PRINTF (void) printf
+
+typedef struct {
+    char *text;
+    size_t used;
+    size_t size;
+} DYNBUF;
 
 static int tversion;           /* terminfo version */
 static int outform;            /* output format to use */
@@ -53,15 +59,14 @@ 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 */
-static size_t out_size;                /* ...and its allocated length */
+static DYNBUF outbuf;
+static DYNBUF tmpbuf;
 
 /* indirection pointers for implementing sort and display modes */
 static const int *bool_indirect, *num_indirect, *str_indirect;
-static NCURSES_CONST char * const *bool_names;
-static NCURSES_CONST char * const *num_names;
-static NCURSES_CONST char * const *str_names;
+static NCURSES_CONST char *const *bool_names;
+static NCURSES_CONST char *const *num_names;
+static NCURSES_CONST char *const *str_names;
 
 static const char *separator, *trailer;
 
@@ -72,7 +77,13 @@ static const char *separator, *trailer;
 #define V_AIX          3       /* AIX */
 #define V_BSD          4       /* BSD */
 
+#if NCURSES_XNAMES
+#define OBSOLETE(n) (!_nc_user_definable && (n[0] == 'O' && n[1] == 'T'))
+#else
 #define OBSOLETE(n) (n[0] == 'O' && n[1] == 'T')
+#endif
+
+#define isObsolete(f,n) ((f == F_TERMINFO || f == F_VARIABLE) && OBSOLETE(n))
 
 #if NCURSES_XNAMES
 #define BoolIndirect(j) ((j >= BOOLCOUNT) ? (j) : ((sortmode == S_NOSORT) ? j : bool_indirect[j]))
@@ -84,44 +95,79 @@ static const char *separator, *trailer;
 #define StrIndirect(j)  ((sortmode == S_NOSORT) ? (j) : str_indirect[j])
 #endif
 
+static void
+strncpy_DYN(DYNBUF * dst, const char *src, size_t need)
+{
+    size_t want = need + dst->used + 1;
+    if (want > dst->size) {
+       dst->size += (want + 1024);     /* be generous */
+       dst->text = typeRealloc(char, dst->size, dst->text);
+    }
+    (void) strncpy(dst->text + dst->used, src, need);
+    dst->used += need;
+    dst->text[dst->used] = 0;
+}
+
+static void
+strcpy_DYN(DYNBUF * dst, const char *src)
+{
+    if (src == 0) {
+       dst->used = 0;
+       strcpy_DYN(dst, "");
+    } else {
+       strncpy_DYN(dst, src, strlen(src));
+    }
+}
+
 #if NO_LEAKS
-void _nc_leaks_dump_entry(void)
+static void
+free_DYN(DYNBUF * p)
 {
-       if (outbuf != 0) {
-               free(outbuf);
-               outbuf = 0;
-       }
+    if (p->text != 0)
+       free(p->text);
+    p->text = 0;
+    p->size = 0;
+    p->used = 0;
+}
+
+void
+_nc_leaks_dump_entry(void)
+{
+    free_DYN(&outbuf);
+    free_DYN(&tmpbuf);
 }
 #endif
 
-NCURSES_CONST char *nametrans(const char *name)
+NCURSES_CONST char *
+nametrans(const char *name)
 /* translate a capability name from termcap to terminfo */
 {
-    const struct name_table_entry      *np;
+    const struct name_table_entry *np;
 
     if ((np = _nc_find_entry(name, _nc_get_hash_table(0))) != 0)
-        switch(np->nte_type)
-       {
+       switch (np->nte_type) {
        case BOOLEAN:
            if (bool_from_termcap[np->nte_index])
-               return(boolcodes[np->nte_index]);
+               return (boolcodes[np->nte_index]);
            break;
 
        case NUMBER:
            if (num_from_termcap[np->nte_index])
-               return(numcodes[np->nte_index]);
+               return (numcodes[np->nte_index]);
            break;
 
        case STRING:
            if (str_from_termcap[np->nte_index])
-               return(strcodes[np->nte_index]);
+               return (strcodes[np->nte_index]);
            break;
        }
 
-    return(0);
+    return (0);
 }
 
-void dump_init(const char *version, int mode, int sort, int twidth, int traceval, bool formatted)
+void
+dump_init(const char *version, int mode, int sort, int twidth, int traceval,
+    bool formatted)
 /* set up for entry display */
 {
     width = twidth;
@@ -132,7 +178,7 @@ void dump_init(const char *version, int mode, int sort, int twidth, int traceval
     if (version == 0)
        tversion = V_ALLCAPS;
     else if (!strcmp(version, "SVr1") || !strcmp(version, "SVR1")
-                                       || !strcmp(version, "Ultrix"))
+       || !strcmp(version, "Ultrix"))
        tversion = V_SVR1;
     else if (!strcmp(version, "HP"))
        tversion = V_HPUX;
@@ -144,8 +190,7 @@ void dump_init(const char *version, int mode, int sort, int twidth, int traceval
        tversion = V_ALLCAPS;
 
     /* implement display modes */
-    switch (outform = mode)
-    {
+    switch (outform = mode) {
     case F_LITERAL:
     case F_TERMINFO:
        bool_names = boolnames;
@@ -174,18 +219,17 @@ void dump_init(const char *version, int mode, int sort, int twidth, int traceval
     }
 
     /* implement sort modes */
-    switch(sortmode = sort)
-    {
+    switch (sortmode = sort) {
     case S_NOSORT:
        if (traceval)
            (void) fprintf(stderr,
-                          "%s: sorting by term structure order\n", _nc_progname);
+               "%s: sorting by term structure order\n", _nc_progname);
        break;
 
     case S_TERMINFO:
        if (traceval)
            (void) fprintf(stderr,
-                          "%s: sorting by terminfo name order\n", _nc_progname);
+               "%s: sorting by terminfo name order\n", _nc_progname);
        bool_indirect = bool_terminfo_sort;
        num_indirect = num_terminfo_sort;
        str_indirect = str_terminfo_sort;
@@ -194,7 +238,7 @@ void dump_init(const char *version, int mode, int sort, int twidth, int traceval
     case S_VARIABLE:
        if (traceval)
            (void) fprintf(stderr,
-                          "%s: sorting by C variable order\n", _nc_progname);
+               "%s: sorting by C variable order\n", _nc_progname);
        bool_indirect = bool_variable_sort;
        num_indirect = num_variable_sort;
        str_indirect = str_variable_sort;
@@ -203,7 +247,7 @@ void dump_init(const char *version, int mode, int sort, int twidth, int traceval
     case S_TERMCAP:
        if (traceval)
            (void) fprintf(stderr,
-                          "%s: sorting by termcap name order\n", _nc_progname);
+               "%s: sorting by termcap name order\n", _nc_progname);
        bool_indirect = bool_termcap_sort;
        num_indirect = num_termcap_sort;
        str_indirect = str_termcap_sort;
@@ -212,49 +256,48 @@ void dump_init(const char *version, int mode, int sort, int twidth, int traceval
 
     if (traceval)
        (void) fprintf(stderr,
-                      "%s: width = %d, tversion = %d, outform = %d\n",
-                      _nc_progname, width, tversion, outform);
+           "%s: width = %d, tversion = %d, outform = %d\n",
+           _nc_progname, width, tversion, outform);
 }
 
-static TERMTYPE        *cur_type;
+static TERMTYPE *cur_type;
 
-static int dump_predicate(int type, int idx)
+static int
+dump_predicate(int type, int idx)
 /* predicate function to use for ordinary decompilation */
 {
-       switch(type) {
-       case BOOLEAN:
-               return (cur_type->Booleans[idx] == FALSE)
-                   ? FAIL : cur_type->Booleans[idx];
-
-       case NUMBER:
-               return (cur_type->Numbers[idx] == ABSENT_NUMERIC)
-                   ? FAIL : cur_type->Numbers[idx];
-
-       case STRING:
-               return (cur_type->Strings[idx] != ABSENT_STRING)
-                   ? (int)TRUE : FAIL;
-       }
+    switch (type) {
+    case BOOLEAN:
+       return (cur_type->Booleans[idx] == FALSE)
+           ? FAIL : cur_type->Booleans[idx];
+
+    case NUMBER:
+       return (cur_type->Numbers[idx] == ABSENT_NUMERIC)
+           ? FAIL : cur_type->Numbers[idx];
+
+    case STRING:
+       return (cur_type->Strings[idx] != ABSENT_STRING)
+           ? (int) TRUE : FAIL;
+    }
 
-       return(FALSE);  /* pacify compiler */
+    return (FALSE);            /* pacify compiler */
 }
 
-static void set_obsolete_termcaps(TERMTYPE *tp);
-static void repair_acsc(TERMTYPE *tp);
+static void set_obsolete_termcaps(TERMTYPE * tp);
 
 /* is this the index of a function key string? */
 #define FNKEY(i)       (((i)<= 65 && (i)>= 75) || ((i)<= 216 && (i)>= 268))
 
-static bool version_filter(int type, int idx)
+static bool
+version_filter(int type, int idx)
 /* filter out capabilities we may want to suppress */
 {
-    switch (tversion)
-    {
-    case V_ALLCAPS:    /* SVr4, XSI Curses */
-       return(TRUE);
-
-    case V_SVR1:       /* System V Release 1, Ultrix */
-       switch (type)
-       {
+    switch (tversion) {
+    case V_ALLCAPS:            /* SVr4, XSI Curses */
+       return (TRUE);
+
+    case V_SVR1:               /* System V Release 1, Ultrix */
+       switch (type) {
        case BOOLEAN:
            /* below and including xon_xoff */
            return ((idx <= 20) ? TRUE : FALSE);
@@ -268,8 +311,7 @@ static bool version_filter(int type, int idx)
        break;
 
     case V_HPUX:               /* Hewlett-Packard */
-       switch (type)
-       {
+       switch (type) {
        case BOOLEAN:
            /* below and including xon_xoff */
            return ((idx <= 20) ? TRUE : FALSE);
@@ -278,19 +320,18 @@ static bool version_filter(int type, int idx)
            return ((idx <= 10) ? TRUE : FALSE);
        case STRING:
            if (idx <= 144)     /* below and including prtr_non */
-               return(TRUE);
+               return (TRUE);
            else if (FNKEY(idx))        /* function keys */
-               return(TRUE);
-           else if (idx==147||idx==156||idx==157) /* plab_norm,label_on,label_off */
-               return(TRUE);
+               return (TRUE);
+           else if (idx == 147 || idx == 156 || idx == 157)    /* plab_norm,label_on,label_off */
+               return (TRUE);
            else
-               return(FALSE);
+               return (FALSE);
        }
        break;
 
     case V_AIX:                /* AIX */
-       switch (type)
-       {
+       switch (type) {
        case BOOLEAN:
            /* below and including xon_xoff */
            return ((idx <= 20) ? TRUE : FALSE);
@@ -299,17 +340,16 @@ static bool version_filter(int type, int idx)
            return ((idx <= 7) ? TRUE : FALSE);
        case STRING:
            if (idx <= 144)     /* below and including prtr_non */
-               return(TRUE);
+               return (TRUE);
            else if (FNKEY(idx))        /* function keys */
-               return(TRUE);
+               return (TRUE);
            else
-               return(FALSE);
+               return (FALSE);
        }
        break;
 
     case V_BSD:                /* BSD */
-       switch (type)
-       {
+       switch (type) {
        case BOOLEAN:
            return bool_from_termcap[idx];
        case NUMBER:
@@ -320,51 +360,30 @@ static bool version_filter(int type, int idx)
        break;
     }
 
-    return(FALSE);     /* pacify the compiler */
+    return (FALSE);            /* pacify the compiler */
 }
 
-static
-void append_output (const char *src)
+static void
+force_wrap(void)
 {
-       if (src == 0) {
-               out_used = 0;
-               append_output("");
-       } else {
-               size_t need = strlen(src);
-               size_t want = need + out_used + 1;
-               if (want > out_size) {
-                       out_size += want;       /* be generous */
-                       if (outbuf == 0)
-                               outbuf = malloc(out_size);
-                       else
-                               outbuf = realloc(outbuf, out_size);
-               }
-               (void)strcpy(outbuf + out_used, src);
-               out_used += need;
-       }
+    oldcol = column;
+    strcpy_DYN(&outbuf, trailer);
+    column = INDENT;
 }
 
-static
-void force_wrap(void)
+static void
+wrap_concat(const char *src)
 {
-       oldcol = column;
-       append_output(trailer);
-       column = INDENT;
-}
+    int need = strlen(src);
+    int want = strlen(separator) + need;
 
-static
-void wrap_concat(const char *src)
-{
-       int need = strlen(src);
-       int want = strlen(separator) + need;
-
-       if (column > INDENT
-        && column + want > width) {
-               force_wrap();
-       }
-       append_output(src);
-       append_output(separator);
-       column += need;
+    if (column > INDENT
+       && column + want > width) {
+       force_wrap();
+    }
+    strcpy_DYN(&outbuf, src);
+    strcpy_DYN(&outbuf, separator);
+    column += need;
 }
 
 #define IGNORE_SEP_TRAIL(first,last,sep_trail) \
@@ -382,98 +401,116 @@ void wrap_concat(const char *src)
  * of the best fixed-buffer implementation; the worst case may be much worse.
  */
 #ifdef TEST_TERMCAP_LENGTH
-static int termcap_length(const char *src)
+static int
+termcap_length(const char *src)
 {
-       static const char pattern[] = ":\\\n\t:";
+    static const char pattern[] = ":\\\n\t:";
 
-       int len = 0;
-       const char *const t = src + strlen(src);
+    int len = 0;
+    const char *const t = src + strlen(src);
 
-       while (*src != '\0') {
-               IGNORE_SEP_TRAIL(src, t, pattern);
-               src++;
-               len++;
-       }
-       return len;
+    while (*src != '\0') {
+       IGNORE_SEP_TRAIL(src, t, pattern);
+       src++;
+       len++;
+    }
+    return len;
 }
 #else
 #define termcap_length(src) strlen(src)
 #endif
 
-static char * fmt_complex(char *dst, char *src, int level)
+static char *
+fmt_complex(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;
+    int percent = 0;
+    int n;
+    bool if_then = strstr(src, "%?") != 0;
+    bool params = !if_then && (strlen(src) > 50) && (strstr(src, "%p") != 0);
+
+    while (*src != '\0') {
+       switch (*src) {
+       case '\\':
+           percent = 0;
+           strncpy_DYN(&tmpbuf, src++, 1);
+           break;
+       case '%':
+           percent = 1;
+           break;
+       case '?':               /* "if" */
+       case 't':               /* "then" */
+       case 'e':               /* "else" */
+           if (percent) {
+               percent = 0;
+               tmpbuf.text[tmpbuf.used - 1] = '\n';
+               /* treat a "%e%?" as else-if, on the same level */
+               if (!strncmp(src, "e%?", 3)) {
+                   for (n = 0; n < level; n++)
+                       strncpy_DYN(&tmpbuf, "\t", 1);
+                   strncpy_DYN(&tmpbuf, "%", 1);
+                   strncpy_DYN(&tmpbuf, src, 3);
+                   src += 3;
+               } else {
+                   for (n = 0; n <= level; n++)
+                       strncpy_DYN(&tmpbuf, "\t", 1);
+                   strncpy_DYN(&tmpbuf, "%", 1);
+                   strncpy_DYN(&tmpbuf, src, 1);
+                   if (*src++ == '?') {
+                       src = fmt_complex(src, level + 1);
+                   } else if (level == 1) {
+                       _nc_warning("%%%c without %%?", *src);
+                   }
+               }
+               continue;
+           }
+           break;
+       case ';':               /* "endif" */
+           if (percent) {
+               percent = 0;
+               if (level > 1) {
+                   tmpbuf.text[tmpbuf.used - 1] = '\n';
+                   for (n = 0; n < level; n++)
+                       strncpy_DYN(&tmpbuf, "\t", 1);
+                   strncpy_DYN(&tmpbuf, "%", 1);
+                   strncpy_DYN(&tmpbuf, src++, 1);
+                   return src;
                }
-               *dst++ = *src++;
+               _nc_warning("%%; without %%?");
+           }
+           break;
+       case 'p':
+           if (percent && params) {
+               tmpbuf.text[tmpbuf.used - 1] = '\n';
+               for (n = 0; n <= level; n++)
+                   strncpy_DYN(&tmpbuf, "\t", 1);
+               strncpy_DYN(&tmpbuf, "%", 1);
+           }
+           percent = 0;
+           break;
+       default:
+           percent = 0;
+           break;
        }
-       *dst = '\0';
-       return src;
+       strncpy_DYN(&tmpbuf, src++, 1);
+    }
+    return src;
 }
 
-int fmt_entry(TERMTYPE *tterm,
-                          int (*pred)(int type, int idx),
-                          bool suppress_untranslatable,
-                          bool infodump,
-                          int numbers)
+int
+fmt_entry(TERMTYPE * tterm,
+    int (*pred) (int type, int idx),
+    bool suppress_untranslatable,
+    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;
-int    num_strings = 0;
-bool   outcount = 0;
+    int i, j;
+    char buffer[MAX_TERMINFO_LENGTH];
+    NCURSES_CONST char *name;
+    int predval, len;
+    int num_bools = 0;
+    int num_values = 0;
+    int num_strings = 0;
+    bool outcount = 0;
 
 #define WRAP_CONCAT    \
        wrap_concat(buffer); \
@@ -486,20 +523,19 @@ bool      outcount = 0;
        pred = dump_predicate;
     }
 
-    append_output(0);
-    append_output(tterm->term_names);
-    append_output(separator);
-    column = out_used;
+    strcpy_DYN(&outbuf, 0);
+    strcpy_DYN(&outbuf, tterm->term_names);
+    strcpy_DYN(&outbuf, separator);
+    column = outbuf.used;
     force_wrap();
 
-    for_each_boolean(j,tterm) {
+    for_each_boolean(j, tterm) {
        i = BoolIndirect(j);
-       name = ExtBoolname(tterm,i,bool_names);
+       name = ExtBoolname(tterm, i, bool_names);
 
        if (!version_filter(BOOLEAN, i))
            continue;
-       else if ((outform == F_LITERAL || outform == F_TERMINFO || outform == F_VARIABLE)
-                && (OBSOLETE(name) && outform != F_LITERAL))
+       else if (isObsolete(outform, name))
            continue;
 
        predval = pred(BOOLEAN, i);
@@ -516,14 +552,13 @@ bool      outcount = 0;
     if (column != INDENT)
        force_wrap();
 
-    for_each_number(j,tterm) {
+    for_each_number(j, tterm) {
        i = NumIndirect(j);
-       name = ExtNumname(tterm,i,num_names);
+       name = ExtNumname(tterm, i, num_names);
 
        if (!version_filter(NUMBER, i))
            continue;
-       else if ((outform == F_LITERAL || outform == F_TERMINFO || outform == F_VARIABLE)
-                && (OBSOLETE(name) && outform != F_LITERAL))
+       else if (isObsolete(outform, name))
            continue;
 
        predval = pred(NUMBER, i);
@@ -543,20 +578,32 @@ bool      outcount = 0;
        force_wrap();
 
     len += num_bools
-       + num_values * 2
-       + strlen(tterm->term_names) + 1;
+       + num_values * 2
+       + strlen(tterm->term_names) + 1;
     if (len & 1)
-       len++;
+       len++;
+
+#undef CUR
+#define CUR tterm->
+    if (outform == F_TERMCAP) {
+       if (termcap_reset != ABSENT_STRING) {
+           if (init_3string != ABSENT_STRING
+               && !strcmp(init_3string, termcap_reset))
+               DISCARD(init_3string);
+
+           if (reset_2string != ABSENT_STRING
+               && !strcmp(reset_2string, termcap_reset))
+               DISCARD(reset_2string);
+       }
+    }
 
-    repair_acsc(tterm);
     for_each_string(j, tterm) {
        i = StrIndirect(j);
-       name = ExtStrname(tterm,i,str_names);
+       name = ExtStrname(tterm, i, str_names);
 
        if (!version_filter(STRING, i))
            continue;
-       else if ((outform == F_LITERAL || outform == F_TERMINFO || outform == F_VARIABLE)
-                && (OBSOLETE(name) && outform != F_LITERAL))
+       else if (isObsolete(outform, name))
            continue;
 
        /*
@@ -564,77 +611,82 @@ bool      outcount = 0;
         * for ich/ich1 to work.  If they're not defined, force
         * them to be output as defined and empty.
         */
-       if (outform==F_TERMCAP)
-       {
-#undef CUR
-#define CUR tterm->
-           if (insert_character || parm_ich)
-           {
+       if (outform == F_TERMCAP) {
+           if (insert_character || parm_ich) {
                if (&tterm->Strings[i] == &enter_insert_mode
-                   && enter_insert_mode == ABSENT_STRING)
-               {
+                   && enter_insert_mode == ABSENT_STRING) {
                    (void) strcpy(buffer, "im=");
-                   goto catenate;
+                   WRAP_CONCAT;
+                   continue;
                }
 
                if (&tterm->Strings[i] == &exit_insert_mode
-                   && exit_insert_mode == ABSENT_STRING)
-               {
+                   && exit_insert_mode == ABSENT_STRING) {
                    (void) strcpy(buffer, "ei=");
-                   goto catenate;
+                   WRAP_CONCAT;
+                   continue;
                }
            }
-
-           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) {
            if (tterm->Strings[i] != ABSENT_STRING
-            && i + 1 > num_strings)
+               && i + 1 > num_strings)
                num_strings = i + 1;
-           if (!VALID_STRING(tterm->Strings[i]))
+
+           if (!VALID_STRING(tterm->Strings[i])) {
                sprintf(buffer, "%s@", name);
-           else if (outform == F_TERMCAP || outform == F_TCONVERR)
-           {
-               char *srccap = _nc_tic_expand(tterm->Strings[i], FALSE, numbers);
+               WRAP_CONCAT;
+           } else if (outform == F_TERMCAP || outform == F_TCONVERR) {
+               char *srccap = _nc_tic_expand(tterm->Strings[i], TRUE, numbers);
                char *cv = _nc_infotocap(name, srccap, parametrized[i]);
 
-               if (cv == 0)
-               {
-                   if (outform == F_TCONVERR)
-                       sprintf(buffer, "%s=!!! %s WILL NOT CONVERT !!!", name, srccap);
-                   else if (suppress_untranslatable)
+               if (cv == 0) {
+                   if (outform == F_TCONVERR) {
+                       sprintf(buffer, "%s=!!! %s WILL NOT CONVERT !!!",
+                           name, srccap);
+                   } else if (suppress_untranslatable) {
                        continue;
-                   else
-                       sprintf(buffer, "..%s=%s", name, srccap);
-               }
-               else
+                   } else {
+                       char *s = srccap, *d = buffer;
+                       sprintf(d, "..%s=", name);
+                       d += strlen(d);
+                       while ((*d = *s++) != 0) {
+                           if (*d == ':') {
+                               *d++ = '\\';
+                               *d = ':';
+                           } else if (*d == '\\') {
+                               *++d = *s++;
+                           }
+                           d++;
+                       }
+                   }
+               } else {
                    sprintf(buffer, "%s=%s", name, cv);
+               }
                len += strlen(tterm->Strings[i]) + 1;
-           }
-           else
-           {
-               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);
+               WRAP_CONCAT;
+           } else {
+               char *src = _nc_tic_expand(tterm->Strings[i],
+                   outform == F_TERMINFO, numbers);
+
+               strcpy_DYN(&tmpbuf, 0);
+               strcpy_DYN(&tmpbuf, name);
+               strcpy_DYN(&tmpbuf, "=");
+               if (pretty
+                   && (outform == F_TERMINFO
+                       || outform == F_VARIABLE)) {
+                   fmt_complex(src, 1);
+               } else {
+                   strcpy_DYN(&tmpbuf, src);
+               }
                len += strlen(tterm->Strings[i]) + 1;
+               wrap_concat(tmpbuf.text);
+               outcount = TRUE;
            }
-
-       catenate:
-           WRAP_CONCAT;
        }
     }
     len += num_strings * 2;
@@ -644,46 +696,38 @@ bool      outcount = 0;
      * postprocess_terminfo and postprocess_terminfo in parse_entry.c.
      * Much more work should be done on this to support dumping termcaps.
      */
-    if (tversion == V_HPUX)
-    {
-       if (memory_lock)
-       {
+    if (tversion == V_HPUX) {
+       if (memory_lock) {
            (void) sprintf(buffer, "meml=%s", memory_lock);
            WRAP_CONCAT;
        }
-       if (memory_unlock)
-       {
+       if (memory_unlock) {
            (void) sprintf(buffer, "memu=%s", memory_unlock);
            WRAP_CONCAT;
        }
-    }
-    else if (tversion == V_AIX)
-    {
-       if (VALID_STRING(acs_chars))
-       {
-           bool        box_ok = TRUE;
-           const char  *acstrans = "lqkxjmwuvtn";
-           const char  *cp;
-           char        *tp, *sp, boxchars[11];
+    } else if (tversion == V_AIX) {
+       if (VALID_STRING(acs_chars)) {
+           bool box_ok = TRUE;
+           const char *acstrans = "lqkxjmwuvtn";
+           const char *cp;
+           char *tp, *sp, boxchars[11];
 
            tp = boxchars;
-           for (cp = acstrans; *cp; cp++)
-           {
+           for (cp = acstrans; *cp; cp++) {
                sp = strchr(acs_chars, *cp);
                if (sp)
                    *tp++ = sp[1];
-               else
-               {
+               else {
                    box_ok = FALSE;
                    break;
                }
            }
            tp[0] = '\0';
 
-           if (box_ok)
-           {
+           if (box_ok) {
                (void) strcpy(buffer, "box1=");
-               (void) strcat(buffer, _nc_tic_expand(boxchars, outform==F_TERMINFO, numbers));
+               (void) strcat(buffer, _nc_tic_expand(boxchars,
+                       outform == F_TERMINFO, numbers));
                WRAP_CONCAT;
            }
        }
@@ -693,30 +737,33 @@ bool      outcount = 0;
      * kludge: trim off trailer to avoid an extra blank line
      * in infocmp -u output when there are no string differences
      */
-    if (outcount)
-    {
-       j = out_used;
+    if (outcount) {
+       bool trimmed = FALSE;
+       j = outbuf.used;
        if (j >= 2
-        && outbuf[j-1] == '\t'
-        && outbuf[j-2] == '\n') {
-           out_used -= 2;
+           && outbuf.text[j - 1] == '\t'
+           && outbuf.text[j - 2] == '\n') {
+           outbuf.used -= 2;
+           trimmed = TRUE;
        } else if (j >= 4
-        && outbuf[j-1] == ':'
-        && outbuf[j-2] == '\t'
-        && outbuf[j-3] == '\n'
-        && outbuf[j-4] == '\\') {
-           out_used -= 4;
+               && outbuf.text[j - 1] == ':'
+               && outbuf.text[j - 2] == '\t'
+               && outbuf.text[j - 3] == '\n'
+           && outbuf.text[j - 4] == '\\') {
+           outbuf.used -= 4;
+           trimmed = TRUE;
+       }
+       if (trimmed) {
+           outbuf.text[outbuf.used] = '\0';
+           column = oldcol;
        }
-       outbuf[out_used] = '\0';
-       column = oldcol;
     }
-
 #if 0
     fprintf(stderr, "num_bools = %d\n", num_bools);
     fprintf(stderr, "num_values = %d\n", num_values);
     fprintf(stderr, "num_strings = %d\n", num_strings);
     fprintf(stderr, "term_names=%s, len=%d, strlen(outbuf)=%d, outbuf=%s\n",
-           tterm->term_names, len, out_used, outbuf);
+       tterm->term_names, len, outbuf.used, outbuf.text);
 #endif
     /*
      * Here's where we use infodump to trigger a more stringent length check
@@ -725,128 +772,137 @@ bool    outcount = 0;
      * It gives an idea of which entries are deadly to even *scan past*,
      * as opposed to *use*.
      */
-    return(infodump ? len : termcap_length(outbuf));
+    return (infodump ? len : termcap_length(outbuf.text));
 }
 
-int dump_entry(TERMTYPE *tterm, bool limited, int numbers, 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;
-    const char *legend;
-    bool       infodump;
+    int len, critlen;
+    const char *legend;
+    bool infodump;
 
-    if (outform==F_TERMCAP || outform==F_TCONVERR)
-    {
+    if (outform == F_TERMCAP || outform == F_TCONVERR) {
        critlen = MAX_TERMCAP_LENGTH;
        legend = "older termcap";
        infodump = FALSE;
        set_obsolete_termcaps(tterm);
-    }
-    else
-    {
+    } else {
        critlen = MAX_TERMINFO_LENGTH;
        legend = "terminfo";
        infodump = TRUE;
     }
 
-    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, numbers)) > critlen)
-       {
+    if (((len = fmt_entry(tterm, pred, FALSE, infodump, numbers)) > critlen)
+       && limited) {
+       PRINTF("# (untranslatable capabilities removed to fit entry within %d bytes)\n",
+           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.
+            * is really just an optimization hack.  Another good candidate is
+            * acsc since it is both long and unused by BSD termcap.
             */
            char *oldsgr = set_attributes;
+           char *oldacsc = acs_chars;
            set_attributes = ABSENT_STRING;
-           (void) printf("# (sgr removed to fit entry within %d bytes)\n",
-                         critlen);
-           if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers)) > critlen)
-           {
+           PRINTF("# (sgr removed to fit entry within %d bytes)\n",
+               critlen);
+           if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers)) > critlen) {
+               acs_chars = ABSENT_STRING;
+               PRINTF("# (acsc removed to fit entry within %d bytes)\n",
+                   critlen);
+           }
+           if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers)) > critlen) {
                int oldversion = tversion;
 
                tversion = V_BSD;
-               (void) printf("# (terminfo-only capabilities suppressed to fit entry within %d bytes)\n",
-                             critlen);
+               PRINTF("# (terminfo-only capabilities suppressed to fit entry within %d bytes)\n",
+                   critlen);
 
-               if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers)) > critlen)
-               {
+               if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers))
+                   > critlen) {
                    (void) fprintf(stderr,
-                              "warning: %s entry is %d bytes long\n",
-                              _nc_first_name(tterm->term_names),
-                              len);
-                   (void) printf(
-                             "# WARNING: this entry, %d bytes long, may core-dump %s libraries!\n",
-                             len, legend);
+                       "warning: %s entry is %d bytes long\n",
+                       _nc_first_name(tterm->term_names),
+                       len);
+                   PRINTF(
+                       "# WARNING: this entry, %d bytes long, may core-dump %s libraries!\n",
+                       len, legend);
                }
                tversion = oldversion;
            }
            set_attributes = oldsgr;
+           acs_chars = oldacsc;
        }
     }
 
-    (void) fputs(outbuf, stdout);
+    (void) fputs(outbuf.text, stdout);
     return len;
 }
 
-int dump_uses(const char *name, bool infodump)
+int
+dump_uses(const char *name, bool infodump)
 /* dump "use=" clauses in the appropriate format */
 {
     char buffer[MAX_TERMINFO_LENGTH];
 
-    append_output(0);
-    (void)sprintf(buffer, "%s%s", infodump ? "use=" : "tc=", name);
+    strcpy_DYN(&outbuf, 0);
+    (void) sprintf(buffer, "%s%s", infodump ? "use=" : "tc=", name);
     wrap_concat(buffer);
-    (void) fputs(outbuf, stdout);
-    return out_used;
+    (void) fputs(outbuf.text, stdout);
+    return outbuf.used;
 }
 
-void compare_entry(void (*hook)(int t, int i, const char *name), TERMTYPE *tp GCC_UNUSED)
+void
+compare_entry(void (*hook) (int t, int i, const char *name), TERMTYPE * tp
+    GCC_UNUSED, bool quiet)
 /* compare two entries */
 {
-    int        i, j;
-    NCURSES_CONST char * name;
+    int i, j;
+    NCURSES_CONST char *name;
 
-    (void) fputs("    comparing booleans.\n", stdout);
-    for_each_boolean(j,tp)
-    {
+    if (!quiet)
+       fputs("    comparing booleans.\n", stdout);
+    for_each_boolean(j, tp) {
        i = BoolIndirect(j);
-       name = ExtBoolname(tp,i,bool_names);
+       name = ExtBoolname(tp, i, bool_names);
 
-       if ((outform == F_LITERAL || outform == F_TERMINFO || outform == F_VARIABLE)
-                && (OBSOLETE(name) && outform != F_LITERAL))
+       if (isObsolete(outform, name))
            continue;
 
-       (*hook)(BOOLEAN, i, name);
+       (*hook) (CMP_BOOLEAN, i, name);
     }
 
-    (void) fputs("    comparing numbers.\n", stdout);
-    for_each_number(j,tp)
-    {
+    if (!quiet)
+       fputs("    comparing numbers.\n", stdout);
+    for_each_number(j, tp) {
        i = NumIndirect(j);
-       name = ExtNumname(tp,i,num_names);
+       name = ExtNumname(tp, i, num_names);
 
-       if ((outform==F_LITERAL || outform==F_TERMINFO || outform==F_VARIABLE)
-                && (OBSOLETE(name) && outform != F_LITERAL))
+       if (isObsolete(outform, name))
            continue;
 
-       (*hook)(NUMBER, i, name);
+       (*hook) (CMP_NUMBER, i, name);
     }
 
-    (void) fputs("    comparing strings.\n", stdout);
-    for_each_string(j,tp)
-    {
+    if (!quiet)
+       fputs("    comparing strings.\n", stdout);
+    for_each_string(j, tp) {
        i = StrIndirect(j);
-       name = ExtStrname(tp,i,str_names);
+       name = ExtStrname(tp, i, str_names);
 
-       if ((outform==F_LITERAL || outform==F_TERMINFO || outform==F_VARIABLE)
-                && (OBSOLETE(name) && outform != F_LITERAL))
+       if (isObsolete(outform, name))
            continue;
 
-       (*hook)(STRING, i, name);
+       (*hook) (CMP_STRING, i, name);
     }
+
+    /* (void) fputs("    comparing use entries.\n", stdout); */
+    (*hook) (CMP_USE, 0, "use");
+
 }
 
 #define NOTSET(s)      ((s) == 0)
@@ -859,7 +915,8 @@ void compare_entry(void (*hook)(int t, int i, const char *name), TERMTYPE *tp GC
 #undef CUR
 #define CUR tp->
 
-static void set_obsolete_termcaps(TERMTYPE *tp)
+static void
+set_obsolete_termcaps(TERMTYPE * tp)
 {
 #include "capdefaults.c"
 }
@@ -868,46 +925,47 @@ static void set_obsolete_termcaps(TERMTYPE *tp)
  * Convert an alternate-character-set string to canonical form: sorted and
  * unique.
  */
-static void repair_acsc(TERMTYPE *tp)
+void
+repair_acsc(TERMTYPE * tp)
 {
-       if (VALID_STRING(acs_chars)) {
-           size_t n, m;
-           char mapped[256];
-           char extra = 0;
-           unsigned source;
-           unsigned target;
-           bool fix_needed = FALSE;
-
-           for (n = 0, source = 0; acs_chars[n] != 0; n++) {
-               target = acs_chars[n];
-               if (source >= target) {
-                   fix_needed = TRUE;
-                   break;
-               }
-               source = target;
-               if (acs_chars[n+1])
-                   n++;
+    if (VALID_STRING(acs_chars)) {
+       size_t n, m;
+       char mapped[256];
+       char extra = 0;
+       unsigned source;
+       unsigned target;
+       bool fix_needed = FALSE;
+
+       for (n = 0, source = 0; acs_chars[n] != 0; n++) {
+           target = acs_chars[n];
+           if (source >= target) {
+               fix_needed = TRUE;
+               break;
            }
-           if (fix_needed) {
-               memset(mapped, 0, sizeof(mapped));
-               for (n = 0; acs_chars[n] != 0; n++) {
-                   source = acs_chars[n];
-                   if ((target = (unsigned char)acs_chars[n+1]) != 0) {
-                       mapped[source] = target;
-                       n++;
-                   } else {
-                       extra = source;
-                   }
+           source = target;
+           if (acs_chars[n + 1])
+               n++;
+       }
+       if (fix_needed) {
+           memset(mapped, 0, sizeof(mapped));
+           for (n = 0; acs_chars[n] != 0; n++) {
+               source = acs_chars[n];
+               if ((target = (unsigned char) acs_chars[n + 1]) != 0) {
+                   mapped[source] = target;
+                   n++;
+               } else {
+                   extra = source;
                }
-               for (n = m = 0; n < sizeof(mapped); n++) {
-                   if (mapped[n]) {
-                       acs_chars[m++] = n;
-                       acs_chars[m++] = mapped[n];
-                   }
+           }
+           for (n = m = 0; n < sizeof(mapped); n++) {
+               if (mapped[n]) {
+                   acs_chars[m++] = n;
+                   acs_chars[m++] = mapped[n];
                }
-               if (extra)
-                   acs_chars[m++] = extra;     /* garbage in, garbage out */
-               acs_chars[m] = 0;
            }
+           if (extra)
+               acs_chars[m++] = extra;         /* garbage in, garbage out */
+           acs_chars[m] = 0;
        }
+    }
 }
index d7e27c53f667465bd1a9f84898b8dbef8a6d9b39..57354702840ccc36e2fb77be12ea5be98bf02585 100644 (file)
 #define S_VARIABLE     3       /* sort by C variable names */
 #define S_TERMCAP      4       /* sort by termcap names */
 
+/* capability types for the comparison hook */
+#define CMP_BOOLEAN    0       /* comparison on booleans */
+#define CMP_NUMBER     1       /* comparison on numerics */
+#define CMP_STRING     2       /* comparison on strings */
+#define CMP_USE                3       /* comparison on use capabilities */
+
 extern NCURSES_CONST char *nametrans(const char *);
 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 *), TERMTYPE *);
+extern void compare_entry(void (*)(int, int, const char *), TERMTYPE *, bool);
+extern void repair_acsc(TERMTYPE * tp);
 
 #define FAIL   -1
index 5965224085154dba62b640f5fd9c4e908772da9a..add5efb9b4d09030c9c79451b0cfe62379f7ac5f 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc.                   *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*
  *     infocmp.c -- decompile an entry, or compare two entries
  *             written by Eric S. Raymond
 #include <term_entry.h>
 #include <dump_entry.h>
 
-MODULE_ID("$Id: infocmp.c,v 1.44 1999/06/16 00:39:48 tom Exp $")
+MODULE_ID("$Id: infocmp.c,v 1.54 2000/03/19 02:56:14 tom Exp $")
 
 #define L_CURL "{"
 #define R_CURL "}"
 
 #define MAXTERMS       32      /* max # terminal arguments we can handle */
+#define MAX_STRING     1024    /* maximum formatted string */
 
 const char *_nc_progname = "infocmp";
 
-typedef char   path[PATH_MAX];
+typedef char path[PATH_MAX];
 
 /***************************************************************************
  *
@@ -61,15 +61,20 @@ typedef char        path[PATH_MAX];
  ***************************************************************************/
 
 static char *tname[MAXTERMS];  /* terminal type names */
-static TERMTYPE term[MAXTERMS];        /* terminfo entries */
+static ENTRY entries[MAXTERMS];        /* terminfo entries */
 static int termcount;          /* count of terminal entries */
 
+static bool limited = TRUE;    /* "-r" option is not set */
+static bool quiet = FALSE;
+static const char *bool_sep = ":";
+static const char *s_absent = "NULL";
+static const char *s_cancel = "NULL";
 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 */
 static int mwidth = 60;
+static int numbers = 0;                /* format "%'char'" to/from "%{number}" */
+static int outform = F_TERMINFO;/* output format */
+static int sortmode;           /* sort_mode */
 
 /* main comparison mode */
 static int compare;
@@ -82,26 +87,30 @@ static bool ignorepads;             /* ignore pad prefixes when diffing */
 
 #if NO_LEAKS
 #undef ExitProgram
-static void ExitProgram(int code) GCC_NORETURN;
-static void ExitProgram(int code)
+static void
+ExitProgram(int code) GCC_NORETURN;
+/* prototype is to get gcc to accept the noreturn attribute */
+static void
+ExitProgram(int code)
 {
-       while (termcount-- > 0)
-               _nc_free_termtype(&term[termcount]);
-       _nc_leaks_dump_entry();
-       _nc_free_and_exit(code);
+    while (termcount-- > 0)
+       _nc_free_termtype(&entries[termcount].tterm);
+    _nc_leaks_dump_entry();
+    _nc_free_and_exit(code);
 }
 #endif
 
-static char *canonical_name(char *ptr, char *buf)
+static char *
+canonical_name(char *ptr, char *buf)
 /* extract the terminal type's primary name */
 {
-    char       *bp;
+    char *bp;
 
     (void) strcpy(buf, ptr);
-    if ((bp = strchr(buf, '|')) != (char *)NULL)
+    if ((bp = strchr(buf, '|')) != 0)
        *bp = '\0';
 
-    return(buf);
+    return (buf);
 }
 
 /***************************************************************************
@@ -110,220 +119,330 @@ static char *canonical_name(char *ptr, char *buf)
  *
  ***************************************************************************/
 
-static int capcmp(const char *s, const char *t)
+static int
+capcmp(int idx, const char *s, const char *t)
 /* capability comparison function */
 {
     if (!VALID_STRING(s) && !VALID_STRING(t))
-       return(0);
+       return (s != t);
     else if (!VALID_STRING(s) || !VALID_STRING(t))
-       return(1);
+       return (1);
 
-    if (ignorepads)
-       return(_nc_capcmp(s, t));
+    if ((idx == acs_chars_index) || !ignorepads)
+       return (strcmp(s, t));
     else
-       return(strcmp(s, t));
+       return (_nc_capcmp(s, t));
 }
 
-static int use_predicate(int type, int idx)
+static int
+use_predicate(int type, int idx)
 /* predicate function to use for use decompilation */
 {
-       TERMTYPE *tp;
+    ENTRY *ep;
 
-       switch(type)
+    switch (type) {
+    case BOOLEAN:
        {
-       case BOOLEAN: {
-               int is_set = FALSE;
+           int is_set = FALSE;
 
-               /*
-                * This assumes that multiple use entries are supposed
-                * to contribute the logical or of their boolean capabilities.
-                * This is true if we take the semantics of multiple uses to
-                * be 'each capability gets the first non-default value found
-                * in the sequence of use entries'.
-                */
-               for (tp = &term[1]; tp < term + termcount; tp++)
-                       if (tp->Booleans[idx]) {
-                               is_set = TRUE;
-                               break;
-                       }
-                       if (is_set != term->Booleans[idx])
-                               return(!is_set);
-                       else
-                               return(FAIL);
+           /*
+            * This assumes that multiple use entries are supposed
+            * to contribute the logical or of their boolean capabilities.
+            * This is true if we take the semantics of multiple uses to
+            * be 'each capability gets the first non-default value found
+            * in the sequence of use entries'.
+            *
+            * Note that cancelled or absent booleans are stored as FALSE,
+            * unlike numbers and strings, whose cancelled/absent state is
+            * recorded in the terminfo database.
+            */
+           for (ep = &entries[1]; ep < entries + termcount; ep++)
+               if (ep->tterm.Booleans[idx] == TRUE) {
+                   is_set = entries[0].tterm.Booleans[idx];
+                   break;
                }
+           if (is_set != entries[0].tterm.Booleans[idx])
+               return (!is_set);
+           else
+               return (FAIL);
+       }
 
-       case NUMBER: {
-               int     value = ABSENT_NUMERIC;
+    case NUMBER:
+       {
+           int value = ABSENT_NUMERIC;
 
-               /*
-                * We take the semantics of multiple uses to be 'each
-                * capability gets the first non-default value found
-                * in the sequence of use entries'.
-                */
-               for (tp = &term[1]; tp < term + termcount; tp++)
-                       if (tp->Numbers[idx] >= 0) {
-                               value = tp->Numbers[idx];
-                               break;
-                       }
-
-               if (value != term->Numbers[idx])
-                       return(value != ABSENT_NUMERIC);
-               else
-                       return(FAIL);
+           /*
+            * We take the semantics of multiple uses to be 'each
+            * capability gets the first non-default value found
+            * in the sequence of use entries'.
+            */
+           for (ep = &entries[1]; ep < entries + termcount; ep++)
+               if (VALID_NUMERIC(ep->tterm.Numbers[idx])) {
+                   value = ep->tterm.Numbers[idx];
+                   break;
+               }
+
+           if (value != entries[0].tterm.Numbers[idx])
+               return (value != ABSENT_NUMERIC);
+           else
+               return (FAIL);
+       }
+
+    case STRING:
+       {
+           char *termstr, *usestr = ABSENT_STRING;
+
+           termstr = entries[0].tterm.Strings[idx];
+
+           /*
+            * We take the semantics of multiple uses to be 'each
+            * capability gets the first non-default value found
+            * in the sequence of use entries'.
+            */
+           for (ep = &entries[1]; ep < entries + termcount; ep++)
+               if (ep->tterm.Strings[idx]) {
+                   usestr = ep->tterm.Strings[idx];
+                   break;
                }
 
-       case STRING: {
-               char *termstr, *usestr = ABSENT_STRING;
+           if (usestr == ABSENT_STRING && termstr == ABSENT_STRING)
+               return (FAIL);
+           else if (!usestr || !termstr || capcmp(idx, usestr, termstr))
+               return (TRUE);
+           else
+               return (FAIL);
+       }
+    }
 
-               termstr = term->Strings[idx];
+    return (FALSE);            /* pacify compiler */
+}
 
-               /*
-                * We take the semantics of multiple uses to be 'each
-                * capability gets the first non-default value found
-                * in the sequence of use entries'.
-                */
-               for (tp = &term[1]; tp < term + termcount; tp++)
-                       if (tp->Strings[idx])
-                       {
-                               usestr = tp->Strings[idx];
-                               break;
-                       }
-
-               if (usestr == ABSENT_STRING && termstr == ABSENT_STRING)
-                       return(FAIL);
-               else if (!usestr || !termstr || capcmp(usestr, termstr))
-                       return(TRUE);
-               else
-                       return(FAIL);
+static bool
+useeq(ENTRY * e1, ENTRY * e2)
+/* are the use references in two entries equivalent? */
+{
+    int i, j;
+
+    if (e1->nuses != e2->nuses)
+       return (FALSE);
+
+    /* Ugh...this is quadratic again */
+    for (i = 0; i < e1->nuses; i++) {
+       bool foundmatch = FALSE;
+
+       /* search second entry for given use reference */
+       for (j = 0; j < e2->nuses; j++)
+           if (!strcmp(e1->uses[i].name, e2->uses[j].name)) {
+               foundmatch = TRUE;
+               break;
            }
-       }
 
-       return(FALSE);  /* pacify compiler */
+       if (!foundmatch)
+           return (FALSE);
+    }
+
+    return (TRUE);
 }
 
-static bool entryeq(TERMTYPE *t1, TERMTYPE *t2)
-/* are two terminal types equal */
+static bool
+entryeq(TERMTYPE * t1, TERMTYPE * t2)
+/* are two entries equivalent? */
 {
-    int        i;
+    int i;
 
     for (i = 0; i < NUM_BOOLEANS(t1); i++)
        if (t1->Booleans[i] != t2->Booleans[i])
-           return(FALSE);
+           return (FALSE);
 
     for (i = 0; i < NUM_NUMBERS(t1); i++)
        if (t1->Numbers[i] != t2->Numbers[i])
-           return(FALSE);
+           return (FALSE);
 
     for (i = 0; i < NUM_STRINGS(t1); i++)
-       if (capcmp(t1->Strings[i], t2->Strings[i]))
-           return(FALSE);
+       if (capcmp(i, t1->Strings[i], t2->Strings[i]))
+           return (FALSE);
 
-    return(TRUE);
+    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 */
+static void
+print_uses(ENTRY * ep, FILE * fp)
+/* print an entry's use references */
 {
-       register TERMTYPE *t1 = &term[0];
-       register TERMTYPE *t2 = &term[1];
-       char *s1, *s2;
+    int i;
 
-       switch(type)
-       {
-       case BOOLEAN:
-               switch(compare)
-               {
-               case C_DIFFERENCE:
-                       if (t1->Booleans[idx] != t2->Booleans[idx])
-                       (void) printf("\t%s: %c:%c.\n",
-                                         name,
-                                         t1->Booleans[idx] ? 'T' : 'F',
-                                         t2->Booleans[idx] ? 'T' : 'F');
-                       break;
+    if (!ep->nuses)
+       fputs("NULL", fp);
+    else
+       for (i = 0; i < ep->nuses; i++) {
+           fputs(ep->uses[i].name, fp);
+           if (i < ep->nuses - 1)
+               fputs(" ", fp);
+       }
+}
 
-               case C_COMMON:
-                       if (t1->Booleans[idx] && t2->Booleans[idx])
-                       (void) printf("\t%s= T.\n", name);
-                       break;
+static const char *
+dump_boolean(int val)
+/* display the value of a boolean capability */
+{
+    switch (val) {
+    case ABSENT_BOOLEAN:
+       return (s_absent);
+    case CANCELLED_BOOLEAN:
+       return (s_cancel);
+    case FALSE:
+       return ("F");
+    case TRUE:
+       return ("T");
+    default:
+       return ("?");
+    }
+}
 
-               case C_NAND:
-                       if (!t1->Booleans[idx] && !t2->Booleans[idx])
-                       (void) printf("\t!%s.\n", name);
-                       break;
-               }
-               break;
+static void
+dump_numeric(int val, char *buf)
+/* display the value of a boolean capability */
+{
+    switch (val) {
+    case ABSENT_NUMERIC:
+       strcpy(buf, s_absent);
+       break;
+    case CANCELLED_NUMERIC:
+       strcpy(buf, s_cancel);
+       break;
+    default:
+       sprintf(buf, "%d", val);
+       break;
+    }
+}
 
-       case NUMBER:
-               switch(compare)
-               {
-               case C_DIFFERENCE:
-                       if (t1->Numbers[idx] != t2->Numbers[idx])
-                       (void) printf("\t%s: %d:%d.\n",
-                                         name, t1->Numbers[idx], t2->Numbers[idx]);
-                       break;
+static void
+dump_string(char *val, char *buf)
+/* display the value of a string capability */
+{
+    if (val == ABSENT_STRING)
+       strcpy(buf, s_absent);
+    else if (val == CANCELLED_STRING)
+       strcpy(buf, s_cancel);
+    else {
+       sprintf(buf, "'%.*s'", MAX_STRING - 3, TIC_EXPAND(val));
+    }
+}
 
-               case C_COMMON:
-                       if (t1->Numbers[idx]!=-1 && t2->Numbers[idx]!=-1
-                               && t1->Numbers[idx] == t2->Numbers[idx])
-                       (void) printf("\t%s= %d.\n", name, t1->Numbers[idx]);
-                       break;
+static void
+compare_predicate(int type, int idx, const char *name)
+/* predicate function to use for entry difference reports */
+{
+    register ENTRY *e1 = &entries[0];
+    register ENTRY *e2 = &entries[1];
+    char buf1[MAX_STRING], buf2[MAX_STRING];
+    int b1, b2;
+    int n1, n2;
+    char *s1, *s2;
+
+    switch (type) {
+    case CMP_BOOLEAN:
+       b1 = e1->tterm.Booleans[idx];
+       b2 = e2->tterm.Booleans[idx];
+       switch (compare) {
+       case C_DIFFERENCE:
+           if (!(b1 == ABSENT_BOOLEAN && b2 == ABSENT_BOOLEAN) && b1 != b2)
+               (void) printf("\t%s: %s%s%s.\n",
+                   name,
+                   dump_boolean(b1),
+                   bool_sep,
+                   dump_boolean(b2));
+           break;
 
-               case C_NAND:
-                       if (t1->Numbers[idx]==-1 && t2->Numbers[idx] == -1)
-                       (void) printf("\t!%s.\n", name);
-                       break;
-               }
+       case C_COMMON:
+           if (b1 == b2 && b1 != ABSENT_BOOLEAN)
+               (void) printf("\t%s= %s.\n", name, dump_boolean(b1));
+           break;
+
+       case C_NAND:
+           if (b1 == ABSENT_BOOLEAN && b2 == ABSENT_BOOLEAN)
+               (void) printf("\t!%s.\n", name);
+           break;
+       }
        break;
 
-       case STRING:
-               s1 = t1->Strings[idx];
-               s2 = t2->Strings[idx];
-               switch(compare)
-               {
-               case C_DIFFERENCE:
-                       if (capcmp(s1, s2))
-                       {
-                               char    buf1[BUFSIZ], buf2[BUFSIZ];
-
-                               if (s1 == (char *)NULL)
-                                       (void) strcpy(buf1, "NULL");
-                               else
-                               {
-                                       (void) strcpy(buf1, "'");
-                                       (void) strcat(buf1, TIC_EXPAND(s1));
-                                       (void) strcat(buf1, "'");
-                               }
-
-                               if (s2 == (char *)NULL)
-                                       (void) strcpy(buf2, "NULL");
-                               else
-                               {
-                                       (void) strcpy(buf2, "'");
-                                       (void) strcat(buf2, TIC_EXPAND(s2));
-                                       (void) strcat(buf2, "'");
-                               }
-
-                               if (strcmp(buf1, buf2))
-                                       (void) printf("\t%s: %s, %s.\n",
-                                                     name, buf1, buf2);
-                       }
-                       break;
+    case CMP_NUMBER:
+       n1 = e1->tterm.Numbers[idx];
+       n2 = e2->tterm.Numbers[idx];
+       dump_numeric(n1, buf1);
+       dump_numeric(n2, buf2);
+       switch (compare) {
+       case C_DIFFERENCE:
+           if (!((n1 == ABSENT_NUMERIC && n2 == ABSENT_NUMERIC)) && n1 != n2)
+               (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, TIC_EXPAND(s1));
-                       break;
+       case C_COMMON:
+           if (n1 != ABSENT_NUMERIC && n2 != ABSENT_NUMERIC && n1 == n2)
+               (void) printf("\t%s= %s.\n", name, buf1);
+           break;
 
-               case C_NAND:
-                       if (!s1 && !s2)
-                               (void) printf("\t!%s.\n", name);
-                       break;
-               }
-               break;
+       case C_NAND:
+           if (n1 == ABSENT_NUMERIC && n2 == ABSENT_NUMERIC)
+               (void) printf("\t!%s.\n", name);
+           break;
+       }
+       break;
+
+    case CMP_STRING:
+       s1 = e1->tterm.Strings[idx];
+       s2 = e2->tterm.Strings[idx];
+       switch (compare) {
+       case C_DIFFERENCE:
+           if (capcmp(idx, s1, s2)) {
+               dump_string(s1, buf1);
+               dump_string(s2, buf2);
+               if (strcmp(buf1, buf2))
+                   (void) printf("\t%s: %s, %s.\n", name, buf1, buf2);
+           }
+           break;
+
+       case C_COMMON:
+           if (s1 && s2 && !capcmp(idx, s1, s2))
+               (void) printf("\t%s= '%s'.\n", name, TIC_EXPAND(s1));
+           break;
+
+       case C_NAND:
+           if (!s1 && !s2)
+               (void) printf("\t!%s.\n", name);
+           break;
        }
+       break;
 
+    case CMP_USE:
+       /* unlike the other modes, this compares *all* use entries */
+       switch (compare) {
+       case C_DIFFERENCE:
+           if (!useeq(e1, e2)) {
+               (void) fputs("\tuse: ", stdout);
+               print_uses(e1, stdout);
+               fputs(", ", stdout);
+               print_uses(e2, stdout);
+               fputs(".\n", stdout);
+           }
+           break;
+
+       case C_COMMON:
+           if (e1->nuses && e2->nuses && useeq(e1, e2)) {
+               (void) fputs("\tuse: ", stdout);
+               print_uses(e1, stdout);
+               fputs(".\n", stdout);
+           }
+           break;
+
+       case C_NAND:
+           if (!e1->nuses && !e2->nuses)
+               (void) printf("\t!use.\n");
+           break;
+       }
+    }
 }
 
 /***************************************************************************
@@ -332,114 +451,115 @@ static void compare_predicate(int type, int idx, const char *name)
  *
  ***************************************************************************/
 
-typedef struct {const char *from; const char *to;} assoc;
+typedef struct {
+    const char *from;
+    const char *to;
+} assoc;
 
 static const assoc std_caps[] =
 {
     /* these are specified by X.364 and iBCS2 */
-    {"\033c",  "RIS"},         /* full reset */
-    {"\0337",  "SC"},          /* save cursor */
-    {"\0338",  "RC"},          /* restore cursor */
-    {"\033[r", "RSR"},         /* not an X.364 mnemonic */
-    {"\033[m", "SGR0"},        /* not an X.364 mnemonic */
-    {"\033[2J",        "ED2"},         /* clear page */
+    {"\033c", "RIS"},          /* full reset */
+    {"\0337", "SC"},           /* save cursor */
+    {"\0338", "RC"},           /* restore cursor */
+    {"\033[r", "RSR"},         /* not an X.364 mnemonic */
+    {"\033[m", "SGR0"},                /* not an X.364 mnemonic */
+    {"\033[2J", "ED2"},                /* clear page */
 
     /* this group is specified by ISO 2022 */
-    {"\033(0", "ISO DEC G0"},  /* enable DEC graphics for G0 */
-    {"\033(A", "ISO UK G0"},   /* enable UK chars for G0 */
-    {"\033(B", "ISO US G0"},   /* enable US chars for G0 */
-    {"\033)0", "ISO DEC G1"},  /* enable DEC graphics for G1 */
-    {"\033)A", "ISO UK G1"},   /* enable UK chars for G1 */
-    {"\033)B", "ISO US G1"},   /* enable US chars for G1 */
+    {"\033(0", "ISO DEC G0"},  /* enable DEC graphics for G0 */
+    {"\033(A", "ISO UK G0"},   /* enable UK chars for G0 */
+    {"\033(B", "ISO US G0"},   /* enable US chars for G0 */
+    {"\033)0", "ISO DEC G1"},  /* enable DEC graphics for G1 */
+    {"\033)A", "ISO UK G1"},   /* enable UK chars for G1 */
+    {"\033)B", "ISO US G1"},   /* enable US chars for G1 */
 
     /* these are DEC private modes widely supported by emulators */
-    {"\033=",  "DECPAM"},      /* application keypad mode */
-    {"\033>",  "DECPNM"},      /* normal keypad mode */
-    {"\033<",  "DECANSI"},     /* enter ANSI mode */
+    {"\033=", "DECPAM"},       /* application keypad mode */
+    {"\033>", "DECPNM"},       /* normal keypad mode */
+    {"\033<", "DECANSI"},      /* enter ANSI mode */
 
-    { (char *)0, (char *)0}
+    {(char *) 0, (char *) 0}
 };
 
 static const assoc private_modes[] =
 /* DEC \E[ ... [hl] modes recognized by many emulators */
 {
-    {"1",      "CKM"},         /* application cursor keys */
-    {"2",      "ANM"},         /* set VT52 mode */
-    {"3",      "COLM"},        /* 132-column mode */
-    {"4",      "SCLM"},        /* smooth scroll */
-    {"5",      "SCNM"},        /* reverse video mode */
-    {"6",      "OM"},          /* origin mode */
-    {"7",      "AWM"},         /* wraparound mode */
-    {"8",      "ARM"},         /* auto-repeat mode */
-    {(char *)0, (char *)0}
+    {"1", "CKM"},              /* application cursor keys */
+    {"2", "ANM"},              /* set VT52 mode */
+    {"3", "COLM"},             /* 132-column mode */
+    {"4", "SCLM"},             /* smooth scroll */
+    {"5", "SCNM"},             /* reverse video mode */
+    {"6", "OM"},               /* origin mode */
+    {"7", "AWM"},              /* wraparound mode */
+    {"8", "ARM"},              /* auto-repeat mode */
+    {(char *) 0, (char *) 0}
 };
 
 static const assoc ecma_highlights[] =
 /* recognize ECMA attribute sequences */
 {
-    {"0",      "NORMAL"},      /* normal */
-    {"1",      "+BOLD"},       /* bold on */
-    {"2",      "+DIM"},        /* dim on */
-    {"3",      "+ITALIC"},     /* italic on */
-    {"4",      "+UNDERLINE"},  /* underline on */
-    {"5",      "+BLINK"},      /* blink on */
-    {"6",      "+FASTBLINK"},  /* fastblink on */
-    {"7",      "+REVERSE"},    /* reverse on */
-    {"8",      "+INVISIBLE"},  /* invisible on */
-    {"9",      "+DELETED"},    /* deleted on */
-    {"10",     "MAIN-FONT"},   /* select primary font */
-    {"11",     "ALT-FONT-1"},  /* select alternate font 1 */
-    {"12",     "ALT-FONT-2"},  /* select alternate font 2 */
-    {"13",     "ALT-FONT-3"},  /* select alternate font 3 */
-    {"14",     "ALT-FONT-4"},  /* select alternate font 4 */
-    {"15",     "ALT-FONT-5"},  /* select alternate font 5 */
-    {"16",     "ALT-FONT-6"},  /* select alternate font 6 */
-    {"17",     "ALT-FONT-7"},  /* select alternate font 7 */
-    {"18",     "ALT-FONT-1"},  /* select alternate font 1 */
-    {"19",     "ALT-FONT-1"},  /* select alternate font 1 */
-    {"20",     "FRAKTUR"},     /* Fraktur font */
-    {"21",     "DOUBLEUNDER"}, /* double underline */
-    {"22",     "-DIM"},        /* dim off */
-    {"23",     "-ITALIC"},     /* italic off */
-    {"24",     "-UNDERLINE"},  /* underline off */
-    {"25",     "-BLINK"},      /* blink off */
-    {"26",     "-FASTBLINK"},  /* fastblink off */
-    {"27",     "-REVERSE"},    /* reverse off */
-    {"28",     "-INVISIBLE"},  /* invisible off */
-    {"29",     "-DELETED"},    /* deleted off */
-    {(char *)0, (char *)0}
+    {"0", "NORMAL"},           /* normal */
+    {"1", "+BOLD"},            /* bold on */
+    {"2", "+DIM"},             /* dim on */
+    {"3", "+ITALIC"},          /* italic on */
+    {"4", "+UNDERLINE"},       /* underline on */
+    {"5", "+BLINK"},           /* blink on */
+    {"6", "+FASTBLINK"},       /* fastblink on */
+    {"7", "+REVERSE"},         /* reverse on */
+    {"8", "+INVISIBLE"},       /* invisible on */
+    {"9", "+DELETED"},         /* deleted on */
+    {"10", "MAIN-FONT"},       /* select primary font */
+    {"11", "ALT-FONT-1"},      /* select alternate font 1 */
+    {"12", "ALT-FONT-2"},      /* select alternate font 2 */
+    {"13", "ALT-FONT-3"},      /* select alternate font 3 */
+    {"14", "ALT-FONT-4"},      /* select alternate font 4 */
+    {"15", "ALT-FONT-5"},      /* select alternate font 5 */
+    {"16", "ALT-FONT-6"},      /* select alternate font 6 */
+    {"17", "ALT-FONT-7"},      /* select alternate font 7 */
+    {"18", "ALT-FONT-1"},      /* select alternate font 1 */
+    {"19", "ALT-FONT-1"},      /* select alternate font 1 */
+    {"20", "FRAKTUR"},         /* Fraktur font */
+    {"21", "DOUBLEUNDER"},     /* double underline */
+    {"22", "-DIM"},            /* dim off */
+    {"23", "-ITALIC"},         /* italic off */
+    {"24", "-UNDERLINE"},      /* underline off */
+    {"25", "-BLINK"},          /* blink off */
+    {"26", "-FASTBLINK"},      /* fastblink off */
+    {"27", "-REVERSE"},                /* reverse off */
+    {"28", "-INVISIBLE"},      /* invisible off */
+    {"29", "-DELETED"},                /* deleted off */
+    {(char *) 0, (char *) 0}
 };
 
-static void analyze_string(const char *name, const char *cap, TERMTYPE *tp)
+static void
+analyze_string(const char *name, const char *cap, TERMTYPE * tp)
 {
-    char       buf[MAX_TERMINFO_LENGTH];
-    char       buf2[MAX_TERMINFO_LENGTH];
-    const char *sp, *ep;
-    const assoc        *ap;
+    char buf[MAX_TERMINFO_LENGTH];
+    char buf2[MAX_TERMINFO_LENGTH];
+    const char *sp, *ep;
+    const assoc *ap;
 
     if (cap == ABSENT_STRING || cap == CANCELLED_STRING)
        return;
     (void) printf("%s: ", name);
 
     buf[0] = '\0';
-    for (sp = cap; *sp; sp++)
-    {
-       int     i;
-       size_t  len = 0;
+    for (sp = cap; *sp; sp++) {
+       int i;
+       size_t len = 0;
        const char *expansion = 0;
 
        /* first, check other capabilities in this entry */
-       for (i = 0; i < STRCOUNT; i++)
-       {
-           char        *cp = tp->Strings[i];
+       for (i = 0; i < STRCOUNT; i++) {
+           char *cp = tp->Strings[i];
 
            /* don't use soft-key capabilities */
            if (strnames[i][0] == 'k' && strnames[i][0] == 'f')
                continue;
 
-
-           if (cp != ABSENT_STRING && cp != CANCELLED_STRING && cp[0] && cp != cap)
-           {
+           if (cp != ABSENT_STRING && cp != CANCELLED_STRING && cp[0] && cp
+               != cap) {
                len = strlen(cp);
                (void) strncpy(buf2, sp, len);
                buf2[len] = '\0';
@@ -467,12 +587,10 @@ static void analyze_string(const char *name, const char *cap, TERMTYPE *tp)
 
        /* now check the standard capabilities */
        if (!expansion)
-           for (ap = std_caps; ap->from; ap++)
-           {
+           for (ap = std_caps; ap->from; ap++) {
                len = strlen(ap->from);
 
-               if (strncmp(ap->from, sp, len) == 0)
-               {
+               if (strncmp(ap->from, sp, len) == 0) {
                    expansion = ap->to;
                    break;
                }
@@ -480,11 +598,10 @@ static void analyze_string(const char *name, const char *cap, TERMTYPE *tp)
 
        /* now check for private-mode sequences */
        if (!expansion
-                   && sp[0] == '\033' && sp[1] == '[' && sp[2] == '?'
-                   && (len = strspn(sp + 3, "0123456789;"))
-                   && ((sp[3 + len] == 'h') || (sp[3 + len] == 'l')))
-       {
-           char        buf3[MAX_TERMINFO_LENGTH];
+           && sp[0] == '\033' && sp[1] == '[' && sp[2] == '?'
+           && (len = strspn(sp + 3, "0123456789;"))
+           && ((sp[3 + len] == 'h') || (sp[3 + len] == 'l'))) {
+           char buf3[MAX_TERMINFO_LENGTH];
 
            (void) strcpy(buf2, (sp[3 + len] == 'h') ? "DEC+" : "DEC-");
            (void) strncpy(buf3, sp + 3, len);
@@ -493,36 +610,33 @@ static void analyze_string(const char *name, const char *cap, TERMTYPE *tp)
 
            ep = strtok(buf3, ";");
            do {
-                  bool found = FALSE;
-
-                  for (ap = private_modes; ap->from; ap++)
-                  {
-                      size_t tlen = strlen(ap->from);
-
-                      if (strncmp(ap->from, ep, tlen) == 0)
-                      {
-                          (void) strcat(buf2, ap->to);
-                          found = TRUE;
-                          break;
-                      }
-                  }
-
-                  if (!found)
-                      (void) strcat(buf2, ep);
-                  (void) strcat(buf2, ";");
-              } while
-                  ((ep = strtok((char *)NULL, ";")));
+               bool found = FALSE;
+
+               for (ap = private_modes; ap->from; ap++) {
+                   size_t tlen = strlen(ap->from);
+
+                   if (strncmp(ap->from, ep, tlen) == 0) {
+                       (void) strcat(buf2, ap->to);
+                       found = TRUE;
+                       break;
+                   }
+               }
+
+               if (!found)
+                   (void) strcat(buf2, ep);
+               (void) strcat(buf2, ";");
+           } while
+               ((ep = strtok((char *) 0, ";")));
            buf2[strlen(buf2) - 1] = '\0';
            expansion = buf2;
        }
 
        /* now check for ECMA highlight sequences */
        if (!expansion
-                   && sp[0] == '\033' && sp[1] == '['
-                   && (len = strspn(sp + 2, "0123456789;"))
-                   && sp[2 + len] == 'm')
-       {
-           char        buf3[MAX_TERMINFO_LENGTH];
+           && sp[0] == '\033' && sp[1] == '['
+           && (len = strspn(sp + 2, "0123456789;"))
+           && sp[2 + len] == 'm') {
+           char buf3[MAX_TERMINFO_LENGTH];
 
            (void) strcpy(buf2, "SGR:");
            (void) strncpy(buf3, sp + 2, len);
@@ -531,32 +645,29 @@ static void analyze_string(const char *name, const char *cap, TERMTYPE *tp)
 
            ep = strtok(buf3, ";");
            do {
-                  bool found = FALSE;
-
-                  for (ap = ecma_highlights; ap->from; ap++)
-                  {
-                      size_t tlen = strlen(ap->from);
-
-                      if (strncmp(ap->from, ep, tlen) == 0)
-                      {
-                          (void) strcat(buf2, ap->to);
-                          found = TRUE;
-                          break;
-                      }
-                  }
-
-                  if (!found)
-                      (void) strcat(buf2, ep);
-                  (void) strcat(buf2, ";");
-              } while
-                  ((ep = strtok((char *)NULL, ";")));
+               bool found = FALSE;
+
+               for (ap = ecma_highlights; ap->from; ap++) {
+                   size_t tlen = strlen(ap->from);
+
+                   if (strncmp(ap->from, ep, tlen) == 0) {
+                       (void) strcat(buf2, ap->to);
+                       found = TRUE;
+                       break;
+                   }
+               }
+
+               if (!found)
+                   (void) strcat(buf2, ep);
+               (void) strcat(buf2, ";");
+           } while
+               ((ep = strtok((char *) 0, ";")));
 
            buf2[strlen(buf2) - 1] = '\0';
            expansion = buf2;
        }
        /* now check for scroll region reset */
-       if (!expansion)
-       {
+       if (!expansion) {
            (void) sprintf(buf2, "\033[1;%dr", tp->Numbers[2]);
            len = strlen(buf2);
            if (strncmp(buf2, sp, len) == 0)
@@ -564,23 +675,19 @@ static void analyze_string(const char *name, const char *cap, TERMTYPE *tp)
        }
 
        /* now check for home-down */
-       if (!expansion)
-       {
+       if (!expansion) {
            (void) sprintf(buf2, "\033[%d;1H", tp->Numbers[2]);
            len = strlen(buf2);
            if (strncmp(buf2, sp, len) == 0)
-                   expansion = "LL";
+               expansion = "LL";
        }
 
        /* now look at the expansion we got, if any */
-       if (expansion)
-       {
+       if (expansion) {
            (void) sprintf(buf + strlen(buf), "{%s}", expansion);
            sp += len - 1;
            continue;
-       }
-       else
-       {
+       } else {
            /* couldn't match anything */
            buf2[0] = *sp;
            buf2[1] = '\0';
@@ -596,44 +703,43 @@ static void analyze_string(const char *name, const char *cap, TERMTYPE *tp)
  *
  ***************************************************************************/
 
-static void file_comparison(int argc, char *argv[])
+static void
+file_comparison(int argc, char *argv[])
 {
 #define MAXCOMPARE     2
     /* someday we may allow comparisons on more files */
-    int        filecount = 0;
-    ENTRY      *heads[MAXCOMPARE];
-    ENTRY      *tails[MAXCOMPARE];
-    ENTRY      *qp, *rp;
-    int                i, n;
+    int filecount = 0;
+    ENTRY *heads[MAXCOMPARE];
+    ENTRY *tails[MAXCOMPARE];
+    ENTRY *qp, *rp;
+    int i, n;
 
-    dump_init((char *)NULL, F_LITERAL, S_TERMINFO, 0, itrace, FALSE);
+    dump_init((char *) 0, F_LITERAL, S_TERMINFO, 0, itrace, FALSE);
 
-    for (n = 0; n < argc && n < MAXCOMPARE; n++)
-    {
-       if (freopen(argv[n], "r", stdin) == NULL)
+    for (n = 0; n < argc && n < MAXCOMPARE; n++) {
+       if (freopen(argv[n], "r", stdin) == 0)
            _nc_err_abort("Can't open %s", argv[n]);
 
-       _nc_head = _nc_tail = (ENTRY *)NULL;
+       _nc_head = _nc_tail = 0;
 
        /* parse entries out of the source file */
        _nc_set_source(argv[n]);
        _nc_read_entry_source(stdin, NULL, TRUE, FALSE, NULLHOOK);
 
        if (itrace)
-           (void) fprintf(stderr, "Resolving file %d...\n", n-0);
+           (void) fprintf(stderr, "Resolving file %d...\n", n - 0);
 
-       /* do use resolution */
-       if (!_nc_resolve_uses())
-       {
+       /* maybe do use resolution */
+       if (!_nc_resolve_uses(!limited)) {
            (void) fprintf(stderr,
-                          "There are unresolved use entries in %s:\n",
-                          argv[n]);
-           for_entry_list(qp)
-               if (qp->nuses)
-               {
+               "There are unresolved use entries in %s:\n",
+               argv[n]);
+           for_entry_list(qp) {
+               if (qp->nuses) {
                    (void) fputs(qp->tterm.term_names, stderr);
                    (void) fputc('\n', stderr);
                }
+           }
            exit(EXIT_FAILURE);
        }
 
@@ -646,30 +752,17 @@ static void file_comparison(int argc, char *argv[])
     if (itrace)
        (void) fprintf(stderr, "Entries are now in core...\n");
 
-    /*
-     * The entry-matching loop.  We're not using the use[]
-     * slots any more (they got zeroed out by resolve_uses) so
-     * we stash each entry's matches in the other file there.
-     * Sigh, this is intrinsically quadratic.
-     */
-    for (qp = heads[0]; qp; qp = qp->next)
-    {
+    /* The entry-matching loop. Sigh, this is intrinsically quadratic. */
+    for (qp = heads[0]; qp; qp = qp->next) {
        for (rp = heads[1]; rp; rp = rp->next)
-           if (_nc_entry_match(qp->tterm.term_names, rp->tterm.term_names))
-           {
-               /*
-                * This is why the uses structure parent element is
-                * (void *) -- so we can have either (char *) for
-                * names or entry structure pointers in them and still
-                * be type-safe.
-                */
-               if (qp->nuses < MAX_USES)
-                   qp->uses[qp->nuses].parent = (void *)rp;
-               qp->nuses++;
-
-               if (rp->nuses < MAX_USES)
-                   rp->uses[rp->nuses].parent = (void *)qp;
-               rp->nuses++;
+           if (_nc_entry_match(qp->tterm.term_names, rp->tterm.term_names)) {
+               if (qp->ncrosslinks < MAX_CROSSLINKS)
+                   qp->crosslinks[qp->ncrosslinks] = rp;
+               qp->ncrosslinks++;
+
+               if (rp->ncrosslinks < MAX_CROSSLINKS)
+                   rp->crosslinks[rp->ncrosslinks] = qp;
+               rp->ncrosslinks++;
            }
     }
 
@@ -677,170 +770,185 @@ static void file_comparison(int argc, char *argv[])
     if (itrace)
        (void) fprintf(stderr, "Name matches are done...\n");
 
-    for (qp = heads[0]; qp; qp = qp->next)
-       if (qp->nuses > 1)
-       {
+    for (qp = heads[0]; qp; qp = qp->next) {
+       if (qp->ncrosslinks > 1) {
            (void) fprintf(stderr,
-                          "%s in file 1 (%s) has %d matches in file 2 (%s):\n",
-                          _nc_first_name(qp->tterm.term_names),
-                          argv[0],
-                          qp->nuses,
-                          argv[1]);
-           for (i = 0; i < qp->nuses; i++)
+               "%s in file 1 (%s) has %d matches in file 2 (%s):\n",
+               _nc_first_name(qp->tterm.term_names),
+               argv[0],
+               qp->ncrosslinks,
+               argv[1]);
+           for (i = 0; i < qp->ncrosslinks; i++)
                (void) fprintf(stderr,
-                              "\t%s\n",
-                              _nc_first_name(((ENTRY *)qp->uses[i].parent)->tterm.term_names));
+                   "\t%s\n",
+                   _nc_first_name((qp->crosslinks[i])->tterm.term_names));
        }
-    for (rp = heads[1]; rp; rp = rp->next)
-       if (rp->nuses > 1)
-       {
+    }
+
+    for (rp = heads[1]; rp; rp = rp->next) {
+       if (rp->ncrosslinks > 1) {
            (void) fprintf(stderr,
-                          "%s in file 2 (%s) has %d matches in file 1 (%s):\n",
-                          _nc_first_name(rp->tterm.term_names),
-                          argv[1],
-                          rp->nuses,
-                          argv[0]);
-           for (i = 0; i < rp->nuses; i++)
+               "%s in file 2 (%s) has %d matches in file 1 (%s):\n",
+               _nc_first_name(rp->tterm.term_names),
+               argv[1],
+               rp->ncrosslinks,
+               argv[0]);
+           for (i = 0; i < rp->ncrosslinks; i++)
                (void) fprintf(stderr,
-                              "\t%s\n",
-                              _nc_first_name(((ENTRY *)rp->uses[i].parent)->tterm.term_names));
+                   "\t%s\n",
+                   _nc_first_name((rp->crosslinks[i])->tterm.term_names));
        }
+    }
 
     (void) printf("In file 1 (%s) only:\n", argv[0]);
     for (qp = heads[0]; qp; qp = qp->next)
-       if (qp->nuses == 0)
+       if (qp->ncrosslinks == 0)
            (void) printf("\t%s\n",
-                         _nc_first_name(qp->tterm.term_names));
+               _nc_first_name(qp->tterm.term_names));
 
     (void) printf("In file 2 (%s) only:\n", argv[1]);
     for (rp = heads[1]; rp; rp = rp->next)
-       if (rp->nuses == 0)
+       if (rp->ncrosslinks == 0)
            (void) printf("\t%s\n",
-                         _nc_first_name(rp->tterm.term_names));
+               _nc_first_name(rp->tterm.term_names));
 
     (void) printf("The following entries are equivalent:\n");
-    for (qp = heads[0]; qp; qp = qp->next)
-    {
-       rp = (ENTRY *)qp->uses[0].parent;
+    for (qp = heads[0]; qp; qp = qp->next) {
+       rp = qp->crosslinks[0];
 
-       if (qp->nuses == 1 && entryeq(&qp->tterm, &rp->tterm))
-       {
-           char name1[NAMESIZE], name2[NAMESIZE];
+       if (qp->ncrosslinks == 1) {
+           rp = qp->crosslinks[0];
 
-           (void) canonical_name(qp->tterm.term_names, name1);
-           (void) canonical_name(rp->tterm.term_names, name2);
+           repair_acsc(&qp->tterm);
+           repair_acsc(&rp->tterm);
+#if NCURSES_XNAMES
+           _nc_align_termtype(&qp->tterm, &rp->tterm);
+#endif
+           if (entryeq(&qp->tterm, &rp->tterm) && useeq(qp, rp)) {
+               char name1[NAMESIZE], name2[NAMESIZE];
 
-           (void) printf("%s = %s\n", name1, name2);
+               (void) canonical_name(qp->tterm.term_names, name1);
+               (void) canonical_name(rp->tterm.term_names, name2);
+
+               (void) printf("%s = %s\n", name1, name2);
+           }
        }
     }
 
     (void) printf("Differing entries:\n");
     termcount = 2;
-    for (qp = heads[0]; qp; qp = qp->next)
-    {
-       rp = (ENTRY *)qp->uses[0].parent;
+    for (qp = heads[0]; qp; qp = qp->next) {
 
+       if (qp->ncrosslinks == 1) {
+           rp = qp->crosslinks[0];
 #if NCURSES_XNAMES
-       if (termcount > 1)
+           /* sorry - we have to do this on each pass */
            _nc_align_termtype(&qp->tterm, &rp->tterm);
 #endif
-       if (qp->nuses == 1 && !entryeq(&qp->tterm, &rp->tterm))
-       {
-           char name1[NAMESIZE], name2[NAMESIZE];
+           if (!(entryeq(&qp->tterm, &rp->tterm) && useeq(qp, rp))) {
+               char name1[NAMESIZE], name2[NAMESIZE];
 
-           term[0] = qp->tterm;
-           term[1] = rp->tterm;
+               entries[0] = *qp;
+               entries[1] = *rp;
 
-           (void) canonical_name(qp->tterm.term_names, name1);
-           (void) canonical_name(rp->tterm.term_names, name2);
+               (void) canonical_name(qp->tterm.term_names, name1);
+               (void) canonical_name(rp->tterm.term_names, name2);
 
-           switch (compare)
-           {
-           case C_DIFFERENCE:
-               if (itrace)
-                   (void)fprintf(stderr, "infocmp: dumping differences\n");
-               (void) printf("comparing %s to %s.\n", name1, name2);
-               compare_entry(compare_predicate, term);
-               break;
+               switch (compare) {
+               case C_DIFFERENCE:
+                   if (itrace)
+                       (void) fprintf(stderr,
+                           "infocmp: dumping differences\n");
+                   (void) printf("comparing %s to %s.\n", name1, name2);
+                   compare_entry(compare_predicate, &entries->tterm, quiet);
+                   break;
 
-           case C_COMMON:
-               if (itrace)
-                   (void) fprintf(stderr,
-                                  "infocmp: dumping common capabilities\n");
-               (void) printf("comparing %s to %s.\n", name1, name2);
-               compare_entry(compare_predicate, term);
-               break;
+               case C_COMMON:
+                   if (itrace)
+                       (void) fprintf(stderr,
+                           "infocmp: dumping common capabilities\n");
+                   (void) printf("comparing %s to %s.\n", name1, name2);
+                   compare_entry(compare_predicate, &entries->tterm, quiet);
+                   break;
 
-           case C_NAND:
-               if (itrace)
-                   (void) fprintf(stderr,
-                                  "infocmp: dumping differences\n");
-               (void) printf("comparing %s to %s.\n", name1, name2);
-               compare_entry(compare_predicate, term);
-               break;
+               case C_NAND:
+                   if (itrace)
+                       (void) fprintf(stderr,
+                           "infocmp: dumping differences\n");
+                   (void) printf("comparing %s to %s.\n", name1, name2);
+                   compare_entry(compare_predicate, &entries->tterm, quiet);
+                   break;
 
+               }
            }
        }
     }
 }
 
-static void usage(void)
+static void
+usage(void)
 {
-       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 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"
+#if NCURSES_XNAMES
+       ,"  -a    with -F, list commented-out caps"
+#endif
+       ,"  -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"
+       ,"  -q    brief listing, removes headers"
+       ,"  -r    with -C, output in termcap form"
+       ,"  -r    with -F, resolve use-references"
+       ,"  -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 *
+name_initializer(const char *type)
 {
     static char *initializer;
     char *s;
 
     if (initializer == 0)
-       initializer = malloc(strlen(term->term_names) + 20);
+       initializer = (char *) malloc(strlen(entries->tterm.term_names) + 20);
 
-    (void) sprintf(initializer, "%s_data_%s", type, term->term_names);
-    for (s = initializer; *s != 0 && *s != '|'; s++)
-    {
+    (void) sprintf(initializer, "%s_data_%s", type, entries->tterm.term_names);
+    for (s = initializer; *s != 0 && *s != '|'; s++) {
        if (!isalnum(*s))
            *s = '_';
     }
@@ -849,18 +957,17 @@ static char * name_initializer(const char *type)
 }
 
 /* dump C initializers for the terminal type */
-static void dump_initializers(void)
+static void
+dump_initializers(TERMTYPE * term)
 {
-    int        n;
+    int n;
     const char *str = 0;
-    int        size;
+    int size;
 
-    (void) printf("static bool %s[] = %s\n", name_initializer("bool"), L_CURL);
+    (void) printf("static char %s[] = %s\n", name_initializer("bool"), L_CURL);
 
-    for_each_boolean(n,term)
-    {
-       switch((int)(term->Booleans[n]))
-       {
+    for_each_boolean(n, term) {
+       switch ((int) (term->Booleans[n])) {
        case TRUE:
            str = "TRUE";
            break;
@@ -878,17 +985,15 @@ static void dump_initializers(void)
            break;
        }
        (void) printf("\t/* %3d: %-8s */\t%s,\n",
-                     n, ExtBoolname(term,n,boolnames), str);
+           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])
-       {
+    for_each_number(n, term) {
+       char buf[BUFSIZ];
+       switch (term->Numbers[n]) {
        case ABSENT_NUMERIC:
            str = "ABSENT_NUMERIC";
            break;
@@ -900,7 +1005,8 @@ static void dump_initializers(void)
            str = buf;
            break;
        }
-       (void) printf("\t/* %3d: %-8s */\t%s,\n", n, ExtNumname(term,n,numnames), str);
+       (void) printf("\t/* %3d: %-8s */\t%s,\n", n, ExtNumname(term, n,
+               numnames), str);
     }
     (void) printf("%s;\n", R_CURL);
 
@@ -910,24 +1016,22 @@ static void dump_initializers(void)
 
     (void) printf("static char * %s[] = %s\n", name_initializer("string"), L_CURL);
 
-    for_each_string(n,term)
-    {
-       char    buf[BUFSIZ], *sp, *tp;
+    for_each_string(n, term) {
+       char buf[MAX_STRING], *sp, *tp;
 
        if (term->Strings[n] == ABSENT_STRING)
            str = "ABSENT_STRING";
        else if (term->Strings[n] == CANCELLED_STRING)
            str = "CANCELLED_STRING";
-       else
-       {
+       else {
            tp = buf;
            *tp++ = '"';
-           for (sp = term->Strings[n]; *sp; sp++)
-           {
-               if (isascii(*sp) && isprint(*sp) && *sp !='\\' && *sp != '"')
+           for (sp = term->Strings[n];
+               *sp != 0 && (tp - buf) < MAX_STRING - 6;
+               sp++) {
+               if (isascii(*sp) && isprint(*sp) && *sp != '\\' && *sp != '"')
                    *tp++ = *sp;
-               else
-               {
+               else {
                    (void) sprintf(tp, "\\%03o", *sp & 0xff);
                    tp += 4;
                }
@@ -938,20 +1042,22 @@ static void dump_initializers(void)
            str = buf;
        }
 #if NCURSES_XNAMES
-       if (n == STRCOUNT)
-       {
+       if (n == STRCOUNT) {
            (void) printf("%s;\n", R_CURL);
 
-           (void) printf("static char * %s[] = %s\n", name_initializer("string_ext"), L_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("\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)
+static void
+dump_termtype(TERMTYPE * term)
 {
     (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");
@@ -966,16 +1072,19 @@ static void dump_termtype(void)
     (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");
+       ? 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 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("\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 */
@@ -988,334 +1097,333 @@ static void dump_termtype(void)
  *
  ***************************************************************************/
 
-int main(int argc, char *argv[])
+int
+main(int argc, char *argv[])
 {
-       char *terminal, *firstdir, *restdir;
-       /* Avoid "local data >32k" error with mwcc */
-       /* 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;
-       int initdump = 0;
-       bool init_analyze = FALSE;
-       bool limited = TRUE;
-
-       if ((terminal = getenv("TERM")) == NULL)
-       {
-               (void) fprintf(stderr,
-                       "infocmp: environment variable TERM not set\n");
-               return EXIT_FAILURE;
-       }
+    char *terminal, *firstdir, *restdir;
+    /* Avoid "local data >32k" error with mwcc */
+    /* Also avoid overflowing smaller stacks on systems like AmigaOS */
+    path *tfile = (path *) malloc(sizeof(path) * MAXTERMS);
+    int c, i, len;
+    bool formatted = FALSE;
+    bool filecompare = FALSE;
+    int initdump = 0;
+    bool init_analyze = FALSE;
+
+    if ((terminal = getenv("TERM")) == 0) {
+       (void) fprintf(stderr,
+           "infocmp: environment variable TERM not set\n");
+       return EXIT_FAILURE;
+    }
 
-       /* where is the terminfo database location going to default to? */
-       restdir = firstdir = 0;
+    /* where is the terminfo database location going to default to? */
+    restdir = firstdir = 0;
 
-       while ((c = getopt(argc, argv, "deEcCfFGgIinlLprR:s:uv:Vw:A:B:1T")) != EOF)
-               switch (c)
-               {
-               case 'd':
-                       compare = C_DIFFERENCE;
-                       break;
+    while ((c = getopt(argc, argv, "adeEcCfFGgIinlLpqrR:s:uv:Vw:A:B:1T")) != EOF)
+       switch (c) {
+#if NCURSES_XNAMES
+       case 'a':
+           _nc_disable_period = TRUE;
+           use_extended_names(TRUE);
+           break;
+#endif
+       case 'd':
+           compare = C_DIFFERENCE;
+           break;
 
-               case 'e':
-                       initdump |= 1;
-                       break;
+       case 'e':
+           initdump |= 1;
+           break;
 
-               case 'E':
-                       initdump |= 2;
-                       break;
+       case 'E':
+           initdump |= 2;
+           break;
 
-               case 'c':
-                       compare = C_COMMON;
-                       break;
+       case 'c':
+           compare = C_COMMON;
+           break;
 
-               case 'C':
-                       outform = F_TERMCAP;
-                       tversion = "BSD";
-                       if (sortmode == S_DEFAULT)
-                           sortmode = S_TERMCAP;
-                       break;
+       case 'C':
+           outform = F_TERMCAP;
+           tversion = "BSD";
+           if (sortmode == S_DEFAULT)
+               sortmode = S_TERMCAP;
+           break;
 
-               case 'f':
-                       formatted = TRUE;
-                       break;
+       case 'f':
+           formatted = TRUE;
+           break;
 
-               case 'G':
-                       numbers = 1;
-                       break;
+       case 'G':
+           numbers = 1;
+           break;
 
-               case 'g':
-                       numbers = -1;
-                       break;
+       case 'g':
+           numbers = -1;
+           break;
 
-               case 'F':
-                       filecompare = TRUE;
-                       break;
+       case 'F':
+           filecompare = TRUE;
+           break;
 
-               case 'I':
-                       outform = F_TERMINFO;
-                       if (sortmode == S_DEFAULT)
-                           sortmode = S_VARIABLE;
-                       tversion = 0;
-                       break;
+       case 'I':
+           outform = F_TERMINFO;
+           if (sortmode == S_DEFAULT)
+               sortmode = S_VARIABLE;
+           tversion = 0;
+           break;
 
-               case 'i':
-                       init_analyze = TRUE;
-                       break;
+       case 'i':
+           init_analyze = TRUE;
+           break;
 
-               case 'l':
-                       outform = F_TERMINFO;
-                       break;
+       case 'l':
+           outform = F_TERMINFO;
+           break;
 
-               case 'L':
-                       outform = F_VARIABLE;
-                       if (sortmode == S_DEFAULT)
-                           sortmode = S_VARIABLE;
-                       break;
+       case 'L':
+           outform = F_VARIABLE;
+           if (sortmode == S_DEFAULT)
+               sortmode = S_VARIABLE;
+           break;
 
-               case 'n':
-                       compare = C_NAND;
-                       break;
+       case 'n':
+           compare = C_NAND;
+           break;
 
-               case 'p':
-                       ignorepads = TRUE;
-                       break;
+       case 'p':
+           ignorepads = TRUE;
+           break;
 
-               case 'r':
-                       tversion = 0;
-                       limited = FALSE;
-                       break;
+       case 'q':
+           quiet = TRUE;
+           s_absent = "-";
+           s_cancel = "@";
+           bool_sep = ", ";
+           break;
 
-               case 'R':
-                       tversion = optarg;
-                       break;
+       case 'r':
+           tversion = 0;
+           limited = FALSE;
+           break;
 
-               case 's':
-                       if (*optarg == 'd')
-                               sortmode = S_NOSORT;
-                       else if (*optarg == 'i')
-                               sortmode = S_TERMINFO;
-                       else if (*optarg == 'l')
-                               sortmode = S_VARIABLE;
-                       else if (*optarg == 'c')
-                               sortmode = S_TERMCAP;
-                       else
-                       {
-                               (void) fprintf(stderr,
-                                              "infocmp: unknown sort mode\n");
-                               return EXIT_FAILURE;
-                       }
-                       break;
+       case 'R':
+           tversion = optarg;
+           break;
 
-               case 'u':
-                       compare = C_USEALL;
-                       break;
+       case 's':
+           if (*optarg == 'd')
+               sortmode = S_NOSORT;
+           else if (*optarg == 'i')
+               sortmode = S_TERMINFO;
+           else if (*optarg == 'l')
+               sortmode = S_VARIABLE;
+           else if (*optarg == 'c')
+               sortmode = S_TERMCAP;
+           else {
+               (void) fprintf(stderr,
+                   "infocmp: unknown sort mode\n");
+               return EXIT_FAILURE;
+           }
+           break;
 
-               case 'v':
-                       itrace = atoi(optarg);
-                       _nc_tracing = (1 << itrace) - 1;
-                       break;
+       case 'u':
+           compare = C_USEALL;
+           break;
 
-               case 'V':
-                       (void) fputs(NCURSES_VERSION, stdout);
-                       putchar('\n');
-                       ExitProgram(EXIT_SUCCESS);
+       case 'v':
+           itrace = atoi(optarg);
+           set_trace_level(itrace);
+           break;
 
-               case 'w':
-                       mwidth = atoi(optarg);
-                       break;
+       case 'V':
+           (void) fputs(NCURSES_VERSION, stdout);
+           putchar('\n');
+           ExitProgram(EXIT_SUCCESS);
 
-               case 'A':
-                       firstdir = optarg;
-                       break;
+       case 'w':
+           mwidth = atoi(optarg);
+           break;
 
-               case 'B':
-                       restdir = optarg;
-                       break;
+       case 'A':
+           firstdir = optarg;
+           break;
 
-               case '1':
-                       mwidth = 0;
-                       break;
+       case 'B':
+           restdir = optarg;
+           break;
 
-               case 'T':
-                       limited = FALSE;
-                       break;
-               default:
-                       usage();
-               }
+       case '1':
+           mwidth = 0;
+           break;
 
-       /* by default, sort by terminfo name */
-       if (sortmode == S_DEFAULT)
-               sortmode = S_TERMINFO;
+       case 'T':
+           limited = FALSE;
+           break;
+       default:
+           usage();
+       }
 
-       /* set up for display */
-       dump_init(tversion, outform, sortmode, mwidth, itrace, formatted);
+    /* by default, sort by terminfo name */
+    if (sortmode == S_DEFAULT)
+       sortmode = S_TERMINFO;
 
-       /* make sure we have at least one terminal name to work with */
-       if (optind >= argc)
-               argv[argc++] = terminal;
+    /* set up for display */
+    dump_init(tversion, outform, sortmode, mwidth, itrace, formatted);
 
-       /* if user is after a comparison, make sure we have two entries */
-       if (compare != C_DEFAULT && optind >= argc - 1)
-               argv[argc++] = terminal;
+    /* make sure we have at least one terminal name to work with */
+    if (optind >= argc)
+       argv[argc++] = terminal;
 
-       /* exactly two terminal names with no options means do -d */
-       if (argc - optind == 2 && compare == C_DEFAULT)
-               compare = C_DIFFERENCE;
+    /* if user is after a comparison, make sure we have two entries */
+    if (compare != C_DEFAULT && optind >= argc - 1)
+       argv[argc++] = terminal;
 
-       if (!filecompare)
-       {
-           /* grab the entries */
-           termcount = 0;
-           for (; optind < argc; optind++)
-           {
-               if (termcount >= MAXTERMS)
-               {
-                   (void) fprintf(stderr,
-                          "infocmp: too many terminal type arguments\n");
-                   return EXIT_FAILURE;
-               }
-               else
-               {
-                   const char  *directory = termcount ? restdir : firstdir;
-                   int         status;
-
-                   tname[termcount] = argv[optind];
-
-                   if (directory)
-                   {
-                       (void) sprintf(tfile[termcount], "%s/%c/%s",
-                                      directory,
-                                      *argv[optind], argv[optind]);
-                       if (itrace)
-                           (void) fprintf(stderr,
-                                          "infocmp: reading entry %s from file %s\n",
-                                          argv[optind], tfile[termcount]);
-
-                       status = _nc_read_file_entry(tfile[termcount],
-                                                    &term[termcount]);
-                   }
-                   else
-                   {
-                       if (itrace)
-                           (void) fprintf(stderr,
-                                          "infocmp: reading entry %s from system directories %s\n",
-                                          argv[optind], tname[termcount]);
-
-                       status = _nc_read_entry(tname[termcount],
-                                               tfile[termcount],
-                                               &term[termcount]);
-                       directory = TERMINFO;   /* for error message */
-                   }
+    /* exactly two terminal names with no options means do -d */
+    if (argc - optind == 2 && compare == C_DEFAULT)
+       compare = C_DIFFERENCE;
+
+    if (!filecompare) {
+       /* grab the entries */
+       termcount = 0;
+       for (; optind < argc; optind++) {
+           if (termcount >= MAXTERMS) {
+               (void) fprintf(stderr,
+                   "infocmp: too many terminal type arguments\n");
+               return EXIT_FAILURE;
+           } else {
+               const char *directory = termcount ? restdir : firstdir;
+               int status;
+
+               tname[termcount] = argv[optind];
 
-                   if (status <= 0)
-                   {
+               if (directory) {
+                   (void) sprintf(tfile[termcount], "%s/%c/%s",
+                       directory,
+                       *argv[optind], argv[optind]);
+                   if (itrace)
                        (void) fprintf(stderr,
-                                      "infocmp: couldn't open terminfo file %s.\n",
-                                      tfile[termcount]);
-                       return EXIT_FAILURE;
-                   }
-                   termcount++;
+                           "infocmp: reading entry %s from file %s\n",
+                           argv[optind], tfile[termcount]);
+
+                   status = _nc_read_file_entry(tfile[termcount],
+                       &entries[termcount].tterm);
+               } else {
+                   if (itrace)
+                       (void) fprintf(stderr,
+                           "infocmp: reading entry %s from system directories %s\n",
+                           argv[optind], tname[termcount]);
+
+                   status = _nc_read_entry(tname[termcount],
+                       tfile[termcount],
+                       &entries[termcount].tterm);
+                   directory = TERMINFO;       /* for error message */
+               }
+
+               if (status <= 0) {
+                   (void) fprintf(stderr,
+                       "infocmp: couldn't open terminfo file %s.\n",
+                       tfile[termcount]);
+                   return EXIT_FAILURE;
                }
+               repair_acsc(&entries[termcount].tterm);
+               termcount++;
            }
+       }
 
 #if NCURSES_XNAMES
-           if (termcount > 1)
-               _nc_align_termtype(&term[0], &term[1]);
+       if (termcount > 1)
+           _nc_align_termtype(&entries[0].tterm, &entries[1].tterm);
 #endif
 
-           /* dump as C initializer for the terminal type */
-           if (initdump)
-           {
-               if (initdump & 1)
-                   dump_termtype();
-               if (initdump & 2)
-                   dump_initializers();
-               ExitProgram(EXIT_SUCCESS);
-           }
+       /* dump as C initializer for the terminal type */
+       if (initdump) {
+           if (initdump & 1)
+               dump_termtype(&entries[0].tterm);
+           if (initdump & 2)
+               dump_initializers(&entries[0].tterm);
+           ExitProgram(EXIT_SUCCESS);
+       }
 
-           /* analyze the init strings */
-           if (init_analyze)
-           {
+       /* analyze the init strings */
+       if (init_analyze) {
 #undef CUR
-#define CUR    term[0].
-               analyze_string("is1", init_1string, &term[0]);
-               analyze_string("is2", init_2string, &term[0]);
-               analyze_string("is3", init_3string, &term[0]);
-               analyze_string("rs1", reset_1string, &term[0]);
-               analyze_string("rs2", reset_2string, &term[0]);
-               analyze_string("rs3", reset_3string, &term[0]);
-               analyze_string("smcup", enter_ca_mode, &term[0]);
-               analyze_string("rmcup", exit_ca_mode, &term[0]);
+#define CUR    entries[0].tterm.
+           analyze_string("is1", init_1string, &entries[0].tterm);
+           analyze_string("is2", init_2string, &entries[0].tterm);
+           analyze_string("is3", init_3string, &entries[0].tterm);
+           analyze_string("rs1", reset_1string, &entries[0].tterm);
+           analyze_string("rs2", reset_2string, &entries[0].tterm);
+           analyze_string("rs3", reset_3string, &entries[0].tterm);
+           analyze_string("smcup", enter_ca_mode, &entries[0].tterm);
+           analyze_string("rmcup", exit_ca_mode, &entries[0].tterm);
 #undef CUR
-               ExitProgram(EXIT_SUCCESS);
-           }
+           ExitProgram(EXIT_SUCCESS);
+       }
 
-           /*
-            * Here's where the real work gets done
-            */
-           switch (compare)
-           {
-           case C_DEFAULT:
-               if (itrace)
-                   (void) fprintf(stderr,
-                                  "infocmp: about to dump %s\n",
-                                  tname[0]);
-               (void) printf("#\tReconstructed via infocmp from file: %s\n",
-                             tfile[0]);
-               len = dump_entry(&term[0], limited, numbers, NULL);
-               putchar('\n');
-               if (itrace)
-                   (void)fprintf(stderr, "infocmp: length %d\n", len);
-               break;
+       /*
+        * Here's where the real work gets done
+        */
+       switch (compare) {
+       case C_DEFAULT:
+           if (itrace)
+               (void) fprintf(stderr,
+                   "infocmp: about to dump %s\n",
+                   tname[0]);
+           (void) printf("#\tReconstructed via infocmp from file: %s\n",
+               tfile[0]);
+           len = dump_entry(&entries[0].tterm, limited, numbers, NULL);
+           putchar('\n');
+           if (itrace)
+               (void) fprintf(stderr, "infocmp: length %d\n", len);
+           break;
 
-           case C_DIFFERENCE:
-               if (itrace)
-                   (void)fprintf(stderr, "infocmp: dumping differences\n");
-               (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
-               compare_entry(compare_predicate, term);
-               break;
+       case C_DIFFERENCE:
+           if (itrace)
+               (void) fprintf(stderr, "infocmp: dumping differences\n");
+           (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
+           compare_entry(compare_predicate, &entries->tterm, quiet);
+           break;
 
-           case C_COMMON:
-               if (itrace)
-                   (void) fprintf(stderr,
-                                  "infocmp: dumping common capabilities\n");
-               (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
-               compare_entry(compare_predicate, term);
-               break;
+       case C_COMMON:
+           if (itrace)
+               (void) fprintf(stderr,
+                   "infocmp: dumping common capabilities\n");
+           (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
+           compare_entry(compare_predicate, &entries->tterm, quiet);
+           break;
 
-           case C_NAND:
-               if (itrace)
-                   (void) fprintf(stderr,
-                                  "infocmp: dumping differences\n");
-               (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
-               compare_entry(compare_predicate, term);
-               break;
+       case C_NAND:
+           if (itrace)
+               (void) fprintf(stderr,
+                   "infocmp: dumping differences\n");
+           (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
+           compare_entry(compare_predicate, &entries->tterm, quiet);
+           break;
 
-           case C_USEALL:
-               if (itrace)
-                   (void) fprintf(stderr, "infocmp: dumping use entry\n");
-               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');
-               if (itrace)
-                   (void)fprintf(stderr, "infocmp: length %d\n", len);
-               break;
-           }
+       case C_USEALL:
+           if (itrace)
+               (void) fprintf(stderr, "infocmp: dumping use entry\n");
+           len = dump_entry(&entries[0].tterm, limited, numbers, use_predicate);
+           for (i = 1; i < termcount; i++)
+               len += dump_uses(tname[i], !(outform == F_TERMCAP || outform
+                       == F_TCONVERR));
+           putchar('\n');
+           if (itrace)
+               (void) fprintf(stderr, "infocmp: length %d\n", len);
+           break;
        }
-       else if (compare == C_USEALL)
-           (void) fprintf(stderr, "Sorry, -u doesn't work with -F\n");
-       else if (compare == C_DEFAULT)
-           (void) fprintf(stderr, "Use `tic -[CI] <file>' for this.\n");
-       else if (argc - optind != 2)
-           (void) fprintf(stderr,
-               "File comparison needs exactly two file arguments.\n");
-       else
-           file_comparison(argc-optind, argv+optind);
+    } else if (compare == C_USEALL)
+       (void) fprintf(stderr, "Sorry, -u doesn't work with -F\n");
+    else if (compare == C_DEFAULT)
+       (void) fprintf(stderr, "Use `tic -[CI] <file>' for this.\n");
+    else if (argc - optind != 2)
+       (void) fprintf(stderr,
+           "File comparison needs exactly two file arguments.\n");
+    else
+       file_comparison(argc - optind, argv + optind);
 
-       ExitProgram(EXIT_SUCCESS);
+    ExitProgram(EXIT_SUCCESS);
 }
 
 /* infocmp.c ends here */
index 54cd2020269ef58194bd814f7ad98b9b5ed3eebd..3d065a95ee88b73da1bf0a12ec362951bd13eb0c 100644 (file)
@@ -1,6 +1,7 @@
+# $Id: modules,v 1.10 2000/01/02 01:30:45 tom Exp $
 # Program modules (some are in ncurses lib!)
 ##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc.                          #
+# Copyright (c) 1998-2000 Free Software Foundation, Inc.                     #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
 #
 
 @ base
-clear          progs           $(srcdir)       ../include/term.h 
+clear          progs           $(srcdir)       ../include/term.h
 tic            progs           $(srcdir)       ../include/term.h $(INCDIR)/tic.h $(srcdir)/dump_entry.h
 toe            progs           $(srcdir)       ../include/term.h $(INCDIR)/tic.h $(srcdir)/dump_entry.h
-dump_entry     progs           $(srcdir)       ../include/term.h $(INCDIR)/tic.h $(srcdir)/dump_entry.h ../include/parametrized.h termsort.c
+dump_entry     progs           $(srcdir)       ../include/term.h $(INCDIR)/tic.h $(srcdir)/dump_entry.h ../include/parametrized.h $(INCDIR)/capdefaults.c termsort.c
 infocmp                progs           $(srcdir)       ../include/term.h $(INCDIR)/tic.h $(srcdir)/dump_entry.h
 tput           progs           $(srcdir)       ../include/term.h
 tset           progs           $(srcdir)       ../include/term.h
index 3384d37c4e6dea01c97e86a765539ffb4ab5aab2..2d22c9ad1a8af375c26e3770e4be30688c633df8 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998-2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -30,7 +30,7 @@
  *  Author: Thomas E. Dickey <dickey@clark.net> 1997,1998                   *
  ****************************************************************************/
 /*
- * $Id: progs.priv.h,v 1.19 1999/02/23 11:10:32 tom Exp $
+ * $Id: progs.priv.h,v 1.22 2000/04/08 23:47:39 tom Exp $
  *
  *     progs.priv.h
  *
@@ -123,6 +123,18 @@ extern int optind;
 #define EXIT_FAILURE 1
 #endif
 
+#ifndef R_OK
+#define        R_OK    4               /* Test for readable.  */
+#endif
+
+#ifndef W_OK
+#define        W_OK    2               /* Test for writable.  */
+#endif
+
+#ifndef X_OK
+#define        X_OK    1               /* Test for executable.  */
+#endif
+
 #ifndef F_OK
 #define        F_OK    0               /* Test for existence.  */
 #endif
index 5f08270963715febfc3c27a3ddda3966efa5107d..cc73a4db220cca19d333182f84e3929b8b199787 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc.                   *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
 #include <dump_entry.h>
 #include <term_entry.h>
 
-MODULE_ID("$Id: tic.c,v 1.52 1999/09/25 22:47:54 tom Exp $")
+MODULE_ID("$Id: tic.c,v 1.69 2000/04/08 23:53:49 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 FILE *log_fp;
+static FILE *tmp_fp;
+static bool showsummary = FALSE;
+static const char *to_remove;
 
-static void    (*save_check_termtype)(TERMTYPE *);
-static void    check_termtype(TERMTYPE *tt);
+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 const char usage_string[] = "[-h] [-v[n]] [-e names] [-CILNRTcfrswx1] source-file\n";
 
-static void cleanup(void)
+static void
+cleanup(void)
 {
-       if (tmp_fp != 0)
-               fclose(tmp_fp);
-       if (to_remove != 0) {
+    if (tmp_fp != 0)
+       fclose(tmp_fp);
+    if (to_remove != 0) {
 #if HAVE_REMOVE
-               remove(to_remove);
+       remove(to_remove);
 #else
-               unlink(to_remove);
+       unlink(to_remove);
 #endif
-       }
+    }
 }
 
-static void failed(const char *msg)
+static void
+failed(const char *msg)
 {
-       perror(msg);
-       cleanup();
-       exit(EXIT_FAILURE);
+    perror(msg);
+    cleanup();
+    exit(EXIT_FAILURE);
 }
 
-static void usage(void)
+static void
+usage(void)
 {
-       static const char *const tbl[] = {
+    static const char *const tbl[] =
+    {
        "Options:",
        "  -1         format translation output one capability per line",
        "  -C         translate entries to termcap source form",
@@ -87,6 +91,9 @@ static void usage(void)
        "  -N         disable smart defaults for source translation",
        "  -R         restrict translation to given terminfo/termcap version",
        "  -T         remove size-restrictions on compiled description",
+#if NCURSES_XNAMES
+       "  -a         retain commented-out capabilities (sets -x also)",
+#endif
        "  -c         check only, validate input without compiling or translating",
        "  -f         format complex strings for readability",
        "  -G         format %{number} to %'char'",
@@ -103,69 +110,73 @@ static void usage(void)
        "",
        "Parameters:",
        "  <file>     file to translate or compile"
-       };
-       size_t j;
+    };
+    size_t j;
 
-       printf("Usage: %s %s\n", _nc_progname, usage_string);
-       for (j = 0; j < sizeof(tbl)/sizeof(tbl[0]); j++)
-               puts(tbl[j]);
-       exit(EXIT_FAILURE);
+    fprintf(stderr, "Usage: %s %s\n", _nc_progname, usage_string);
+    for (j = 0; j < sizeof(tbl) / sizeof(tbl[0]); j++) {
+       fputs(tbl[j], stderr);
+       putc('\n', stderr);
+    }
+    exit(EXIT_FAILURE);
 }
 
 #define L_BRACE '{'
 #define R_BRACE '}'
 #define S_QUOTE '\'';
 
-static void write_it(ENTRY *ep)
+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);
+    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);
+    _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)
+static bool
+immedhook(ENTRY * ep GCC_UNUSED)
 /* write out entries with no use capabilities immediately to save storage */
 {
 #ifndef HAVE_BIG_CORE
@@ -202,511 +213,522 @@ static bool immedhook(ENTRY *ep GCC_UNUSED)
      * make tic a bit faster (because the resolution code won't have to do
      * disk I/O nearly as often).
      */
-    if (ep->nuses == 0)
-    {
-       int     oldline = _nc_curr_line;
+    if (ep->nuses == 0) {
+       int oldline = _nc_curr_line;
 
        write_it(ep);
        _nc_curr_line = oldline;
        free(ep->tterm.str_table);
-       return(TRUE);
+       return (TRUE);
     }
 #endif /* HAVE_BIG_CORE */
-    return(FALSE);
+    return (FALSE);
 }
 
-static void put_translate(int c)
+static void
+put_translate(int c)
 /* emit a comment char, translating terminfo names to termcap names */
 {
     static bool in_name = FALSE;
-    static char namebuf[132], suffix[132], *sp;
-
-    if (!in_name)
-    {
-       if (c == '<')
-       {
-           in_name = TRUE;
-           sp = namebuf;
+    static size_t have, used;
+    static char *namebuf, *suffix;
+
+    if (in_name) {
+       if (used + 1 >= have) {
+           have += 132;
+           namebuf = typeRealloc(char, have, namebuf);
+           suffix = typeRealloc(char, have, suffix);
        }
-       else
+       if (c == '\n' || c == '@') {
+           namebuf[used++] = '\0';
+           (void) putchar('<');
+           (void) fputs(namebuf, stdout);
            putchar(c);
-    }
-    else if (c == '\n' || c == '@')
-    {
-       *sp++ = '\0';
-       (void) putchar('<');
-       (void) fputs(namebuf, stdout);
-       putchar(c);
-       in_name = FALSE;
-    }
-    else if (c != '>')
-       *sp++ = c;
-    else               /* ah! candidate name! */
-    {
-       char    *up;
-       NCURSES_CONST char *tp;
-
-       *sp++ = '\0';
-       in_name = FALSE;
-
-       suffix[0] = '\0';
-       if ((up = strchr(namebuf, '#')) != 0
-        || (up = strchr(namebuf, '=')) != 0
-        || ((up = strchr(namebuf, '@')) != 0 && up[1] == '>'))
-       {
-           (void) strcpy(suffix, up);
-           *up = '\0';
-       }
+           in_name = FALSE;
+       } else if (c != '>') {
+           namebuf[used++] = c;
+       } else {                /* ah! candidate name! */
+           char *up;
+           NCURSES_CONST char *tp;
+
+           namebuf[used++] = '\0';
+           in_name = FALSE;
+
+           suffix[0] = '\0';
+           if ((up = strchr(namebuf, '#')) != 0
+               || (up = strchr(namebuf, '=')) != 0
+               || ((up = strchr(namebuf, '@')) != 0 && up[1] == '>')) {
+               (void) strcpy(suffix, up);
+               *up = '\0';
+           }
 
-       if ((tp = nametrans(namebuf)) != 0)
-       {
-           (void) putchar(':');
-           (void) fputs(tp, stdout);
-           (void) fputs(suffix, stdout);
-           (void) putchar(':');
+           if ((tp = nametrans(namebuf)) != 0) {
+               (void) putchar(':');
+               (void) fputs(tp, stdout);
+               (void) fputs(suffix, stdout);
+               (void) putchar(':');
+           } else {
+               /* couldn't find a translation, just dump the name */
+               (void) putchar('<');
+               (void) fputs(namebuf, stdout);
+               (void) fputs(suffix, stdout);
+               (void) putchar('>');
+           }
        }
-       else
-       {
-           /* couldn't find a translation, just dump the name */
-           (void) putchar('<');
-           (void) fputs(namebuf, stdout);
-           (void) fputs(suffix, stdout);
-           (void) putchar('>');
+    } else {
+       used = 0;
+       if (c == '<') {
+           in_name = TRUE;
+       } else {
+           putchar(c);
        }
-
     }
 }
 
 /* Returns a string, stripped of leading/trailing whitespace */
-static char *stripped(char *src)
+static char *
+stripped(char *src)
 {
-       while (isspace(*src))
-               src++;
-       if (*src != '\0') {
-               char *dst = strcpy(malloc(strlen(src)+1), src);
-               size_t len = strlen(dst);
-               while (--len != 0 && isspace(dst[len]))
-                       dst[len] = '\0';
-               return dst;
-       }
-       return 0;
+    while (isspace(*src))
+       src++;
+    if (*src != '\0') {
+       char *dst = strcpy(malloc(strlen(src) + 1), src);
+       size_t len = strlen(dst);
+       while (--len != 0 && isspace(dst[len]))
+           dst[len] = '\0';
+       return dst;
+    }
+    return 0;
 }
 
 /* Parse the "-e" option-value into a list of names */
-static const char **make_namelist(char *src)
+static const char **
+make_namelist(char *src)
 {
-       const char **dst = 0;
-
-       char *s, *base;
-       unsigned pass, n, nn;
-       char buffer[BUFSIZ];
-
-       if (src == 0) {
-               /* EMPTY */;
-       } else if (strchr(src, '/') != 0) {     /* a filename */
-               FILE *fp = fopen(src, "r");
-               if (fp == 0)
-                       failed(src);
-
-               for (pass = 1; pass <= 2; pass++) {
-                       nn = 0;
-                       while (fgets(buffer, sizeof(buffer), fp) != 0) {
-                               if ((s = stripped(buffer)) != 0) {
-                                       if (dst != 0)
-                                               dst[nn] = s;
-                                       nn++;
-                               }
-                       }
-                       if (pass == 1) {
-                               dst = (const char **)calloc(nn+1, sizeof(*dst));
-                               rewind(fp);
-                       }
-               }
-               fclose(fp);
-       } else {                        /* literal list of names */
-               for (pass = 1; pass <= 2; pass++) {
-                       for (n = nn = 0, base = src; ; n++) {
-                               int mark = src[n];
-                               if (mark == ',' || mark == '\0') {
-                                       if (pass == 1) {
-                                               nn++;
-                                       } else {
-                                               src[n] = '\0';
-                                               if ((s = stripped(base)) != 0)
-                                                       dst[nn++] = s;
-                                               base = &src[n+1];
-                                       }
-                               }
-                               if (mark == '\0')
-                                       break;
-                       }
-                       if (pass == 1)
-                               dst = (const char **)calloc(nn+1, sizeof(*dst));
+    const char **dst = 0;
+
+    char *s, *base;
+    unsigned pass, n, nn;
+    char buffer[BUFSIZ];
+
+    if (src == 0) {
+       /* EMPTY */ ;
+    } else if (strchr(src, '/') != 0) {                /* a filename */
+       FILE *fp = fopen(src, "r");
+       if (fp == 0)
+           failed(src);
+
+       for (pass = 1; pass <= 2; pass++) {
+           nn = 0;
+           while (fgets(buffer, sizeof(buffer), fp) != 0) {
+               if ((s = stripped(buffer)) != 0) {
+                   if (dst != 0)
+                       dst[nn] = s;
+                   nn++;
                }
+           }
+           if (pass == 1) {
+               dst = typeCalloc(const char *, nn + 1);
+               rewind(fp);
+           }
        }
-       if (showsummary) {
-               fprintf(log_fp, "Entries that will be compiled:\n");
-               for (n = 0; dst[n] != 0; n++)
-                       fprintf(log_fp, "%d:%s\n", n+1, dst[n]);
+       fclose(fp);
+    } else {                   /* literal list of names */
+       for (pass = 1; pass <= 2; pass++) {
+           for (n = nn = 0, base = src;; n++) {
+               int mark = src[n];
+               if (mark == ',' || mark == '\0') {
+                   if (pass == 1) {
+                       nn++;
+                   } else {
+                       src[n] = '\0';
+                       if ((s = stripped(base)) != 0)
+                           dst[nn++] = s;
+                       base = &src[n + 1];
+                   }
+               }
+               if (mark == '\0')
+                   break;
+           }
+           if (pass == 1)
+               dst = typeCalloc(const char *, nn + 1);
        }
-       return dst;
+    }
+    if (showsummary) {
+       fprintf(log_fp, "Entries that will be compiled:\n");
+       for (n = 0; dst[n] != 0; n++)
+           fprintf(log_fp, "%d:%s\n", n + 1, dst[n]);
+    }
+    return dst;
 }
 
-static bool matches(const char **needle, const char *haystack)
+static bool
+matches(const char **needle, const char *haystack)
 /* does entry in needle list match |-separated field in haystack? */
 {
-       bool code = FALSE;
-       size_t n;
-
-       if (needle != 0)
-       {
-               for (n = 0; needle[n] != 0; n++)
-               {
-                       if (_nc_name_match(haystack, needle[n], "|"))
-                       {
-                               code = TRUE;
-                               break;
-                       }
-               }
-       }
-       else
+    bool code = FALSE;
+    size_t n;
+
+    if (needle != 0) {
+       for (n = 0; needle[n] != 0; n++) {
+           if (_nc_name_match(haystack, needle[n], "|")) {
                code = TRUE;
-       return(code);
+               break;
+           }
+       }
+    } else
+       code = TRUE;
+    return (code);
 }
 
-int main (int argc, char *argv[])
+static FILE *
+open_tempfile(char *name)
 {
-char   my_tmpname[PATH_MAX];
-int    v_opt = -1, debug_level;
-int    smart_defaults = TRUE;
-char    *termcap;
-ENTRY  *qp;
-
-int    this_opt, last_opt = '?';
-
-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 */
-bool   limited = TRUE;
-char   *tversion = (char *)NULL;
-const  char    *source_file = "terminfo";
-const  char    **namelst = 0;
-char   *outdir = (char *)NULL;
-bool   check_only = FALSE;
-
-       log_fp = stderr;
-
-       if ((_nc_progname = strrchr(argv[0], '/')) == NULL)
-               _nc_progname = argv[0];
-       else
-               _nc_progname++;
+    FILE *result = 0;
+#if HAVE_MKSTEMP
+    int fd = mkstemp(name);
+    if (fd >= 0)
+       result = fdopen(fd, "w");
+#else
+    if (tmpnam(name) != 0)
+       result = fopen(name, "w");
+#endif
+    return result;
+}
 
-       infodump = (strcmp(_nc_progname, "captoinfo") == 0);
-       capdump = (strcmp(_nc_progname, "infotocap") == 0);
+int
+main(int argc, char *argv[])
+{
+    char my_tmpname[PATH_MAX];
+    int v_opt = -1, debug_level;
+    int smart_defaults = TRUE;
+    char *termcap;
+    ENTRY *qp;
+
+    int this_opt, last_opt = '?';
+
+    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 */
+    bool limited = TRUE;
+    char *tversion = (char *) NULL;
+    const char *source_file = "terminfo";
+    const char **namelst = 0;
+    char *outdir = (char *) NULL;
+    bool check_only = FALSE;
+
+    log_fp = stderr;
+
+    if ((_nc_progname = strrchr(argv[0], '/')) == NULL)
+       _nc_progname = argv[0];
+    else
+       _nc_progname++;
+
+    if ((infodump = (strcmp(_nc_progname, "captoinfo") == 0)) != FALSE) {
+       outform = F_TERMINFO;
+       sortmode = S_TERMINFO;
+    }
+    if ((capdump = (strcmp(_nc_progname, "infotocap") == 0)) != FALSE) {
+       outform = F_TERMCAP;
+       sortmode = S_TERMCAP;
+    }
 #if NCURSES_XNAMES
-       use_extended_names(FALSE);
+    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:fGgo:rsvwx")) != EOF) {
-               if (isdigit(this_opt)) {
-                       switch (last_opt) {
-                       case 'v':
-                               v_opt = (v_opt * 10) + (this_opt - '0');
-                               break;
-                       case 'w':
-                               width = (width * 10) + (this_opt - '0');
-                               break;
-                       default:
-                               if (this_opt != '1')
-                                       usage();
-                               last_opt = this_opt;
-                               width = 0;
-                       }
-                       continue;
-               }
-               switch (this_opt) {
-               case 'C':
-                       capdump  = TRUE;
-                       outform  = F_TERMCAP;
-                       sortmode = S_TERMCAP;
-                       break;
-               case 'I':
-                       infodump = TRUE;
-                       outform  = F_TERMINFO;
-                       sortmode = S_TERMINFO;
-                       break;
-               case 'L':
-                       infodump = TRUE;
-                       outform  = F_VARIABLE;
-                       sortmode = S_VARIABLE;
-                       break;
-               case 'N':
-                       smart_defaults = FALSE;
-                       break;
-               case 'R':
-                       tversion = optarg;
-                       break;
-               case 'T':
-                       limited = FALSE;
-                       break;
-               case 'V':
-                       puts(NCURSES_VERSION);
-                       return EXIT_SUCCESS;
-               case 'c':
-                       check_only = TRUE;
-                       break;
-               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;
-               case 'r':
-                       forceresolve = TRUE;
-                       break;
-               case 's':
-                       showsummary = TRUE;
-                       break;
-               case 'v':
-                       v_opt = 0;
-                       break;
-               case 'w':
-                       width = 0;
-                       break;
+    /*
+     * 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:TVace:fGgo:rsvwx")) != EOF) {
+       if (isdigit(this_opt)) {
+           switch (last_opt) {
+           case 'v':
+               v_opt = (v_opt * 10) + (this_opt - '0');
+               break;
+           case 'w':
+               width = (width * 10) + (this_opt - '0');
+               break;
+           default:
+               if (this_opt != '1')
+                   usage();
+               last_opt = this_opt;
+               width = 0;
+           }
+           continue;
+       }
+       switch (this_opt) {
+       case 'C':
+           capdump = TRUE;
+           outform = F_TERMCAP;
+           sortmode = S_TERMCAP;
+           break;
+       case 'I':
+           infodump = TRUE;
+           outform = F_TERMINFO;
+           sortmode = S_TERMINFO;
+           break;
+       case 'L':
+           infodump = TRUE;
+           outform = F_VARIABLE;
+           sortmode = S_VARIABLE;
+           break;
+       case 'N':
+           smart_defaults = FALSE;
+           break;
+       case 'R':
+           tversion = optarg;
+           break;
+       case 'T':
+           limited = FALSE;
+           break;
+       case 'V':
+           puts(NCURSES_VERSION);
+           return EXIT_SUCCESS;
+       case 'c':
+           check_only = TRUE;
+           break;
+       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;
+       case 'r':
+           forceresolve = TRUE;
+           break;
+       case 's':
+           showsummary = TRUE;
+           break;
+       case 'v':
+           v_opt = 0;
+           break;
+       case 'w':
+           width = 0;
+           break;
 #if NCURSES_XNAMES
-               case 'x':
-                       use_extended_names(TRUE);
-                       break;
+       case 'a':
+           _nc_disable_period = TRUE;
+           /* FALLTHRU */
+       case 'x':
+           use_extended_names(TRUE);
+           break;
 #endif
-               default:
-                       usage();
-               }
-               last_opt = this_opt;
+       default:
+           usage();
        }
+       last_opt = this_opt;
+    }
 
-       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;
-       }
+    debug_level = (v_opt > 0) ? v_opt : (v_opt == 0);
+    set_trace_level(debug_level);
 
+    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;
-       }
+    /*
+     * 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) {
-               source_file = argv[optind++];
-               if (optind < argc) {
-                       fprintf (stderr,
-                               "%s: Too many file names.  Usage:\n\t%s %s",
-                               _nc_progname,
-                               _nc_progname,
-                               usage_string);
-                       return EXIT_FAILURE;
-               }
-       } else {
-               if (infodump == TRUE) {
-                       /* captoinfo's no-argument case */
-                       source_file = "/etc/termcap";
-                       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");
-                               }
-                       }
+           fprintf(stderr,
+               "%s: Too many file names.  Usage:\n\t%s %s",
+               _nc_progname,
+               _nc_progname,
+               usage_string);
+           return EXIT_FAILURE;
+       }
+    } else {
+       if (infodump == TRUE) {
+           /* captoinfo's no-argument case */
+           source_file = "/etc/termcap";
+           if ((termcap = getenv("TERMCAP")) != 0
+               && (namelst = make_namelist(getenv("TERM"))) != 0) {
+               if (access(termcap, F_OK) == 0) {
+                   /* file exists */
+                   source_file = termcap;
+               } else if ((tmp_fp = open_tempfile(my_tmpname)) != 0) {
+                   source_file = my_tmpname;
+                   fprintf(tmp_fp, "%s\n", termcap);
+                   fclose(tmp_fp);
+                   tmp_fp = fopen(source_file, "r");
+                   to_remove = source_file;
                } else {
-               /* tic */
-                       fprintf (stderr,
-                               "%s: File name needed.  Usage:\n\t%s %s",
-                               _nc_progname,
-                               _nc_progname,
-                               usage_string);
-                       cleanup();
-                       return EXIT_FAILURE;
+                   failed("tmpnam");
                }
+           }
+       } else {
+           /* tic */
+           fprintf(stderr,
+               "%s: File name needed.  Usage:\n\t%s %s",
+               _nc_progname,
+               _nc_progname,
+               usage_string);
+           cleanup();
+           return EXIT_FAILURE;
        }
+    }
 
-       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;
-       }
+    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;
+    }
 
-       if (infodump)
-               dump_init(tversion,
-                         smart_defaults
-                               ? outform
-                               : F_LITERAL,
-                         sortmode, width, debug_level, formatted);
-       else if (capdump)
-               dump_init(tversion,
-                         outform,
-                         sortmode, width, debug_level, FALSE);
-
-       /* parse entries out of the source file */
-       _nc_set_source(source_file);
+    if (infodump)
+       dump_init(tversion,
+           smart_defaults
+           ? outform
+           : F_LITERAL,
+           sortmode, width, debug_level, formatted);
+    else if (capdump)
+       dump_init(tversion,
+           outform,
+           sortmode, width, debug_level, FALSE);
+
+    /* parse entries out of the source file */
+    _nc_set_source(source_file);
 #ifndef HAVE_BIG_CORE
-       if (!(check_only || infodump || capdump))
-           _nc_set_writedir(outdir);
+    if (!(check_only || infodump || capdump))
+       _nc_set_writedir(outdir);
 #endif /* HAVE_BIG_CORE */
-       _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) {
-               cleanup();
-               return EXIT_FAILURE;
-           }
+    _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(TRUE) && !check_only) {
+           cleanup();
+           return EXIT_FAILURE;
        }
+    }
 
-       /* length check */
-       if (check_only && (capdump || infodump))
-       {
-           for_entry_list(qp)
-           {
-               if (matches(namelst, qp->tterm.term_names))
-               {
-                   int len = fmt_entry(&qp->tterm, NULL, TRUE, infodump, numbers);
-
-                   if (len>(infodump?MAX_TERMINFO_LENGTH:MAX_TERMCAP_LENGTH))
-                           (void) fprintf(stderr,
-                          "warning: resolved %s entry is %d bytes long\n",
-                          _nc_first_name(qp->tterm.term_names),
-                          len);
-               }
+    /* length check */
+    if (check_only && (capdump || infodump)) {
+       for_entry_list(qp) {
+           if (matches(namelst, qp->tterm.term_names)) {
+               int len = fmt_entry(&qp->tterm, NULL, TRUE, infodump, numbers);
+
+               if (len > (infodump ? MAX_TERMINFO_LENGTH : MAX_TERMCAP_LENGTH))
+                   (void) fprintf(stderr,
+                       "warning: resolved %s entry is %d bytes long\n",
+                       _nc_first_name(qp->tterm.term_names),
+                       len);
            }
        }
+    }
 
-       /* write or dump all entries */
-       if (!check_only)
-       {
-           if (!infodump && !capdump)
-           {
-               _nc_set_writedir(outdir);
-               for_entry_list(qp)
-                   if (matches(namelst, qp->tterm.term_names))
-                       write_it(qp);
+    /* write or dump all entries */
+    if (!check_only) {
+       if (!infodump && !capdump) {
+           _nc_set_writedir(outdir);
+           for_entry_list(qp) {
+               if (matches(namelst, qp->tterm.term_names))
+                   write_it(qp);
            }
-           else
-           {
-               /* this is in case infotocap() generates warnings */
-               _nc_curr_col = _nc_curr_line = -1;
-
-               for_entry_list(qp)
-                   if (matches(namelst, qp->tterm.term_names))
-                   {
-                       int     j = qp->cend - qp->cstart;
-                       int     len = 0;
-
-                       /* this is in case infotocap() generates warnings */
-                       _nc_set_type(_nc_first_name(qp->tterm.term_names));
-
-                       (void) fseek(tmp_fp, qp->cstart, SEEK_SET);
-                       while (j-- )
-                           if (infodump)
-                               (void) putchar(fgetc(tmp_fp));
-                           else
-                               put_translate(fgetc(tmp_fp));
-
-                       len = dump_entry(&qp->tterm, limited, numbers, NULL);
-                       for (j = 0; j < qp->nuses; j++)
-                           len += dump_uses((char *)(qp->uses[j].parent), !capdump);
-                       (void) putchar('\n');
-                       if (debug_level != 0 && !limited)
-                           printf("# length=%d\n", len);
+       } else {
+           /* this is in case infotocap() generates warnings */
+           _nc_curr_col = _nc_curr_line = -1;
+
+           for_entry_list(qp) {
+               if (matches(namelst, qp->tterm.term_names)) {
+                   int j = qp->cend - qp->cstart;
+                   int len = 0;
+
+                   /* this is in case infotocap() generates warnings */
+                   _nc_set_type(_nc_first_name(qp->tterm.term_names));
+
+                   (void) fseek(tmp_fp, qp->cstart, SEEK_SET);
+                   while (j--) {
+                       if (infodump)
+                           (void) putchar(fgetc(tmp_fp));
+                       else
+                           put_translate(fgetc(tmp_fp));
                    }
-               if (!namelst)
-               {
-                   int  c, oldc = '\0';
-                   bool in_comment = FALSE;
-                   bool trailing_comment = FALSE;
-
-                   (void) fseek(tmp_fp, _nc_tail->cend, SEEK_SET);
-                   while ((c = fgetc(tmp_fp)) != EOF)
-                   {
-                       if (oldc == '\n') {
-                           if (c == '#') {
-                               trailing_comment = TRUE;
-                               in_comment = TRUE;
-                           } else {
-                               in_comment = FALSE;
-                           }
+
+                   len = dump_entry(&qp->tterm, limited, numbers, NULL);
+                   for (j = 0; j < qp->nuses; j++)
+                       len += dump_uses(qp->uses[j].name, !capdump);
+                   (void) putchar('\n');
+                   if (debug_level != 0 && !limited)
+                       printf("# length=%d\n", len);
+               }
+           }
+           if (!namelst) {
+               int c, oldc = '\0';
+               bool in_comment = FALSE;
+               bool trailing_comment = FALSE;
+
+               (void) fseek(tmp_fp, _nc_tail->cend, SEEK_SET);
+               while ((c = fgetc(tmp_fp)) != EOF) {
+                   if (oldc == '\n') {
+                       if (c == '#') {
+                           trailing_comment = TRUE;
+                           in_comment = TRUE;
+                       } else {
+                           in_comment = FALSE;
                        }
-                       if (trailing_comment
-                        && (in_comment || (oldc == '\n' && c == '\n')))
-                           putchar(c);
-                       oldc = c;
                    }
+                   if (trailing_comment
+                       && (in_comment || (oldc == '\n' && c == '\n')))
+                       putchar(c);
+                   oldc = c;
                }
            }
        }
+    }
 
-       /* Show the directory into which entries were written, and the total
-        * number of entries
-        */
-       if (showsummary
-        && (!(check_only || infodump || capdump))) {
-               int total = _nc_tic_written();
-               if (total != 0)
-                       fprintf(log_fp, "%d entries written to %s\n",
-                               total,
-                               _nc_tic_dir((char *)0));
-               else
-                       fprintf(log_fp, "No entries written\n");
-       }
-       cleanup();
-       return(EXIT_SUCCESS);
+    /* Show the directory into which entries were written, and the total
+     * number of entries
+     */
+    if (showsummary
+       && (!(check_only || infodump || capdump))) {
+       int total = _nc_tic_written();
+       if (total != 0)
+           fprintf(log_fp, "%d entries written to %s\n",
+               total,
+               _nc_tic_dir((char *) 0));
+       else
+           fprintf(log_fp, "No entries written\n");
+    }
+    cleanup();
+    return (EXIT_SUCCESS);
 }
 
 /*
@@ -715,98 +737,169 @@ bool     check_only = FALSE;
  * precisely what's needed (see comp_parse.c).
  */
 
-TERMINAL *cur_term;    /* tweak to avoid linking lib_cur_term.c */
+TERMINAL *cur_term;            /* tweak to avoid linking lib_cur_term.c */
 
 #undef CUR
 #define CUR tp->
 
+/*
+ * An sgr string may contain several settings other than the one we're
+ * interested in, essentially sgr0 + rmacs + whatever.  As long as the
+ * "whatever" is contained in the sgr string, that is close enough for our
+ * sanity check.
+ */
+static bool
+similar_sgr(char *a, char *b)
+{
+    while (*b != 0) {
+       while (*a != *b) {
+           if (*a == 0)
+               return FALSE;
+           a++;
+       }
+       a++;
+       b++;
+    }
+    return TRUE;
+}
+
+static void
+check_sgr(TERMTYPE * tp, char *zero, int num, char *cap, const char *name)
+{
+    char *test = tparm(set_attributes,
+       num == 1,
+       num == 2,
+       num == 3,
+       num == 4,
+       num == 5,
+       num == 6,
+       num == 7,
+       num == 8,
+       num == 9);
+    if (test != 0) {
+       if (PRESENT(cap)) {
+           if (!similar_sgr(test, cap)) {
+               _nc_warning("%s differs from sgr(%d): %s", name, num,
+                   _nc_visbuf(test));
+           }
+       } else if (strcmp(test, zero)) {
+           _nc_warning("sgr(%d) present, but not %s", num, name);
+       }
+    } else if (PRESENT(cap)) {
+       _nc_warning("sgr(%d) missing, but %s present", num, name);
+    }
+}
+
+#define CHECK_SGR(num,name) check_sgr(tp, zero, num, name, #name)
+
 /* other sanity-checks (things that we don't want in the normal
  * logic that reads a terminfo entry)
  */
-static void check_termtype(TERMTYPE *tp)
+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))
+    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;
-           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 (!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");
        }
+       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");
-       }
+    /*
+     * 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);
 
-       /*
-        * Finally, do the non-verbose checks
-        */
-       if (save_check_termtype != 0)
-           save_check_termtype(tp);
+    /*
+     * 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);
+
+    if (PRESENT(cursor_visible) && PRESENT(cursor_normal)
+       && !strcmp(cursor_visible, cursor_normal))
+       _nc_warning("cursor_visible is same as 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);
+
+    if (PRESENT(set_attributes)) {
+       char *zero = tparm(set_attributes, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+
+       zero = strdup(zero);
+       CHECK_SGR(1, enter_standout_mode);
+       CHECK_SGR(2, enter_underline_mode);
+       CHECK_SGR(3, enter_reverse_mode);
+       CHECK_SGR(4, enter_blink_mode);
+       CHECK_SGR(5, enter_dim_mode);
+       CHECK_SGR(6, enter_bold_mode);
+       CHECK_SGR(7, enter_secure_mode);
+       CHECK_SGR(8, enter_protected_mode);
+       CHECK_SGR(9, enter_alt_charset_mode);
+       free(zero);
+    }
+
+    /*
+     * 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 f2c5c5ec832d3cc9518c53d0854e99e5f7f59515..afdf379fb2871a114e4856f7ceb2837dbdcbf60c 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998-2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
 #include <dump_entry.h>
 #include <term_entry.h>
 
-MODULE_ID("$Id: toe.c,v 0.19 1998/03/08 01:02:46 tom Exp $")
+MODULE_ID("$Id: toe.c,v 1.22 2000/03/11 21:47:35 tom Exp $")
+
+#define isDotname(name) (!strcmp(name, ".") || !strcmp(name, ".."))
 
 const char *_nc_progname;
 
 static int typelist(int eargc, char *eargv[], bool,
-                    void (*)(const char *, TERMTYPE *));
+    void (*)(const char *, TERMTYPE *));
 static void deschook(const char *, TERMTYPE *);
 
 #if NO_LEAKS
 #undef ExitProgram
-static void ExitProgram(int code) GCC_NORETURN;
-static void ExitProgram(int code)
+static void
+ExitProgram(int code) GCC_NORETURN;
+     static void ExitProgram(int code)
 {
-       _nc_free_entries(_nc_head);
-       _nc_leaks_dump_entry();
-       _nc_free_and_exit(code);
+    _nc_free_entries(_nc_head);
+    _nc_leaks_dump_entry();
+    _nc_free_and_exit(code);
 }
 #endif
 
-int main (int argc, char *argv[])
+static char *
+get_directory(char *path)
+{
+    if (path != 0) {
+       struct stat sb;
+       if (stat(path, &sb) != 0
+           || (sb.st_mode & S_IFMT) != S_IFDIR
+           || access(path, R_OK | X_OK) != 0)
+           path = 0;
+    }
+    return path;
+}
+
+int
+main(int argc, char *argv[])
 {
-    bool       direct_dependencies = FALSE;
-    bool       invert_dependencies = FALSE;
-    bool       header = FALSE;
-    int                i, c, debug_level = 0;
-    int                code;
+    bool direct_dependencies = FALSE;
+    bool invert_dependencies = FALSE;
+    bool header = FALSE;
+    int i, c;
+    int code;
 
-    if ((_nc_progname = strrchr(argv[0], '/')) == NULL)
+    if ((_nc_progname = strrchr(argv[0], '/')) == 0)
        _nc_progname = argv[0];
     else
        _nc_progname++;
 
     while ((c = getopt(argc, argv, "huv:UV")) != EOF)
-       switch (c)
-       {
+       switch (c) {
        case 'h':
            header = TRUE;
            break;
@@ -85,8 +101,7 @@ int main (int argc, char *argv[])
            direct_dependencies = TRUE;
            break;
        case 'v':
-           debug_level = atoi(optarg);
-           _nc_tracing = (1 << debug_level) - 1;
+           set_trace_level(atoi(optarg));
            break;
        case 'U':
            invert_dependencies = TRUE;
@@ -96,14 +111,12 @@ int main (int argc, char *argv[])
            putchar('\n');
            ExitProgram(EXIT_SUCCESS);
        default:
-           (void) fprintf (stderr, "usage: toe [-huUV] [-v n] [file...]\n");
+           (void) fprintf(stderr, "usage: toe [-huUV] [-v n] [file...]\n");
            ExitProgram(EXIT_FAILURE);
        }
 
-    if (direct_dependencies || invert_dependencies)
-    {
-       if (freopen(argv[optind], "r", stdin) == NULL)
-       {
+    if (direct_dependencies || invert_dependencies) {
+       if (freopen(argv[optind], "r", stdin) == 0) {
            (void) fflush(stdout);
            fprintf(stderr, "%s: can't open %s\n", _nc_progname, argv[optind]);
            ExitProgram(EXIT_FAILURE);
@@ -111,52 +124,45 @@ int main (int argc, char *argv[])
 
        /* parse entries out of the source file */
        _nc_set_source(argv[optind]);
-       _nc_read_entry_source(stdin, (char *)NULL,
-                             FALSE, FALSE,
-                             NULLHOOK);
+       _nc_read_entry_source(stdin, 0, FALSE, FALSE, NULLHOOK);
     }
 
     /* maybe we want a direct-dependency listing? */
-    if (direct_dependencies)
-    {
-       ENTRY   *qp;
+    if (direct_dependencies) {
+       ENTRY *qp;
 
        for_entry_list(qp)
-           if (qp->nuses)
-           {
-               int             j;
+           if (qp->nuses) {
+           int j;
 
-               (void) printf("%s:", _nc_first_name(qp->tterm.term_names));
-               for (j = 0; j < qp->nuses; j++)
-                   (void) printf(" %s", (char *)(qp->uses[j].parent));
-               putchar('\n');
-           }
+           (void) printf("%s:", _nc_first_name(qp->tterm.term_names));
+           for (j = 0; j < qp->nuses; j++)
+               (void) printf(" %s", qp->uses[j].name);
+           putchar('\n');
+       }
 
        ExitProgram(EXIT_SUCCESS);
     }
 
     /* maybe we want a reverse-dependency listing? */
-    if (invert_dependencies)
-    {
-       ENTRY   *qp, *rp;
-       int             matchcount;
+    if (invert_dependencies) {
+       ENTRY *qp, *rp;
+       int matchcount;
 
-       for_entry_list(qp)
-       {
+       for_entry_list(qp) {
            matchcount = 0;
-           for_entry_list(rp)
-           {
+           for_entry_list(rp) {
                if (rp->nuses == 0)
                    continue;
 
                for (i = 0; i < rp->nuses; i++)
-                   if (_nc_name_match(qp->tterm.term_names,(char*)rp->uses[i].parent, "|"))
-                   {
+                   if (_nc_name_match(qp->tterm.term_names,
+                           rp->uses[i].name, "|")) {
                        if (matchcount++ == 0)
                            (void) printf("%s:",
-                                         _nc_first_name(qp->tterm.term_names));
+                               _nc_first_name(qp->tterm.term_names));
                        (void) printf(" %s",
-                                     _nc_first_name(rp->tterm.term_names));
+                           _nc_first_name(rp->tterm.term_names));
                    }
            }
            if (matchcount)
@@ -170,29 +176,25 @@ int main (int argc, char *argv[])
      * If we get this far, user wants a simple terminal type listing.
      */
     if (optind < argc) {
-       code = typelist(argc-optind, argv+optind, header, deschook);
+       code = typelist(argc - optind, argv + optind, header, deschook);
     } else {
-       char    *by_env, *home, *eargv[3];
-       int     j;
+       char *home, *eargv[3];
+       char personal[PATH_MAX];
+       int j;
 
        j = 0;
-       if ((by_env = getenv("TERMINFO")) != (char *)NULL)
-           eargv[j++] = by_env;
-       else
-       {
-           if ((home = getenv("HOME")) != (char *)NULL)
-           {
-               char    personal[PATH_MAX];
-               struct  stat sb;
-
+       if ((eargv[j] = get_directory(getenv("TERMINFO"))) != 0) {
+           j++;
+       } else {
+           if ((home = getenv("HOME")) != 0) {
                (void) sprintf(personal, PRIVATE_INFO, home);
-               if (stat(personal, &sb) == 0
-                && (sb.st_mode & S_IFMT) == S_IFDIR)
-                   eargv[j++] = personal;
+               if ((eargv[j] = get_directory(personal)) != 0)
+                   j++;
            }
-           eargv[j++] = TERMINFO;
+           if ((eargv[j] = get_directory(TERMINFO)) != 0)
+               j++;
        }
-       eargv[j] = (char *)NULL;
+       eargv[j] = 0;
 
        code = typelist(j, eargv, header, deschook);
     }
@@ -200,12 +202,13 @@ int main (int argc, char *argv[])
     ExitProgram(code);
 }
 
-static void deschook(const char *cn, TERMTYPE *tp)
+static void
+deschook(const char *cn, TERMTYPE * tp)
 /* display a description for the type */
 {
     const char *desc;
 
-    if ((desc = strrchr(tp->term_names, '|')) == (char *)NULL)
+    if ((desc = strrchr(tp->term_names, '|')) == 0)
        desc = "(No description)";
     else
        ++desc;
@@ -213,85 +216,74 @@ static void deschook(const char *cn, TERMTYPE *tp)
     (void) printf("%-10s\t%s\n", cn, desc);
 }
 
-static int typelist(int eargc, char *eargv[],
-                    bool verbosity,
-                    void  (*hook)(const char *, TERMTYPE *tp))
+static int
+typelist(int eargc, char *eargv[],
+    bool verbosity,
+    void (*hook) (const char *, TERMTYPE * tp))
 /* apply a function to each entry in given terminfo directories */
 {
-    int        i;
+    int i;
 
-    for (i = 0; i < eargc; i++)
-    {
-       DIR     *termdir;
+    for (i = 0; i < eargc; i++) {
+       DIR *termdir;
        struct dirent *subdir;
 
-       if ((termdir = opendir(eargv[i])) == (DIR *)NULL)
-       {
+       if ((termdir = opendir(eargv[i])) == 0) {
            (void) fflush(stdout);
            (void) fprintf(stderr,
-                          "%s: can't open terminfo directory %s\n",
-                          _nc_progname, eargv[i]);
-           return(EXIT_FAILURE);
-       }
-       else if (verbosity)
+               "%s: can't open terminfo directory %s\n",
+               _nc_progname, eargv[i]);
+           return (EXIT_FAILURE);
+       } else if (verbosity)
            (void) printf("#\n#%s:\n#\n", eargv[i]);
 
-       while ((subdir = readdir(termdir)) != NULL)
-       {
-           size_t      len = NAMLEN(subdir);
-           char        buf[PATH_MAX];
-           char        name_1[PATH_MAX];
-           DIR *entrydir;
+       while ((subdir = readdir(termdir)) != 0) {
+           size_t len = NAMLEN(subdir);
+           char buf[PATH_MAX];
+           char name_1[PATH_MAX];
+           DIR *entrydir;
            struct dirent *entry;
 
            strncpy(name_1, subdir->d_name, len)[len] = '\0';
-           if (!strcmp(name_1, ".")
-               || !strcmp(name_1, ".."))
+           if (isDotname(name_1))
                continue;
 
-           (void) strcpy(buf, eargv[i]);
-           (void) strcat(buf, "/");
-           (void) strcat(buf, name_1);
-           (void) strcat(buf, "/");
+           (void) sprintf(buf, "%s/%s/", eargv[i], name_1);
            chdir(buf);
            entrydir = opendir(".");
-           while ((entry = readdir(entrydir)) != NULL)
-           {
-               char            name_2[PATH_MAX];
-               TERMTYPE        lterm;
-               char            *cn;
-               int             status;
+           while ((entry = readdir(entrydir)) != 0) {
+               char name_2[PATH_MAX];
+               TERMTYPE lterm;
+               char *cn;
+               int status;
 
                len = NAMLEN(entry);
                strncpy(name_2, entry->d_name, len)[len] = '\0';
-               if (!strcmp(name_2, ".")
-                   || !strcmp(name_2, ".."))
+               if (isDotname(name_2))
                    continue;
 
                status = _nc_read_file_entry(name_2, &lterm);
-               if (status <= 0)
-               {
+               if (status <= 0) {
                    (void) fflush(stdout);
                    (void) fprintf(stderr,
-                                  "toe: couldn't open terminfo file %s.\n",
-                                  name_2);
-                   return(EXIT_FAILURE);
+                       "toe: couldn't open terminfo file %s.\n",
+                       name_2);
+                   return (EXIT_FAILURE);
                }
 
                /* only visit things once, by primary name */
                cn = _nc_first_name(lterm.term_names);
-               if (!strcmp(cn, name_2))
-               {
+               if (!strcmp(cn, name_2)) {
                    /* apply the selected hook function */
-                   (*hook)(cn, &lterm);
+                   (*hook) (cn, &lterm);
                }
                if (lterm.term_names) {
                    free(lterm.term_names);
-                   lterm.term_names = NULL;
+                   lterm.term_names = 0;
                }
                if (lterm.str_table) {
                    free(lterm.str_table);
-                   lterm.str_table = NULL;
+                   lterm.str_table = 0;
                }
            }
            closedir(entrydir);
@@ -299,5 +291,5 @@ static int typelist(int eargc, char *eargv[],
        closedir(termdir);
     }
 
-    return(EXIT_SUCCESS);
+    return (EXIT_SUCCESS);
 }
index 7a859f1641118def2f3612c024771a3c1ec6fa64..63c6d1a5be5b4e532ac6f87da5cad78e8726f68e 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.                        *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*
  * tput.c -- shellscript access to terminal capabilities
  *
@@ -44,7 +43,7 @@
 #include <termsort.c>
 #endif
 
-MODULE_ID("$Id: tput.c,v 1.14 1999/07/31 21:18:29 Goran.Uddeborg Exp $")
+MODULE_ID("$Id: tput.c,v 1.16 2000/03/19 01:08:08 tom Exp $")
 
 #define PUTS(s)                fputs(s, stdout)
 #define PUTCHAR(c)     putchar(c)
@@ -52,261 +51,268 @@ MODULE_ID("$Id: tput.c,v 1.14 1999/07/31 21:18:29 Goran.Uddeborg Exp $")
 
 static char *prg_name;
 
-static void quit(int status, const char *fmt, ...)
+static void
+quit(int status, const char *fmt,...)
 {
-va_list argp;
+    va_list argp;
 
-       va_start(argp,fmt);
-       vfprintf (stderr, fmt, argp);
-       fprintf(stderr, "\n");
-       va_end(argp);
-       exit(status);
+    va_start(argp, fmt);
+    vfprintf(stderr, fmt, argp);
+    fprintf(stderr, "\n");
+    va_end(argp);
+    exit(status);
 }
 
-static void usage(void)
+static void
+usage(void)
 {
-       fprintf(stderr, "usage: %s [-S] [-T term] capname\n", prg_name);
-       exit(EXIT_FAILURE);
+    fprintf(stderr, "usage: %s [-S] [-T term] capname\n", prg_name);
+    exit(EXIT_FAILURE);
 }
 
-static int tput(int argc, char *argv[])
+static int
+tput(int argc, char *argv[])
 {
-char *name;
-char *s;
-int i, j, c;
-int reset, status;
-FILE *f;
-
-       reset = 0;
-       name = argv[0];
-       if (strcmp(name, "reset") == 0) {
-               reset = 1;
+    NCURSES_CONST char *name;
+    char *s;
+    int i, j, c;
+    int reset, status;
+    FILE *f;
+
+    reset = 0;
+    name = argv[0];
+    if (strcmp(name, "reset") == 0) {
+       reset = 1;
+    }
+    if (reset || strcmp(name, "init") == 0) {
+       if (init_prog != 0) {
+           system(init_prog);
        }
-       if (reset || strcmp(name, "init") == 0) {
-               if (init_prog != NULL) {
-                       system(init_prog);
-               }
-               FLUSH;
+       FLUSH;
 
-               if (reset && reset_1string != NULL) {
-                       PUTS(reset_1string);
-               } else if (init_1string != NULL) {
-                       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
-                          && set_right_margin_parm != NULL) {
-                       PUTS(tparm(set_left_margin_parm, 0));
-                       PUTS(tparm(set_right_margin_parm, columns - 1));
-               } else if (clear_margins != NULL && set_left_margin != NULL
-                          && set_right_margin != NULL) {
-                       PUTS(clear_margins);
-                       if (carriage_return != NULL) {
-                               PUTS(carriage_return);
-                       } else {
-                               PUTCHAR('\r');
-                       }
-                       PUTS(set_left_margin);
-                       if (parm_right_cursor) {
-                               PUTS(tparm(parm_right_cursor, columns - 1));
-                       } else {
-                               for(i = 0; i < columns - 1; i++) {
-                                       PUTCHAR(' ');
-                               }
-                       }
-                       PUTS(set_right_margin);
-                       if (carriage_return != NULL) {
-                               PUTS(carriage_return);
-                       } else {
-                               PUTCHAR('\r');
-                       }
-               }
-               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++)
-                                                       PUTCHAR(' ');
-                                       }
-                                       PUTS(set_tab);
-                               }
-                               FLUSH;
-                       }
-               }
+       if (reset && reset_1string != 0) {
+           PUTS(reset_1string);
+       } else if (init_1string != 0) {
+           PUTS(init_1string);
+       }
+       FLUSH;
 
-               if (reset && reset_file != NULL) {
-                       f = fopen(reset_file, "r");
-                       if (f == NULL) {
-                               quit(errno, "Can't open reset_file: '%s'", reset_file);
-                       }
-                       while((c = fgetc(f)) != EOF) {
-                               PUTCHAR(c);
-                       }
-                       fclose(f);
-               } else if (init_file != NULL) {
-                       f = fopen(init_file, "r");
-                       if (f == NULL) {
-                               quit(errno, "Can't open init_file: '%s'", init_file);
-                       }
-                       while((c = fgetc(f)) != EOF) {
-                               PUTCHAR(c);
-                       }
-                       fclose(f);
+       if (reset && reset_2string != 0) {
+           PUTS(reset_2string);
+       } else if (init_2string != 0) {
+           PUTS(init_2string);
+       }
+       FLUSH;
+
+       if (set_lr_margin != 0) {
+           PUTS(tparm(set_lr_margin, 0, columns - 1));
+       } else if (set_left_margin_parm != 0
+           && set_right_margin_parm != 0) {
+           PUTS(tparm(set_left_margin_parm, 0));
+           PUTS(tparm(set_right_margin_parm, columns - 1));
+       } else if (clear_margins != 0
+           && set_left_margin != 0
+           && set_right_margin != 0) {
+           PUTS(clear_margins);
+           if (carriage_return != 0) {
+               PUTS(carriage_return);
+           } else {
+               PUTCHAR('\r');
+           }
+           PUTS(set_left_margin);
+           if (parm_right_cursor) {
+               PUTS(tparm(parm_right_cursor, columns - 1));
+           } else {
+               for (i = 0; i < columns - 1; i++) {
+                   PUTCHAR(' ');
                }
-               FLUSH;
-
-               if (reset && reset_3string != NULL) {
-                       PUTS(reset_3string);
-               } else if (init_2string != NULL) {
-                       PUTS(init_2string);
+           }
+           PUTS(set_right_margin);
+           if (carriage_return != 0) {
+               PUTS(carriage_return);
+           } else {
+               PUTCHAR('\r');
+           }
+       }
+       FLUSH;
+
+       if (init_tabs != 8) {
+           if (clear_all_tabs != 0 && set_tab != 0) {
+               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++)
+                           PUTCHAR(' ');
+                   }
+                   PUTS(set_tab);
                }
                FLUSH;
-               return 0;
+           }
        }
 
-       if (strcmp(name, "longname") == 0) {
-               PUTS(longname());
-               return 0;
+       if (reset && reset_file != 0) {
+           f = fopen(reset_file, "r");
+           if (f == 0) {
+               quit(errno, "Can't open reset_file: '%s'", reset_file);
+           }
+           while ((c = fgetc(f)) != EOF) {
+               PUTCHAR(c);
+           }
+           fclose(f);
+       } else if (init_file != 0) {
+           f = fopen(init_file, "r");
+           if (f == 0) {
+               quit(errno, "Can't open init_file: '%s'", init_file);
+           }
+           while ((c = fgetc(f)) != EOF) {
+               PUTCHAR(c);
+           }
+           fclose(f);
        }
+       FLUSH;
 
-#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;
-                       }
+       if (reset && reset_3string != 0) {
+           PUTS(reset_3string);
+       } else if (init_2string != 0) {
+           PUTS(init_2string);
        }
+       FLUSH;
+       return 0;
+    }
+
+    if (strcmp(name, "longname") == 0) {
+       PUTS(longname());
+       return 0;
+    }
+#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(name)) != CANCELLED_NUMERIC) {
-               (void) printf("%d\n", status);
-               return(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;
-
-                       /* Nasty hack time. The tparm function needs to see numeric
-                        * parameters as numbers, not as pointers to their string
-                        * representations
-                        */
-
-                        for (k = 1; k < argc; k++)
-                               if (isdigit(argv[k][0])) {
-                                       long val = atol(argv[k]);
-                                       argv[k] = (char *)val;
-                               }
-
-                               s = tparm(s,argv[1],argv[2],argv[3],argv[4],
-                                           argv[5],argv[6],argv[7],argv[8],
-                                           argv[9]);
+    if ((status = tigetflag(name)) != -1) {
+       return (status != 0);
+    } else if ((status = tigetnum(name)) != CANCELLED_NUMERIC) {
+       (void) printf("%d\n", status);
+       return (0);
+    } else if ((s = tigetstr(name)) == CANCELLED_STRING) {
+       quit(4, "%s: unknown terminfo capability '%s'", prg_name, name);
+    } else if (s != 0) {
+       if (argc > 1) {
+           int k;
+           char * params[10];
+
+           /* Nasty hack time. The tparm function needs to see numeric
+            * parameters as numbers, not as pointers to their string
+            * representations
+            */
+
+           for (k = 1; k < argc; k++) {
+               if (isdigit(argv[k][0])) {
+                   long val = atol(argv[k]);
+                   params[k] = (char *)val;
+               } else {
+                   params[k] = argv[k];
                }
+           }
+           for (k = argc; k <= 9; k++)
+               params[k] = 0;
 
-               /* use putp() in order to perform padding */
-               putp(s);
-               return(0);
+           s = tparm(s,
+               params[1], params[2], params[3],
+               params[4], params[5], params[6],
+               params[7], params[8], params[9]);
        }
-       return(0);
+
+       /* use putp() in order to perform padding */
+       putp(s);
+       return (0);
+    }
+    return (0);
 }
 
-int main(int argc, char **argv)
+int
+main(int argc, char **argv)
 {
-char *s, *term;
-int errret, cmdline = 1;
-int c;
-char   buf[BUFSIZ];
-int errors = 0;
-
-       prg_name = argv[0];
-       s = strrchr(prg_name, '/');
-       if (s != NULL && *++s != '\0')
+    char *s, *term;
+    int errret, cmdline = 1;
+    int c;
+    char buf[BUFSIZ];
+    int errors = 0;
+
+    prg_name = argv[0];
+    s = strrchr(prg_name, '/');
+    if (s != 0 && *++s != '\0')
        prg_name = s;
 
-       term = getenv("TERM");
-
-       while ((c = getopt (argc, argv, "ST:")) != EOF)
-           switch (c)
-           {
-           case 'S':
-               cmdline = 0;
-               break;
-           case 'T':
-               use_env(FALSE);
-               term = optarg;
-               break;
-           default:
-               usage();
-               /* NOTREACHED */
-           }
-       argc -= optind;
-       argv += optind;
-
-       if (cmdline && argc == 0) {
-               usage();
-               /* NOTREACHED */
+    term = getenv("TERM");
+
+    while ((c = getopt(argc, argv, "ST:")) != EOF)
+       switch (c) {
+       case 'S':
+           cmdline = 0;
+           break;
+       case 'T':
+           use_env(FALSE);
+           term = optarg;
+           break;
+       default:
+           usage();
+           /* NOTREACHED */
        }
-
-       if (term == NULL || *term == '\0')
-               quit(2, "No value for $TERM and no -T specified");
-
-       if (setupterm(term, STDOUT_FILENO, &errret) != OK && errret <= 0) 
-               quit(3, "unknown terminal \"%s\"", term);
-
-       if (cmdline)
-               return tput(argc, argv);
-
-       while (fgets(buf, sizeof(buf), stdin) != (char *)NULL) {
-               char    *argvec[16];    /* command, 9 parms, null, & slop */
-               int      argnum = 0;
-               char    *cp;
-
-               /* crack the argument list into a dope vector */
-               for (cp = buf; *cp; cp++) {
-                       if (isspace(*cp))
-                               *cp = '\0';
-                       else if (cp == buf || cp[-1] == 0)
-                               argvec[argnum++] = cp;
-               }
-               argvec[argnum] = (char *)NULL;
-
-               if (tput(argnum, argvec) != 0)
-                       errors++;
+    argc -= optind;
+    argv += optind;
+
+    if (cmdline && argc == 0) {
+       usage();
+       /* NOTREACHED */
+    }
+
+    if (term == 0 || *term == '\0')
+       quit(2, "No value for $TERM and no -T specified");
+
+    if (setupterm(term, STDOUT_FILENO, &errret) != OK && errret <= 0)
+       quit(3, "unknown terminal \"%s\"", term);
+
+    if (cmdline)
+       return tput(argc, argv);
+
+    while (fgets(buf, sizeof(buf), stdin) != 0) {
+       char *argvec[16];       /* command, 9 parms, null, & slop */
+       int argnum = 0;
+       char *cp;
+
+       /* crack the argument list into a dope vector */
+       for (cp = buf; *cp; cp++) {
+           if (isspace(*cp))
+               *cp = '\0';
+           else if (cp == buf || cp[-1] == 0)
+               argvec[argnum++] = cp;
        }
+       argvec[argnum] = 0;
 
-       return errors > 0;
-}
+       if (tput(argnum, argvec) != 0)
+           errors++;
+    }
 
+    return errors > 0;
+}
index cef980ad9737b566c5eb434d1f53e0c7c0c28e52..392aac0ef55184f1b2db2f5b76fe36884a9da629 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
 /*
  * tset.c - terminal initialization utility
  *
@@ -100,10 +99,10 @@ char *ttyname(int fd);
 #include       <sys/ptem.h>
 #endif
 
-#include <curses.h>    /* for bool typedef */
+#include <curses.h>            /* for bool typedef */
 #include <dump_entry.h>
 
-MODULE_ID("$Id: tset.c,v 0.37 1999/03/14 12:30:02 tom Exp $")
+MODULE_ID("$Id: tset.c,v 0.41 2000/03/12 00:03:00 tom Exp $")
 
 extern char **environ;
 
@@ -114,110 +113,105 @@ const char *_nc_progname = "tset";
 
 static TTY mode, oldmode;
 
-static int     terasechar = -1;        /* new erase character */
-static int     intrchar = -1;          /* new interrupt character */
-static int     isreset;                /* invoked as reset */
-static int     tkillchar = -1;         /* new kill character */
-static int     tlines, tcolumns;               /* window size */
+static int terasechar = -1;    /* new erase character */
+static int intrchar = -1;      /* new interrupt character */
+static int isreset;            /* invoked as reset */
+static int tkillchar = -1;     /* new kill character */
+static int tlines, tcolumns;   /* window size */
 
 #define LOWERCASE(c) ((isalpha(c) && isupper(c)) ? tolower(c) : (c))
 
 static int
-CaselessCmp(const char *a, const char *b) /* strcasecmp isn't portable */
-{
-       while (*a && *b) {
-               int cmp = LOWERCASE(*a) - LOWERCASE(*b);
-               if (cmp != 0)
-                       break;
-               a++, b++;
-       }
-       return LOWERCASE(*a) - LOWERCASE(*b);
+CaselessCmp(const char *a, const char *b)
+{                              /* strcasecmp isn't portable */
+    while (*a && *b) {
+       int cmp = LOWERCASE(*a) - LOWERCASE(*b);
+       if (cmp != 0)
+           break;
+       a++, b++;
+    }
+    return LOWERCASE(*a) - LOWERCASE(*b);
 }
 
-#if !HAVE_STRDUP
-#define strdup _nc_strdup
-extern char *_nc_strdup(const char *);
-#endif /* not HAVE_STRDUP */
-
 static void
-err(const char *fmt, ...)
+err(const char *fmt,...)
 {
-       va_list ap;
-       va_start(ap, fmt);
-       (void)fprintf(stderr, "tset: ");
-       (void)vfprintf(stderr, fmt, ap);
-       va_end(ap);
-       (void)fprintf(stderr, "\n");
-       exit(EXIT_FAILURE);
-       /* NOTREACHED */
+    va_list ap;
+    va_start(ap, fmt);
+    (void) fprintf(stderr, "tset: ");
+    (void) vfprintf(stderr, fmt, ap);
+    va_end(ap);
+    (void) fprintf(stderr, "\n");
+    exit(EXIT_FAILURE);
+    /* NOTREACHED */
 }
 
 static void
 failed(const char *msg)
 {
-       char    temp[BUFSIZ];
-       perror(strcat(strcpy(temp, "tset: "), msg));
-       exit(EXIT_FAILURE);
-       /* NOTREACHED */
+    char temp[BUFSIZ];
+    perror(strncat(strcpy(temp, "tset: "), msg, sizeof(temp) - 10));
+    exit(EXIT_FAILURE);
+    /* NOTREACHED */
 }
 
 static void
 cat(char *file)
 {
-       register int fd, nr, nw;
-       char buf[BUFSIZ];
-
-       if ((fd = open(file, O_RDONLY, 0)) < 0)
-               failed(file);
-
-       while ((nr = read(fd, buf, sizeof(buf))) > 0)
-               if ((nw = write(STDERR_FILENO, buf, (size_t)nr)) == -1)
-                       failed("write to stderr");
-       if (nr != 0)
-               failed(file);
-       (void)close(fd);
+    register int fd, nr, nw;
+    char buf[BUFSIZ];
+
+    if ((fd = open(file, O_RDONLY, 0)) < 0)
+       failed(file);
+
+    while ((nr = read(fd, buf, sizeof(buf))) > 0)
+       if ((nw = write(STDERR_FILENO, buf, (size_t) nr)) == -1)
+           failed("write to stderr");
+    if (nr != 0)
+       failed(file);
+    (void) close(fd);
 }
 
 static int
 outc(int c)
 {
-       return putc(c, stderr);
+    return putc(c, stderr);
 }
 
 /* Prompt the user for a terminal type. */
 static const char *
 askuser(const char *dflt)
 {
-       static char answer[256];
-       char *p;
+    static char answer[256];
+    char *p;
 
-       /* We can get recalled; if so, don't continue uselessly. */
-       if (feof(stdin) || ferror(stdin)) {
-               (void)fprintf(stderr, "\n");
+    /* We can get recalled; if so, don't continue uselessly. */
+    if (feof(stdin) || ferror(stdin)) {
+       (void) fprintf(stderr, "\n");
+       exit(EXIT_FAILURE);
+    }
+    for (;;) {
+       if (dflt)
+           (void) fprintf(stderr, "Terminal type? [%s] ", dflt);
+       else
+           (void) fprintf(stderr, "Terminal type? ");
+       (void) fflush(stderr);
+
+       if (fgets(answer, sizeof(answer), stdin) == 0) {
+           if (dflt == 0) {
+               (void) fprintf(stderr, "\n");
                exit(EXIT_FAILURE);
+           }
+           return (dflt);
        }
-       for (;;) {
-               if (dflt)
-                       (void)fprintf(stderr, "Terminal type? [%s] ", dflt);
-               else
-                       (void)fprintf(stderr, "Terminal type? ");
-               (void)fflush(stderr);
-
-               if (fgets(answer, sizeof(answer), stdin) == 0) {
-                       if (dflt == 0) {
-                               (void)fprintf(stderr, "\n");
-                               exit(EXIT_FAILURE);
-                       }
-                       return (dflt);
-               }
 
-               if ((p = strchr(answer, '\n')) != 0)
-                       *p = '\0';
-               if (answer[0])
-                       return (answer);
-               if (dflt != 0)
-                       return (dflt);
-       }
+       if ((p = strchr(answer, '\n')) != 0)
+           *p = '\0';
+       if (answer[0])
+           return (answer);
+       if (dflt != 0)
+           return (dflt);
+    }
 }
 
 /**************************************************************************
@@ -235,88 +229,89 @@ askuser(const char *dflt)
 #define        LE              (LT | EQ)
 
 typedef struct map {
-       struct map *next;       /* Linked list of maps. */
-       const char *porttype;   /* Port type, or "" for any. */
-       const char *type;       /* Terminal type to select. */
-       int conditional;        /* Baud rate conditionals bitmask. */
-       speed_t speed;          /* Baud rate to compare against. */
+    struct map *next;          /* Linked list of maps. */
+    const char *porttype;      /* Port type, or "" for any. */
+    const char *type;          /* Terminal type to select. */
+    int conditional;           /* Baud rate conditionals bitmask. */
+    speed_t speed;             /* Baud rate to compare against. */
 } MAP;
 
 static MAP *cur, *maplist;
 
 typedef struct speeds {
-       const char *string;
-       int     speed;
+    const char *string;
+    int speed;
 } SPEEDS;
 
-static const SPEEDS speeds[] = {
-       { "0",          B0 },
-       { "50",         B50 },
-       { "75",         B75 },
-       { "110",        B110 },
-       { "134",        B134 },
-       { "134.5",      B134 },
-       { "150",        B150 },
-       { "200",        B200 },
-       { "300",        B300 },
-       { "600",        B600 },
-       { "1200",       B1200 },
-       { "1800",       B1800 },
-       { "2400",       B2400 },
-       { "4800",       B4800 },
-       { "9600",       B9600 },
-       { "19200",      B19200 },
-       { "38400",      B38400 },
-       { "19200",      B19200 },
-       { "38400",      B38400 },
+static const SPEEDS speeds[] =
+{
+    {"0", B0},
+    {"50", B50},
+    {"75", B75},
+    {"110", B110},
+    {"134", B134},
+    {"134.5", B134},
+    {"150", B150},
+    {"200", B200},
+    {"300", B300},
+    {"600", B600},
+    {"1200", B1200},
+    {"1800", B1800},
+    {"2400", B2400},
+    {"4800", B4800},
+    {"9600", B9600},
+    {"19200", B19200},
+    {"38400", B38400},
+    {"19200", B19200},
+    {"38400", B38400},
 #ifdef B19200
-       { "19200",      B19200 },
+    {"19200", B19200},
 #else
 #ifdef EXTA
-       { "19200",      EXTA },
+    {"19200", EXTA},
 #endif
 #endif
 #ifdef B38400
-       { "38400",      B38400 },
+    {"38400", B38400},
 #else
 #ifdef EXTB
-       { "38400",      EXTB },
+    {"38400", EXTB},
 #endif
 #endif
 #ifdef B57600
-       { "57600",      B57600 },
+    {"57600", B57600},
 #endif
 #ifdef B115200
-       { "115200",     B115200 },
+    {"115200", B115200},
 #endif
 #ifdef B230400
-       { "230400",     B230400 },
+    {"230400", B230400},
 #endif
 #ifdef B460800
-       { "460800",     B460800 },
+    {"460800", B460800},
 #endif
-       { (char *)0,    0 }
+    {(char *) 0, 0}
 };
 
 static int
 tbaudrate(char *rate)
 {
-       const SPEEDS *sp;
-       int found = FALSE;
+    const SPEEDS *sp;
+    int found = FALSE;
 
-       /* The baudrate number can be preceded by a 'B', which is ignored. */
-       if (*rate == 'B')
-               ++rate;
+    /* The baudrate number can be preceded by a 'B', which is ignored. */
+    if (*rate == 'B')
+       ++rate;
 
-       for (sp = speeds; sp->string; ++sp) {
-               if (!CaselessCmp(rate, sp->string)) {
-                       found = TRUE;
-                       break;
-               }
+    for (sp = speeds; sp->string; ++sp) {
+       if (!CaselessCmp(rate, sp->string)) {
+           found = TRUE;
+           break;
        }
-       if (!found)
-               err("unknown baud rate %s", rate);
-       return (sp->speed);
+    }
+    if (!found)
+       err("unknown baud rate %s", rate);
+    return (sp->speed);
 }
 
 /*
@@ -327,110 +322,111 @@ tbaudrate(char *rate)
 static void
 add_mapping(const char *port, char *arg)
 {
-       MAP *mapp;
-       char *copy, *p;
-       const char *termp;
-       char *base = 0;
-
-       copy = strdup(arg);
-       mapp = malloc(sizeof(MAP));
-       if (copy == 0 || mapp == 0)
-               failed("malloc");
-       mapp->next = 0;
-       if (maplist == 0)
-               cur = maplist = mapp;
-       else {
-               cur->next = mapp;
-               cur =  mapp;
-       }
-
-       mapp->porttype = arg;
-       mapp->conditional = 0;
-
-       arg = strpbrk(arg, "><@=!:");
-
-       if (arg == 0) {                 /* [?]term */
-               mapp->type = mapp->porttype;
-               mapp->porttype = 0;
-               goto done;
-       }
-
-       if (arg == mapp->porttype)              /* [><@=! baud]:term */
-               termp = mapp->porttype = 0;
-       else
-               termp = base = arg;
-
-       for (;; ++arg)                          /* Optional conditionals. */
-               switch(*arg) {
-               case '<':
-                       if (mapp->conditional & GT)
-                               goto badmopt;
-                       mapp->conditional |= LT;
-                       break;
-               case '>':
-                       if (mapp->conditional & LT)
-                               goto badmopt;
-                       mapp->conditional |= GT;
-                       break;
-               case '@':
-               case '=':                       /* Not documented. */
-                       mapp->conditional |= EQ;
-                       break;
-               case '!':
-                       mapp->conditional |= NOT;
-                       break;
-               default:
-                       goto next;
-               }
-
-next:  if (*arg == ':') {
-               if (mapp->conditional)
-                       goto badmopt;
-               ++arg;
-       } else {                                /* Optional baudrate. */
-               arg = strchr(p = arg, ':');
-               if (arg == 0)
-                       goto badmopt;
-               *arg++ = '\0';
-               mapp->speed = tbaudrate(p);
-       }
-
-       if (arg == (char *)0)           /* Non-optional type. */
+    MAP *mapp;
+    char *copy, *p;
+    const char *termp;
+    char *base = 0;
+
+    copy = strdup(arg);
+    mapp = malloc(sizeof(MAP));
+    if (copy == 0 || mapp == 0)
+       failed("malloc");
+    mapp->next = 0;
+    if (maplist == 0)
+       cur = maplist = mapp;
+    else {
+       cur->next = mapp;
+       cur = mapp;
+    }
+
+    mapp->porttype = arg;
+    mapp->conditional = 0;
+
+    arg = strpbrk(arg, "><@=!:");
+
+    if (arg == 0) {            /* [?]term */
+       mapp->type = mapp->porttype;
+       mapp->porttype = 0;
+       goto done;
+    }
+
+    if (arg == mapp->porttype) /* [><@=! baud]:term */
+       termp = mapp->porttype = 0;
+    else
+       termp = base = arg;
+
+    for (;; ++arg) {           /* Optional conditionals. */
+       switch (*arg) {
+       case '<':
+           if (mapp->conditional & GT)
                goto badmopt;
-
-       mapp->type = arg;
-
-       /* Terminate porttype, if specified. */
-       if (termp != 0)
-               *base = '\0';
-
-       /* If a NOT conditional, reverse the test. */
-       if (mapp->conditional & NOT)
-               mapp->conditional = ~mapp->conditional & (EQ | GT | LT);
-
-       /* If user specified a port with an option flag, set it. */
-done:  if (port) {
-               if (mapp->porttype)
-badmopt:               err("illegal -m option format: %s", copy);
-               mapp->porttype = port;
+           mapp->conditional |= LT;
+           break;
+       case '>':
+           if (mapp->conditional & LT)
+               goto badmopt;
+           mapp->conditional |= GT;
+           break;
+       case '@':
+       case '=':               /* Not documented. */
+           mapp->conditional |= EQ;
+           break;
+       case '!':
+           mapp->conditional |= NOT;
+           break;
+       default:
+           goto next;
        }
-
+    }
+
+  next:
+    if (*arg == ':') {
+       if (mapp->conditional)
+           goto badmopt;
+       ++arg;
+    } else {                   /* Optional baudrate. */
+       arg = strchr(p = arg, ':');
+       if (arg == 0)
+           goto badmopt;
+       *arg++ = '\0';
+       mapp->speed = tbaudrate(p);
+    }
+
+    if (arg == (char *) 0)     /* Non-optional type. */
+       goto badmopt;
+
+    mapp->type = arg;
+
+    /* Terminate porttype, if specified. */
+    if (termp != 0)
+       *base = '\0';
+
+    /* If a NOT conditional, reverse the test. */
+    if (mapp->conditional & NOT)
+       mapp->conditional = ~mapp->conditional & (EQ | GT | LT);
+
+    /* If user specified a port with an option flag, set it. */
+  done:if (port) {
+       if (mapp->porttype)
+         badmopt:err("illegal -m option format: %s", copy);
+       mapp->porttype = port;
+    }
 #ifdef MAPDEBUG
-       (void)printf("port: %s\n", mapp->porttype ? mapp->porttype : "ANY");
-       (void)printf("type: %s\n", mapp->type);
-       (void)printf("conditional: ");
-       p = "";
-       if (mapp->conditional & GT) {
-               (void)printf("GT");
-               p = "/";
-       }
-       if (mapp->conditional & EQ) {
-               (void)printf("%sEQ", p);
-               p = "/";
-       }
-       if (mapp->conditional & LT)
-               (void)printf("%sLT", p);
-       (void)printf("\nspeed: %d\n", mapp->speed);
+    (void) printf("port: %s\n", mapp->porttype ? mapp->porttype : "ANY");
+    (void) printf("type: %s\n", mapp->type);
+    (void) printf("conditional: ");
+    p = "";
+    if (mapp->conditional & GT) {
+       (void) printf("GT");
+       p = "/";
+    }
+    if (mapp->conditional & EQ) {
+       (void) printf("%sEQ", p);
+       p = "/";
+    }
+    if (mapp->conditional & LT)
+       (void) printf("%sLT", p);
+    (void) printf("\nspeed: %d\n", mapp->speed);
 #endif
 }
 
@@ -442,38 +438,38 @@ badmopt:          err("illegal -m option format: %s", copy);
 static const char *
 mapped(const char *type)
 {
-       MAP *mapp;
-       int match;
-
-       for (mapp = maplist; mapp; mapp = mapp->next)
-               if (mapp->porttype == 0 || !strcmp(mapp->porttype, type)) {
-                       switch (mapp->conditional) {
-                       case 0:                 /* No test specified. */
-                               match = TRUE;
-                               break;
-                       case EQ:
-                               match = (ospeed == mapp->speed);
-                               break;
-                       case GE:
-                               match = (ospeed >= mapp->speed);
-                               break;
-                       case GT:
-                               match = (ospeed > mapp->speed);
-                               break;
-                       case LE:
-                               match = (ospeed <= mapp->speed);
-                               break;
-                       case LT:
-                               match = (ospeed < mapp->speed);
-                               break;
-                       default:
-                               match = FALSE;
-                       }
-                       if (match)
-                               return (mapp->type);
-               }
-       /* No match found; return given type. */
-       return (type);
+    MAP *mapp;
+    int match;
+
+    for (mapp = maplist; mapp; mapp = mapp->next)
+       if (mapp->porttype == 0 || !strcmp(mapp->porttype, type)) {
+           switch (mapp->conditional) {
+           case 0:             /* No test specified. */
+               match = TRUE;
+               break;
+           case EQ:
+               match = (ospeed == mapp->speed);
+               break;
+           case GE:
+               match = (ospeed >= mapp->speed);
+               break;
+           case GT:
+               match = (ospeed > mapp->speed);
+               break;
+           case LE:
+               match = (ospeed <= mapp->speed);
+               break;
+           case LT:
+               match = (ospeed < mapp->speed);
+               break;
+           default:
+               match = FALSE;
+           }
+           if (match)
+               return (mapp->type);
+       }
+    /* No match found; return given type. */
+    return (type);
 }
 
 /**************************************************************************
@@ -489,118 +485,120 @@ mapped(const char *type)
 static const char *
 get_termcap_entry(char *userarg)
 {
-       int rval, errret;
-       char *p;
-       const char *ttype;
+    int rval, errret;
+    char *p;
+    const char *ttype;
 #if HAVE_GETTTYNAM
-       struct ttyent *t;
+    struct ttyent *t;
 #else
-       FILE *fp;
+    FILE *fp;
 #endif
-       char *ttypath;
+    char *ttypath;
 
-       if (userarg) {
-               ttype = userarg;
-               goto found;
-       }
+    if (userarg) {
+       ttype = userarg;
+       goto found;
+    }
 
-       /* Try the environment. */
-       if ((ttype = getenv("TERM")) != 0)
-               goto map;
+    /* Try the environment. */
+    if ((ttype = getenv("TERM")) != 0)
+       goto map;
 
-       if ((ttypath = ttyname(STDERR_FILENO)) != 0) {
-               if ((p = strrchr(ttypath, '/')) != 0)
-                       ++p;
-               else
-                       p = ttypath;
+    if ((ttypath = ttyname(STDERR_FILENO)) != 0) {
+       if ((p = strrchr(ttypath, '/')) != 0)
+           ++p;
+       else
+           p = ttypath;
 #if HAVE_GETTTYNAM
-               /*
-                * We have the 4.3BSD library call getttynam(3); that means
-                * there's an /etc/ttys to look up device-to-type mappings in.
-                * Try ttyname(3); check for dialup or other mapping.
-                */
-               if ((t = getttynam(p))) {
-                       ttype = t->ty_type;
-                       goto map;
-               }
+       /*
+        * We have the 4.3BSD library call getttynam(3); that means
+        * there's an /etc/ttys to look up device-to-type mappings in.
+        * Try ttyname(3); check for dialup or other mapping.
+        */
+       if ((t = getttynam(p))) {
+           ttype = t->ty_type;
+           goto map;
+       }
 #else
-               if ((fp = fopen("/etc/ttytype", "r")) != 0
-                || (fp = fopen("/etc/ttys", "r")) != 0) {
-                       char buffer[BUFSIZ];
-                       char *s, *t, *d;
-
-                       while (fgets(buffer, sizeof(buffer)-1, fp) != 0) {
-                               for (s = buffer, t = d = 0; *s; s++) {
-                                       if (isspace(*s))
-                                               *s = '\0';
-                                       else if (t == 0)
-                                               t = s;
-                                       else if (d == 0 && s != buffer && s[-1] == '\0')
-                                               d = s;
-                               }
-                               if (t != 0 && d != 0 && !strcmp(d,p)) {
-                                       ttype = strdup(t);
-                                       fclose(fp);
-                                       goto map;
-                               }
-                       }
-                       fclose(fp);
+       if ((fp = fopen("/etc/ttytype", "r")) != 0
+           || (fp = fopen("/etc/ttys", "r")) != 0) {
+           char buffer[BUFSIZ];
+           char *s, *t, *d;
+
+           while (fgets(buffer, sizeof(buffer) - 1, fp) != 0) {
+               for (s = buffer, t = d = 0; *s; s++) {
+                   if (isspace(*s))
+                       *s = '\0';
+                   else if (t == 0)
+                       t = s;
+                   else if (d == 0 && s != buffer && s[-1] == '\0')
+                       d = s;
                }
-#endif /* HAVE_GETTTYNAM */
+               if (t != 0 && d != 0 && !strcmp(d, p)) {
+                   ttype = strdup(t);
+                   fclose(fp);
+                   goto map;
+               }
+           }
+           fclose(fp);
        }
+#endif /* HAVE_GETTTYNAM */
+    }
 
-       /* If still undefined, use "unknown". */
-       ttype = "unknown";
+    /* If still undefined, use "unknown". */
+    ttype = "unknown";
 
-map:   ttype = mapped(ttype);
+  map:ttype = mapped(ttype);
 
-       /*
-        * If not a path, remove TERMCAP from the environment so we get a
-        * real entry from /etc/termcap.  This prevents us from being fooled
-        * by out of date stuff in the environment.
+    /*
+     * If not a path, remove TERMCAP from the environment so we get a
+     * real entry from /etc/termcap.  This prevents us from being fooled
+     * by out of date stuff in the environment.
+     */
+  found:if ((p = getenv("TERMCAP")) != 0 && *p != '/') {
+       /* 'unsetenv("TERMCAP")' is not portable.
+        * The 'environ' array is better.
         */
-found: if ((p = getenv("TERMCAP")) != 0 && *p != '/') {
-               /* 'unsetenv("TERMCAP")' is not portable.
-                * The 'environ' array is better.
-                */
-               int n;
-               for (n = 0; environ[n] != 0; n++) {
-                       if (!strncmp("TERMCAP=", environ[n], 8)) {
-                               while ((environ[n] = environ[n+1]) != 0) {
-                                       n++;
-                               }
-                               break;
-                       }
+       int n;
+       for (n = 0; environ[n] != 0; n++) {
+           if (!strncmp("TERMCAP=", environ[n], 8)) {
+               while ((environ[n] = environ[n + 1]) != 0) {
+                   n++;
                }
+               break;
+           }
        }
-
-       /*
-        * ttype now contains a pointer to the type of the terminal.
-        * If the first character is '?', ask the user.
-        */
-       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((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);
-                       ttype = 0;
-               }
-               ttype = askuser(ttype);
+    }
+
+    /*
+     * ttype now contains a pointer to the type of the terminal.
+     * If the first character is '?', ask the user.
+     */
+    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((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);
+           ttype = 0;
        }
+       ttype = askuser(ttype);
+    }
 #if BROKEN_LINKER
-       tgetflag("am"); /* force lib_termcap.o to be linked for 'ospeed' */
+    tgetflag("am");            /* force lib_termcap.o to be linked for 'ospeed' */
 #endif
-       return (ttype);
+    return (ttype);
 }
 
 /**************************************************************************
@@ -637,7 +635,7 @@ found:      if ((p = getenv("TERMCAP")) != 0 && *p != '/') {
 
 #define        CHK(val, dft)   ((int)val <= 0 ? dft : val)
 
-static bool    set_tabs (void);
+static bool set_tabs(void);
 
 /*
  * Reset the terminal mode bits to a sensible state.  Very useful after
@@ -647,115 +645,115 @@ static void
 reset_mode(void)
 {
 #ifdef TERMIOS
-       tcgetattr(STDERR_FILENO, &mode);
+    tcgetattr(STDERR_FILENO, &mode);
 #else
-       stty(STDERR_FILENO,&mode);
+    stty(STDERR_FILENO, &mode);
 #endif
 
 #ifdef TERMIOS
 #if defined(VDISCARD) && defined(CDISCARD)
-       mode.c_cc[VDISCARD] = CHK(mode.c_cc[VDISCARD], CDISCARD);
+    mode.c_cc[VDISCARD] = CHK(mode.c_cc[VDISCARD], CDISCARD);
 #endif
-       mode.c_cc[VEOF] = CHK(mode.c_cc[VEOF], CEOF);
-       mode.c_cc[VERASE] = CHK(mode.c_cc[VERASE], CERASE);
+    mode.c_cc[VEOF] = CHK(mode.c_cc[VEOF], CEOF);
+    mode.c_cc[VERASE] = CHK(mode.c_cc[VERASE], CERASE);
 #if defined(VFLUSH) && defined(CFLUSH)
-       mode.c_cc[VFLUSH] = CHK(mode.c_cc[VFLUSH], CFLUSH);
+    mode.c_cc[VFLUSH] = CHK(mode.c_cc[VFLUSH], CFLUSH);
 #endif
-       mode.c_cc[VINTR] = CHK(mode.c_cc[VINTR], CINTR);
-       mode.c_cc[VKILL] = CHK(mode.c_cc[VKILL], CKILL);
+    mode.c_cc[VINTR] = CHK(mode.c_cc[VINTR], CINTR);
+    mode.c_cc[VKILL] = CHK(mode.c_cc[VKILL], CKILL);
 #if defined(VLNEXT) && defined(CLNEXT)
-       mode.c_cc[VLNEXT] = CHK(mode.c_cc[VLNEXT], CLNEXT);
+    mode.c_cc[VLNEXT] = CHK(mode.c_cc[VLNEXT], CLNEXT);
 #endif
-       mode.c_cc[VQUIT] = CHK(mode.c_cc[VQUIT], CQUIT);
+    mode.c_cc[VQUIT] = CHK(mode.c_cc[VQUIT], CQUIT);
 #if defined(VREPRINT) && defined(CRPRNT)
-       mode.c_cc[VREPRINT] = CHK(mode.c_cc[VREPRINT], CRPRNT);
+    mode.c_cc[VREPRINT] = CHK(mode.c_cc[VREPRINT], CRPRNT);
 #endif
 #if defined(VSTART) && defined(CSTART)
-       mode.c_cc[VSTART] = CHK(mode.c_cc[VSTART], CSTART);
+    mode.c_cc[VSTART] = CHK(mode.c_cc[VSTART], CSTART);
 #endif
 #if defined(VSTOP) && defined(CSTOP)
-       mode.c_cc[VSTOP] = CHK(mode.c_cc[VSTOP], CSTOP);
+    mode.c_cc[VSTOP] = CHK(mode.c_cc[VSTOP], CSTOP);
 #endif
 #if defined(VSUSP) && defined(CSUSP)
-       mode.c_cc[VSUSP] = CHK(mode.c_cc[VSUSP], CSUSP);
+    mode.c_cc[VSUSP] = CHK(mode.c_cc[VSUSP], CSUSP);
 #endif
 #if defined(VWERASE) && defined(CWERASE)
-       mode.c_cc[VWERASE] = CHK(mode.c_cc[VWERASE], CWERASE);
+    mode.c_cc[VWERASE] = CHK(mode.c_cc[VWERASE], CWERASE);
 #endif
 
-       mode.c_iflag &= ~(IGNBRK | PARMRK | INPCK | ISTRIP | INLCR | IGNCR
+    mode.c_iflag &= ~(IGNBRK | PARMRK | INPCK | ISTRIP | INLCR | IGNCR
 #ifdef IUCLC
-                         | IUCLC
+       | IUCLC
 #endif
 #ifdef IXANY
-                         | IXANY
+       | IXANY
 #endif
-                         | IXOFF);
+       | IXOFF);
 
-       mode.c_iflag |= (BRKINT | IGNPAR | ICRNL | IXON
+    mode.c_iflag |= (BRKINT | IGNPAR | ICRNL | IXON
 #ifdef IMAXBEL
-                        | IMAXBEL
+       | IMAXBEL
 #endif
-                        );
+       );
 
-       mode.c_oflag &= ~(0
+    mode.c_oflag &= ~(0
 #ifdef OLCUC
-                         | OLCUC
+       | OLCUC
 #endif
 #ifdef OCRNL
-                         | OCRNL
+       | OCRNL
 #endif
 #ifdef ONOCR
-                         | ONOCR
+       | ONOCR
 #endif
 #ifdef ONLRET
-                         | ONLRET
+       | ONLRET
 #endif
 #ifdef OFILL
-                         | OFILL
+       | OFILL
 #endif
 #ifdef OFDEL
-                         | OFDEL
+       | OFDEL
 #endif
 #ifdef NLDLY
-                         | NLDLY | CRDLY | TABDLY | BSDLY | VTDLY | FFDLY
+       | NLDLY | CRDLY | TABDLY | BSDLY | VTDLY | FFDLY
 #endif
-                         );
+       );
 
-       mode.c_oflag |= (OPOST
+    mode.c_oflag |= (OPOST
 #ifdef ONLCR
-                        | ONLCR
+       | ONLCR
 #endif
-                        );
+       );
 
-       mode.c_cflag &= ~(CSIZE | CSTOPB | PARENB | PARODD | CLOCAL);
-       mode.c_cflag |= (CS8 | CREAD);
-       mode.c_lflag &= ~(ECHONL | NOFLSH
+    mode.c_cflag &= ~(CSIZE | CSTOPB | PARENB | PARODD | CLOCAL);
+    mode.c_cflag |= (CS8 | CREAD);
+    mode.c_lflag &= ~(ECHONL | NOFLSH
 #ifdef TOSTOP
-                         | TOSTOP
+       | TOSTOP
 #endif
 #ifdef ECHOPTR
-                         | ECHOPRT
+       | ECHOPRT
 #endif
 #ifdef XCASE
-                         | XCASE
+       | XCASE
 #endif
-                         );
+       );
 
-       mode.c_lflag |= (ISIG | ICANON | ECHO | ECHOE | ECHOK
+    mode.c_lflag |= (ISIG | ICANON | ECHO | ECHOE | ECHOK
 #ifdef ECHOCTL
-                        | ECHOCTL
+       | ECHOCTL
 #endif
 #ifdef ECHOKE
-                        | ECHOKE
+       | ECHOKE
 #endif
-                        );
+       );
 #endif
 
 #ifdef TERMIOS
-       tcsetattr(STDERR_FILENO, TCSADRAIN, &mode);
+    tcsetattr(STDERR_FILENO, TCSADRAIN, &mode);
 #else
-       stty(STDERR_FILENO, &mode);
+    stty(STDERR_FILENO, &mode);
 #endif
 }
 
@@ -766,16 +764,16 @@ reset_mode(void)
 static int
 default_erase(void)
 {
-       int result;
+    int result;
 
-       if (over_strike
-        && key_backspace != 0
-        && strlen(key_backspace) == 1)
-               result = key_backspace[0];
-       else
-               result = CERASE;
+    if (over_strike
+       && key_backspace != 0
+       && strlen(key_backspace) == 1)
+       result = key_backspace[0];
+    else
+       result = CERASE;
 
-       return result;
+    return result;
 }
 
 /*
@@ -789,14 +787,14 @@ static void
 set_control_chars(void)
 {
 #ifdef TERMIOS
-       if (mode.c_cc[VERASE] == 0 || terasechar >= 0)
-               mode.c_cc[VERASE] = terasechar >= 0 ? terasechar : default_erase();
+    if (mode.c_cc[VERASE] == 0 || terasechar >= 0)
+       mode.c_cc[VERASE] = terasechar >= 0 ? terasechar : default_erase();
 
-       if (mode.c_cc[VINTR] == 0 || intrchar >= 0)
-                mode.c_cc[VINTR] = intrchar >= 0 ? intrchar : CINTR;
+    if (mode.c_cc[VINTR] == 0 || intrchar >= 0)
+       mode.c_cc[VINTR] = intrchar >= 0 ? intrchar : CINTR;
 
-       if (mode.c_cc[VKILL] == 0 || tkillchar >= 0)
-               mode.c_cc[VKILL] = tkillchar >= 0 ? tkillchar : CKILL;
+    if (mode.c_cc[VKILL] == 0 || tkillchar >= 0)
+       mode.c_cc[VKILL] = tkillchar >= 0 ? tkillchar : CKILL;
 #endif
 }
 
@@ -810,62 +808,62 @@ static void
 set_conversions(void)
 {
 #ifdef __OBSOLETE__
-       /*
-        * Conversion logic for some *really* ancient terminal glitches,
-        * not supported in terminfo.  Left here for succeeding generations
-        * to marvel at.
-        */
-       if (tgetflag("UC")) {
+    /*
+     * Conversion logic for some *really* ancient terminal glitches,
+     * not supported in terminfo.  Left here for succeeding generations
+     * to marvel at.
+     */
+    if (tgetflag("UC")) {
 #ifdef IUCLC
-               mode.c_iflag |= IUCLC;
-               mode.c_oflag |= OLCUC;
+       mode.c_iflag |= IUCLC;
+       mode.c_oflag |= OLCUC;
 #endif
-       } else if (tgetflag("LC")) {
+    } else if (tgetflag("LC")) {
 #ifdef IUCLC
-               mode.c_iflag &= ~IUCLC;
-               mode.c_oflag &= ~OLCUC;
+       mode.c_iflag &= ~IUCLC;
+       mode.c_oflag &= ~OLCUC;
 #endif
-       }
-       mode.c_iflag &= ~(PARMRK | INPCK);
-       mode.c_lflag |= ICANON;
-       if (tgetflag("EP")) {
-               mode.c_cflag |= PARENB;
-               mode.c_cflag &= ~PARODD;
-       }
-       if (tgetflag("OP")) {
-               mode.c_cflag |= PARENB;
-               mode.c_cflag |= PARODD;
-       }
+    }
+    mode.c_iflag &= ~(PARMRK | INPCK);
+    mode.c_lflag |= ICANON;
+    if (tgetflag("EP")) {
+       mode.c_cflag |= PARENB;
+       mode.c_cflag &= ~PARODD;
+    }
+    if (tgetflag("OP")) {
+       mode.c_cflag |= PARENB;
+       mode.c_cflag |= PARODD;
+    }
 #endif /* __OBSOLETE__ */
 
 #ifdef TERMIOS
 #ifdef ONLCR
-       mode.c_oflag |= ONLCR;
+    mode.c_oflag |= ONLCR;
 #endif
-       mode.c_iflag |= ICRNL;
-       mode.c_lflag |= ECHO;
+    mode.c_iflag |= ICRNL;
+    mode.c_lflag |= ECHO;
 #ifdef OXTABS
-       mode.c_oflag |= OXTABS;
+    mode.c_oflag |= OXTABS;
 #endif /* OXTABS */
 
-       /* test used to be tgetflag("NL") */
-       if (newline != (char *)0 && newline[0] == '\n' && !newline[1]) {
-               /* Newline, not linefeed. */
+    /* test used to be tgetflag("NL") */
+    if (newline != (char *) 0 && newline[0] == '\n' && !newline[1]) {
+       /* Newline, not linefeed. */
 #ifdef ONLCR
-               mode.c_oflag &= ~ONLCR;
+       mode.c_oflag &= ~ONLCR;
 #endif
-               mode.c_iflag &= ~ICRNL;
-       }
+       mode.c_iflag &= ~ICRNL;
+    }
 #ifdef __OBSOLETE__
-       if (tgetflag("HD"))                     /* Half duplex. */
-               mode.c_lflag &= ~ECHO;
+    if (tgetflag("HD"))                /* Half duplex. */
+       mode.c_lflag &= ~ECHO;
 #endif /* __OBSOLETE__ */
 #ifdef OXTABS
-       /* test used to be tgetflag("pt") */
-       if (has_hardware_tabs)                  /* Print tabs. */
-               mode.c_oflag &= ~OXTABS;
+    /* test used to be tgetflag("pt") */
+    if (has_hardware_tabs)     /* Print tabs. */
+       mode.c_oflag &= ~OXTABS;
 #endif /* OXTABS */
-       mode.c_lflag |= (ECHOE | ECHOK);
+    mode.c_lflag |= (ECHOE | ECHOK);
 #endif
 }
 
@@ -873,45 +871,45 @@ set_conversions(void)
 static void
 set_init(void)
 {
-       char    *p;
-       bool settle;
+    char *p;
+    bool settle;
 
 #ifdef __OBSOLETE__
-       if (pad_char != (char *)0)              /* Get/set pad character. */
-               PC = pad_char[0];
+    if (pad_char != (char *) 0)        /* Get/set pad character. */
+       PC = pad_char[0];
 #endif /* OBSOLETE */
 
 #ifdef TAB3
-       if (oldmode.c_oflag & (TAB3 | ONLCR | OCRNL | ONLRET)) {
-               oldmode.c_oflag &= (TAB3 | ONLCR | OCRNL | ONLRET);
-               tcsetattr(STDERR_FILENO, TCSADRAIN, &oldmode);
-       }
+    if (oldmode.c_oflag & (TAB3 | ONLCR | OCRNL | ONLRET)) {
+       oldmode.c_oflag &= (TAB3 | ONLCR | OCRNL | ONLRET);
+       tcsetattr(STDERR_FILENO, TCSADRAIN, &oldmode);
+    }
 #endif
-       settle = set_tabs();
+    settle = set_tabs();
 
-       if (isreset) {
-               if ((p = reset_1string) != 0) {
-                       tputs(p, 0, outc);
-                       settle = TRUE;
-               }
-               if ((p = reset_2string) != 0) {
-                       tputs(p, 0, outc);
-                       settle = TRUE;
-               }
-               /* What about rf, rs3, as per terminfo man page? */
-               /* also might be nice to send rmacs, rmul, rmm */
-               if ((p = reset_file) != 0
-                || (p = init_file) != 0) {
-                       cat(p);
-                       settle = TRUE;
-               }
+    if (isreset) {
+       if ((p = reset_1string) != 0) {
+           tputs(p, 0, outc);
+           settle = TRUE;
        }
-
-       if (settle) {
-               (void)putc('\r', stderr);
-               (void)fflush(stderr);
-               (void)napms(1000);      /* Settle the terminal. */
+       if ((p = reset_2string) != 0) {
+           tputs(p, 0, outc);
+           settle = TRUE;
+       }
+       /* What about rf, rs3, as per terminfo man page? */
+       /* also might be nice to send rmacs, rmul, rmm */
+       if ((p = reset_file) != 0
+           || (p = init_file) != 0) {
+           cat(p);
+           settle = TRUE;
        }
+    }
+
+    if (settle) {
+       (void) putc('\r', stderr);
+       (void) fflush(stderr);
+       (void) napms(1000);     /* Settle the terminal. */
+    }
 }
 
 /*
@@ -923,28 +921,28 @@ set_init(void)
 static bool
 set_tabs()
 {
-       if (set_tab && clear_all_tabs) {
-               int c;
-
-               (void)putc('\r', stderr);       /* Force to left margin. */
-               tputs(clear_all_tabs, 0, outc);
-
-               for (c = 8; c < tcolumns; c += 8) {
-                       /* Get to the right column.  In BSD tset, this
-                        * used to try a bunch of half-clever things
-                        * with cup and hpa, for an average saving of
-                        * somewhat less than two character times per
-                        * tab stop, less that .01 sec at 2400cps. We
-                        * lost all this cruft because it seemed to be
-                        * introducing some odd bugs.
-                        * ----------12345678----------- */
-                       (void)fputs("        ", stderr);
-                       tputs(set_tab, 0, outc);
-               }
-               putc('\r', stderr);
-               return (TRUE);
+    if (set_tab && clear_all_tabs) {
+       int c;
+
+       (void) putc('\r', stderr);      /* Force to left margin. */
+       tputs(clear_all_tabs, 0, outc);
+
+       for (c = 8; c < tcolumns; c += 8) {
+           /* Get to the right column.  In BSD tset, this
+            * used to try a bunch of half-clever things
+            * with cup and hpa, for an average saving of
+            * somewhat less than two character times per
+            * tab stop, less that .01 sec at 2400cps. We
+            * lost all this cruft because it seemed to be
+            * introducing some odd bugs.
+            * ----------12345678----------- */
+           (void) fputs("        ", stderr);
+           tputs(set_tab, 0, outc);
        }
-       return (FALSE);
+       putc('\r', stderr);
+       return (TRUE);
+    }
+    return (FALSE);
 }
 
 /**************************************************************************
@@ -960,32 +958,32 @@ static void
 report(const char *name, int which, unsigned def)
 {
 #ifdef TERMIOS
-       unsigned older, newer;
-       char *p;
-
-       newer = mode.c_cc[which];
-       older = oldmode.c_cc[which];
-
-       if (older == newer && older == def)
-               return;
-
-       (void)fprintf(stderr, "%s %s ", name, older == newer ? "is" : "set to");
-
-       /*
-        * Check 'delete' before 'backspace', since the key_backspace value
-        * is ambiguous.
-        */
-       if (newer == 0177)
-               (void)fprintf(stderr, "delete.\n");
-       else if ((p = key_backspace) != 0
-        && newer == (unsigned char)p[0]
-        && p[1] == '\0')
-               (void)fprintf(stderr, "backspace.\n");
-       else if (newer < 040) {
-               newer ^= 0100;
-               (void)fprintf(stderr, "control-%c (^%c).\n", newer, newer);
-       } else
-               (void)fprintf(stderr, "%c.\n", newer);
+    unsigned older, newer;
+    char *p;
+
+    newer = mode.c_cc[which];
+    older = oldmode.c_cc[which];
+
+    if (older == newer && older == def)
+       return;
+
+    (void) fprintf(stderr, "%s %s ", name, older == newer ? "is" : "set to");
+
+    /*
+     * Check 'delete' before 'backspace', since the key_backspace value
+     * is ambiguous.
+     */
+    if (newer == 0177)
+       (void) fprintf(stderr, "delete.\n");
+    else if ((p = key_backspace) != 0
+           && newer == (unsigned char) p[0]
+       && p[1] == '\0')
+       (void) fprintf(stderr, "backspace.\n");
+    else if (newer < 040) {
+       newer ^= 0100;
+       (void) fprintf(stderr, "control-%c (^%c).\n", newer, newer);
+    } else
+       (void) fprintf(stderr, "%c.\n", newer);
 #endif
 }
 
@@ -996,205 +994,206 @@ report(const char *name, int which, unsigned def)
 static void
 obsolete(char **argv)
 {
-       for (; *argv; ++argv) {
-               char *parm = argv[0];
+    for (; *argv; ++argv) {
+       char *parm = argv[0];
 
-               if (parm[0] == '-' && parm[1] == '\0')
-               {
-                   argv[0] = strdup("-q");
-                   continue;
-               }
+       if (parm[0] == '-' && parm[1] == '\0') {
+           argv[0] = strdup("-q");
+           continue;
+       }
 
-               if ((parm[0] != '-')
-                || (argv[1] && argv[1][0] != '-')
-                || (parm[1] != 'e' && parm[1] != 'i' && parm[1] != 'k')
-                || (parm[2] != '\0'))
-                       continue;
-               switch(argv[0][1]) {
-               case 'e':
-                       argv[0] = strdup("-e^H");
-                       break;
-               case 'i':
-                       argv[0] = strdup("-i^C");
-                       break;
-               case 'k':
-                       argv[0] = strdup("-k^U");
-                       break;
-               }
+       if ((parm[0] != '-')
+           || (argv[1] && argv[1][0] != '-')
+           || (parm[1] != 'e' && parm[1] != 'i' && parm[1] != 'k')
+           || (parm[2] != '\0'))
+           continue;
+       switch (argv[0][1]) {
+       case 'e':
+           argv[0] = strdup("-e^H");
+           break;
+       case 'i':
+           argv[0] = strdup("-i^C");
+           break;
+       case 'k':
+           argv[0] = strdup("-k^U");
+           break;
        }
+    }
 }
 
 static void
-usage(const charpname)
+usage(const char *pname)
 {
-       (void)fprintf(stderr,
-"usage: %s [-IQrs] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal]\n", pname);
-       exit(EXIT_FAILURE);
+    (void) fprintf(stderr,
+       "usage: %s [-IQrs] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal]\n", pname);
+    exit(EXIT_FAILURE);
 }
 
-static char arg_to_char(void)
+static char
+arg_to_char(void)
 {
-       return (optarg[0] == '^' && optarg[1] != '\0')
-               ? ((optarg[1] == '?') ? '\177' : CTRL(optarg[1]))
-               : optarg[0];
+    return (optarg[0] == '^' && optarg[1] != '\0')
+       ? ((optarg[1] == '?') ? '\177' : CTRL(optarg[1]))
+       : optarg[0];
 }
 
 int
 main(int argc, char **argv)
 {
 #if defined(TIOCGWINSZ) && defined(TIOCSWINSZ)
-       struct winsize win;
+    struct winsize win;
 #endif
-       int ch, noinit, noset, quiet, Sflag, sflag, showterm;
-       const char *p;
-       const char *ttype;
+    int ch, noinit, noset, quiet, Sflag, sflag, showterm;
+    const char *p;
+    const char *ttype;
 
 #ifdef TERMIOS
-       if (tcgetattr(STDERR_FILENO, &mode) < 0)
-               failed("standard error");
+    if (tcgetattr(STDERR_FILENO, &mode) < 0)
+       failed("standard error");
 
-       oldmode = mode;
-       ospeed = cfgetospeed(&mode);
+    oldmode = mode;
+    ospeed = cfgetospeed(&mode);
 #else
-       if (gtty(STDERR_FILENO, &mode) < 0)
-               failed("standard error");
+    if (gtty(STDERR_FILENO, &mode) < 0)
+       failed("standard error");
 
-       oldmode = mode;
-       ospeed = mode.sg_ospeed;
+    oldmode = mode;
+    ospeed = mode.sg_ospeed;
 #endif
 
-       if ((p = strrchr(*argv, '/')) != 0)
-               ++p;
-       else
-               p = *argv;
-       if (!CaselessCmp(p, "reset")) {
-               isreset = 1;
-               reset_mode();
-       }
-
-       obsolete(argv);
-       noinit = noset = quiet = Sflag = sflag = showterm = 0;
-       while ((ch = getopt(argc, argv, "a:d:e:Ii:k:m:np:qQSrs")) != EOF) {
-               switch (ch) {
-               case 'q':               /* display term only */
-                       noset = 1;
-                       break;
-               case 'a':               /* OBSOLETE: map identifier to type */
-                       add_mapping("arpanet", optarg);
-                       break;
-               case 'd':               /* OBSOLETE: map identifier to type */
-                       add_mapping("dialup", optarg);
-                       break;
-               case 'e':               /* erase character */
-                       terasechar = arg_to_char();
-                       break;
-               case 'I':               /* no initialization strings */
-                       noinit = 1;
-                       break;
-               case 'i':               /* interrupt character */
-                       intrchar = arg_to_char();
-                       break;
-               case 'k':               /* kill character */
-                       tkillchar = arg_to_char();
-                       break;
-               case 'm':               /* map identifier to type */
-                       add_mapping(0, optarg);
-                       break;
-               case 'n':               /* OBSOLETE: set new tty driver */
-                       break;
-               case 'p':               /* OBSOLETE: map identifier to type */
-                       add_mapping("plugboard", optarg);
-                       break;
-               case 'Q':               /* don't output control key settings */
-                       quiet = 1;
-                       break;
-               case 'S':               /* OBSOLETE: output TERM & TERMCAP */
-                       Sflag = 1;
-                       break;
-               case 'r':               /* display term on stderr */
-                       showterm = 1;
-                       break;
-               case 's':               /* output TERM set command */
-                       sflag = 1;
-                       break;
-               case '?':
-               default:
-                       usage(*argv);
-               }
+    if ((p = strrchr(*argv, '/')) != 0)
+       ++p;
+    else
+       p = *argv;
+    if (!CaselessCmp(p, "reset")) {
+       isreset = 1;
+       reset_mode();
+    }
+
+    obsolete(argv);
+    noinit = noset = quiet = Sflag = sflag = showterm = 0;
+    while ((ch = getopt(argc, argv, "a:d:e:Ii:k:m:np:qQSrs")) != EOF) {
+       switch (ch) {
+       case 'q':               /* display term only */
+           noset = 1;
+           break;
+       case 'a':               /* OBSOLETE: map identifier to type */
+           add_mapping("arpanet", optarg);
+           break;
+       case 'd':               /* OBSOLETE: map identifier to type */
+           add_mapping("dialup", optarg);
+           break;
+       case 'e':               /* erase character */
+           terasechar = arg_to_char();
+           break;
+       case 'I':               /* no initialization strings */
+           noinit = 1;
+           break;
+       case 'i':               /* interrupt character */
+           intrchar = arg_to_char();
+           break;
+       case 'k':               /* kill character */
+           tkillchar = arg_to_char();
+           break;
+       case 'm':               /* map identifier to type */
+           add_mapping(0, optarg);
+           break;
+       case 'n':               /* OBSOLETE: set new tty driver */
+           break;
+       case 'p':               /* OBSOLETE: map identifier to type */
+           add_mapping("plugboard", optarg);
+           break;
+       case 'Q':               /* don't output control key settings */
+           quiet = 1;
+           break;
+       case 'S':               /* OBSOLETE: output TERM & TERMCAP */
+           Sflag = 1;
+           break;
+       case 'r':               /* display term on stderr */
+           showterm = 1;
+           break;
+       case 's':               /* output TERM set command */
+           sflag = 1;
+           break;
+       case '?':
+       default:
+           usage(*argv);
        }
-       argc -= optind;
-       argv += optind;
+    }
+    argc -= optind;
+    argv += optind;
 
-       if (argc > 1)
-               usage(*argv);
+    if (argc > 1)
+       usage(*argv);
 
-       ttype = get_termcap_entry(*argv);
+    ttype = get_termcap_entry(*argv);
 
-       if (!noset) {
-               tcolumns = columns;
-               tlines = lines;
+    if (!noset) {
+       tcolumns = columns;
+       tlines = lines;
 
 #if defined(TIOCGWINSZ) && defined(TIOCSWINSZ)
-               /* Set window size */
-               (void)ioctl(STDERR_FILENO, TIOCGWINSZ, &win);
-               if (win.ws_row == 0 && win.ws_col == 0 &&
-                   tlines > 0 && tcolumns > 0) {
-                       win.ws_row = tlines;
-                       win.ws_col = tcolumns;
-                       (void)ioctl(STDERR_FILENO, TIOCSWINSZ, &win);
-               }
+       /* Set window size */
+       (void) ioctl(STDERR_FILENO, TIOCGWINSZ, &win);
+       if (win.ws_row == 0 && win.ws_col == 0 &&
+           tlines > 0 && tcolumns > 0) {
+           win.ws_row = tlines;
+           win.ws_col = tcolumns;
+           (void) ioctl(STDERR_FILENO, TIOCSWINSZ, &win);
+       }
 #endif
-               set_control_chars();
-               set_conversions();
+       set_control_chars();
+       set_conversions();
 
-               if (!noinit)
-                       set_init();
+       if (!noinit)
+           set_init();
 
-               /* Set the modes if they've changed. */
-               if (memcmp(&mode, &oldmode, sizeof(mode)))
+       /* Set the modes if they've changed. */
+       if (memcmp(&mode, &oldmode, sizeof(mode))) {
 #ifdef TERMIOS
-                       tcsetattr(STDERR_FILENO, TCSADRAIN, &mode);
+           tcsetattr(STDERR_FILENO, TCSADRAIN, &mode);
 #else
-                       stty(STDERR_FILENO, &mode);
+           stty(STDERR_FILENO, &mode);
 #endif
        }
+    }
 
-       /* Get the terminal name from the entry. */
-       ttype = _nc_first_name(cur_term->type.term_names);
-
-       if (noset)
-               (void)printf("%s\n", ttype);
-       else {
-               if (showterm)
-                       (void)fprintf(stderr, "Terminal type is %s.\n", ttype);
-               /*
-                * If erase, kill and interrupt characters could have been
-                * modified and not -Q, display the changes.
-                */
-               if (!quiet) {
-                       report("Erase", VERASE, CERASE);
-                       report("Kill", VKILL, CINTR);
-                       report("Interrupt", VINTR, CKILL);
-               }
-       }
+    /* Get the terminal name from the entry. */
+    ttype = _nc_first_name(cur_term->type.term_names);
 
-       if (Sflag)
-               err("The -S option is not supported under terminfo.");
-
-       if (sflag) {
-               /*
-                * Figure out what shell we're using.  A hack, we look for an
-                * environmental variable SHELL ending in "csh".
-                */
-               if ((p = getenv("SHELL")) != 0
-                && !strcmp(p + strlen(p) - 3, "csh"))
-                       p = "set noglob;\nsetenv TERM %s;\nunset noglob;\n";
-               else
-                       p = "TERM=%s;\n";
-               (void) printf(p, ttype);
+    if (noset)
+       (void) printf("%s\n", ttype);
+    else {
+       if (showterm)
+           (void) fprintf(stderr, "Terminal type is %s.\n", ttype);
+       /*
+        * If erase, kill and interrupt characters could have been
+        * modified and not -Q, display the changes.
+        */
+       if (!quiet) {
+           report("Erase", VERASE, CERASE);
+           report("Kill", VKILL, CINTR);
+           report("Interrupt", VINTR, CKILL);
        }
+    }
+
+    if (Sflag)
+       err("The -S option is not supported under terminfo.");
+
+    if (sflag) {
+       /*
+        * Figure out what shell we're using.  A hack, we look for an
+        * environmental variable SHELL ending in "csh".
+        */
+       if ((p = getenv("SHELL")) != 0
+           && !strcmp(p + strlen(p) - 3, "csh"))
+           p = "set noglob;\nsetenv TERM %s;\nunset noglob;\n";
+       else
+           p = "TERM=%s;\n";
+       (void) printf(p, ttype);
+    }
 
-       return EXIT_SUCCESS;
+    return EXIT_SUCCESS;
 }
 
 /* tset.c ends here */
diff --git a/shlib-versions b/shlib-versions
deleted file mode 100644 (file)
index 313d2c2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-.*-.*-linux.*          libform=4
-.*-.*-linux.*          libmenu=4
-.*-.*-linux.*          libncurses=4
-.*-.*-linux.*          libpanel=4
index 25d3f06d0b265e411313d1eb794d2a6d81a0a491..e83e0806b4410a20c73f9f116104efe812832707 100755 (executable)
@@ -264,7 +264,6 @@ CEOF
 #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
index b1de61d1c4afc6249557cb22e7ef7d9f9e3978de..3fe2cab0cd98559e5932a323460317a6c01e2d17 100644 (file)
@@ -1,6 +1,8 @@
 
 Current history:
 
+2000/03/04             Fix a few spelling errors
+1999/09/04             Minor fix to build/link on BeOS
 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)
@@ -21,7 +23,7 @@ as little of curses as possible.
 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
+Tests were controlled by command line switches and editing was done
 with pen and paper.
 
    In 1995 Eric S. Raymond got interested in the program and added
index 48f4619a8bf2ca8a46582ed28a5f9cfa9eba8784..0004447f186160c5b8c72db9cfabc94f67cd312c 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.9 1999/09/18 23:33:48 tom Exp $
+# $Id: Makefile.in,v 1.19 2000/07/08 01:56:35 tom Exp $
 # Makefile for tack
 #
 # The variable 'srcdir' refers to the source-distribution, and can be set with
@@ -24,6 +24,7 @@ prefix                = @prefix@
 exec_prefix    = @exec_prefix@
 bindir         = @bindir@
 libdir         = @libdir@
+mandir         = @mandir@/man1
 includedir     = @includedir@
 datadir                = @datadir@
 
@@ -31,11 +32,13 @@ ticdir              = $(datadir)/terminfo
 
 INSTALL                = @INSTALL@
 INSTALL_PROGRAM        = @INSTALL_PROGRAM@
+INSTALL_DATA   = @INSTALL_DATA@
 
 AWK            = @AWK@
 LN_S           = @LN_S@
 
 CC             = @CC@
+CPP            = @CPP@
 CFLAGS         = @CFLAGS@
 
 INCDIR         = $(srcdir)/../include
@@ -46,30 +49,30 @@ 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@)
 
 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@)
 
 LINT           = @LINT@
 LINT_OPTS      = @LINT_OPTS@
-LINT_LIBS      = -lncurses @LIBS@
+LINT_LIBS      = -lncurses@LIB_SUFFIX@ @LIBS@
 
 PROGS = tack$x
 
 # Default library, for linking applications
-DEPS_CURSES = ../lib/libncurses@DFT_DEP_SUFFIX@
+DEPS_CURSES = ../lib/@LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@
 
 ################################################################################
 all:   $(PROGS)
@@ -80,16 +83,22 @@ install: install.tack
 uninstall: uninstall.tack
 
 # this line simplifies the configure-script
-install.libs:
+libs \
+install.libs \
 uninstall.libs:
 
-install.tack: $(PROGS) $(INSTALL_PREFIX)$(bindir)
-       $(INSTALL_PROGRAM) tack$x    $(INSTALL_PREFIX)$(bindir)/tack$x
+install.tack: $(PROGS) \
+       $(INSTALL_PREFIX)$(bindir) \
+       $(INSTALL_PREFIX)$(mandir)
+       $(INSTALL_PROGRAM) tack$x $(INSTALL_PREFIX)$(bindir)/tack$x
+       $(INSTALL_DATA) $(srcdir)/tack.1 $(INSTALL_PREFIX)$(mandir)/tack.1
 
 uninstall.tack:
        -@rm -f $(INSTALL_PREFIX)$(bindir)/tack$x
+       -@rm -f $(INSTALL_PREFIX)$(mandir)/tack.1
 
-$(INSTALL_PREFIX)$(bindir) :
+$(INSTALL_PREFIX)$(bindir) \
+$(INSTALL_PREFIX)$(mandir) :
        $(srcdir)/../mkinstalldirs $@
 
 #
@@ -151,7 +160,7 @@ $(DEPS_CURSES) :
        cd ../ncurses; $(MAKE) $(CF_MFLAGS)
 
 lint:
-       $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/clear.c                          $(LINT_LIBS)
+       $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/*.c $(LINT_LIBS)
 
 ###############################################################################
 # The remainder of this file is automatically generated during configuration
index c1b0286b4fc402490e992d3ecff1299083f42bdf..71147042d922bfc9ac0d31bccd12983114e9e756 100644 (file)
@@ -1,5 +1,14 @@
--- $Id: README,v 1.1 1999/04/18 01:41:31 tom Exp $
+-- $Id: README,v 1.2 2000/03/12 02:39:12 Daniel.Weaver 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).
+The 'tack' program is a diagnostic that is designed to create and
+verify the correctness of terminfo's.  This program can be used to
+create new terminal descriptions that are not included in the standard
+release.  Although 'tack' is distributed with ncurses, it is not an
+integral part of ncurses.  It may be removed from the release without
+limiting the usefulness of ncurses on those terminals described in the
+terminfo data base.  The best way to remove 'tack' from the build is
+to delete or rename the 'tack' directory before running the configure
+script.
+
+Unlike most of ncurses the 'tack' program is covered under the GNU
+Public License.
index a514a9c1d0fb08ddf219d5ca51a2b5c0bc6eef71..df7b39f31e2b0de5f8f8547f41a26c432b3c451f 100644 (file)
@@ -21,7 +21,7 @@
 
 #include <tack.h>
 
-MODULE_ID("$Id: ansi.c,v 1.2 1999/08/21 23:11:57 tom Exp $")
+MODULE_ID("$Id: ansi.c,v 1.5 2000/04/22 21:06:57 tom Exp $")
 
 /*
  * Standalone tests for ANSI terminals.  Three entry points:
@@ -45,10 +45,9 @@ MODULE_ID("$Id: ansi.c,v 1.2 1999/08/21 23:11:57 tom Exp $")
 #define MAX_MODES 256
 
 static char default_bank[] = "\033(B\017";
-static int private_use, ape, terminal_class, got_escape;
+static int private_use, ape, terminal_class;
 static short ansi_value[256];
-static char ansi_buf[512], pack_buf[512];
-static char *ach, *pch;
+static unsigned char ansi_buf[512], pack_buf[512];
 
 struct ansi_reports {
        int lvl, final;
@@ -71,7 +70,7 @@ static struct ansi_reports report_list[] = {
        {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, "(DECRQUPSS) User pref supplemental 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"},
@@ -107,11 +106,11 @@ static const struct request_control rqss[] = {
        {"\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},
+       {"Disable 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"},
+       {"Erasable character", "0", "\"q", "\033[0\"q", 0},
+       {"Nonerasable 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"},
@@ -124,48 +123,6 @@ static const struct request_control rqss[] = {
        {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()
@@ -175,34 +132,36 @@ pack_ansi(void)
 static void
 read_ansi(void)
 {
-       int ch;
+       int ch, i, j, last_escape;
 
        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);
+       read_key(ansi_buf, sizeof(ansi_buf));
+       /* Throw away control characters inside CSI sequences.
+          Convert two character 7-bit sequences into 8-bit sequences. */
+       for (i = j = last_escape = 0; (ch = ansi_buf[i]) != 0; i++) {
+               if (ch == A_ESC) {
+                       if (last_escape == A_ESC) {
+                               pack_buf[j++] = A_ESC;
+                       }
+                       last_escape = A_ESC;
+               } else
+               if (last_escape == A_ESC && ch >= '@' && ch <= '_') {
+                       pack_buf[j++] = last_escape = ch + 0x40;
+               } else
+               if (last_escape != A_CSI || (ch > 0x20 && ch != 0x80)) {
+                       if (last_escape == A_ESC) {
+                               pack_buf[j++] = A_ESC;
+                       }
+                       if (ch > 0x80 && ch < 0xa0) {
+                               last_escape = ch;
+                       }
+                       pack_buf[j++] = ch;
+               }
+       }
+       if (last_escape == A_ESC) {
+               pack_buf[j++] = A_ESC;
+       }
+       pack_buf[j] = '\0';
        return;
 }
 
@@ -265,11 +224,12 @@ read_reports(void)
                        tc < report_list[i].lvl) {
                        put_crlf();
                        menu_prompt();
-                       ptext(" <return> to continue > ");
+                       ptext("/status [q] > ");
                        j = wait_here();
-                       if (j != 'c' && j != 'C')
-                               return j;
+                       if (j != 'n' && j != 'N')
+                               return 0;
                        tc = report_list[i].lvl;
+                       lc = 1;
                } else if (lc + 2 >= lines) {
                        put_crlf();
                        ptext("Hit any key to continue ");
@@ -295,15 +255,19 @@ read_reports(void)
                                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);
+               if (j != A_CSI && j != A_DCS) {
+                       put_crlf();
+                       s = "*** The above request gives illegal response ***";
+                       ptext(s);
+                       for (j = strlen(s); j < 49; j++)
+                               putchp(' ');
                }
-               put_crlf();
+               s = expand(ansi_buf);
+               if (char_count + expand_chars >= columns) {
+                       put_str("\r\n        ");
+                       lc++;
+               }
+               putln(s);
                if (vcr) {      /* find out how big the screen is */
                        tc_putp(report_list[i].request);
                        if (!valid_mode('R'))
@@ -324,7 +288,7 @@ read_reports(void)
                }
        }
        menu_prompt();
-       ptext(" r->repeat test, <return> to continue > ");
+       ptext("/status r->repeat test, <return> to continue > ");
        return wait_here();
 }
 
@@ -610,7 +574,7 @@ 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.");
+       ptextln(" Use n to continue testing.  Use q to quit.");
        put_crlf();
 }
 
index c31b78b5686303ce12884a468ae7904c7ec1b06f..ca0ac6ff20d6f8ce12405c71201322211899ca18 100644 (file)
@@ -1,5 +1,5 @@
 /*
-** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** Copyright (C) 1991, 1997-2000 Free Software Foundation, Inc.
 ** 
 ** This file is part of TACK.
 ** 
@@ -21,7 +21,7 @@
 
 #include <tack.h>
 
-MODULE_ID("$Id: charset.c,v 1.2 1999/05/09 18:30:49 tom Exp $")
+MODULE_ID("$Id: charset.c,v 1.4 2000/03/04 20:30:52 tom Exp $")
 
 /*
        Menu definitions for alternate character set and SGR tests.
@@ -40,7 +40,7 @@ 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[] = {
+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},
@@ -369,7 +369,7 @@ charset_attributes(
 /*
 **     charset_smacs(test_list, status, ch)
 **
-**     display all posible acs characters
+**     display all possible acs characters
 **     (smacs) (rmacs)
 */
 static void
index 710538aef48c7abed18012310773c2f758a4041b..479081c9fb38a7b4a9910566cb7ddc9fdd39ca12 100644 (file)
@@ -21,7 +21,7 @@
 
 #include <tack.h>
 
-MODULE_ID("$Id: color.c,v 1.1 1999/04/18 01:24:45 tom Exp $")
+MODULE_ID("$Id: color.c,v 1.2 2000/03/04 21:05:54 tom Exp $")
 
 /*
  * Color terminal tests.  Has only one entry point: test_color().
@@ -306,7 +306,7 @@ load_palette(int n)
 
 static int
 rainbow(int n)
-{                              /* print the programable color display */
+{                              /* print the programmable color display */
        int i, c, d, palette_full, initial_pair;
        static const struct {
                const char *name;
index 4c2158e4dda399a9a8d48964513ec1af472ce94c..4a85384b412543007dffffde9b3836574671a47b 100644 (file)
@@ -25,7 +25,7 @@
 #include <sys/time.h>
 #endif
 
-MODULE_ID("$Id: control.c,v 1.2 1999/06/16 00:45:59 tom Exp $")
+MODULE_ID("$Id: control.c,v 1.3 2000/03/04 21:10:59 tom Exp $")
 
 /* terminfo test program control subroutines */
 
@@ -53,14 +53,14 @@ char txt_shorter_augment[80];       /* <) use smaller augment */
 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_affected[TT_MAX];       /* lines or columns effected (repetition 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_affected[TT_MAX];       /* lines or columns effected (repetition 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 */
index 94183635b2ec2cbdae0fea4b691564d2d3dbb9f5..e66cc05eda1a4f0b2751aebf314bb5cc6c23b06e 100644 (file)
@@ -21,7 +21,7 @@
 
 #include <tack.h>
 
-MODULE_ID("$Id: crum.c,v 1.2 1999/08/21 23:09:08 tom Exp $")
+MODULE_ID("$Id: crum.c,v 1.3 2000/03/04 21:09:18 tom Exp $")
 
 /*
  * Test cursor movement.
@@ -81,7 +81,7 @@ move_to(
                        rf = rt;
                }
        }
-       if (sel & 4) {  /* paramiterized relative cursor movement */
+       if (sel & 4) {  /* parameterized relative cursor movement */
                if (parm_right_cursor)
                        if (cf < ct) {
                                s = tparm(parm_right_cursor, ct - cf);
index 5685d9253fe6a58d0d54eecc7732e10d2c590b13..a62810367d45d2c058f5c0926c0048123059c605 100644 (file)
@@ -23,7 +23,7 @@
 #include <time.h>
 #include <tic.h>
 
-MODULE_ID("$Id: edit.c,v 1.3 1999/06/16 00:43:43 tom Exp $")
+MODULE_ID("$Id: edit.c,v 1.5 2000/03/25 17:26:12 tom Exp $")
 
 /*
  * Terminfo edit features
@@ -81,7 +81,7 @@ static int display_lines;             /* number of lines displayed */
 /*
 **     send_info_string(str)
 **
-**     Return the terminfo string prefixed by the correct seperator
+**     Return the terminfo string prefixed by the correct separator
 */
 static void
 send_info_string(
@@ -170,7 +170,7 @@ show_info(
 /*
 **     save_info_string(str, fp)
 **
-**     Write the terminfo string prefixed by the correct seperator
+**     Write the terminfo string prefixed by the correct separator
 */
 static void
 save_info_string(
@@ -341,7 +341,7 @@ show_value(
        switch (nt->nte_type) {
        case STRING:
                _nc_reset_input((FILE *) 0, buf);
-               _nc_trans_string(tmp);
+               _nc_trans_string(tmp, tmp + sizeof(tmp));
                s = (char *)malloc(strlen(tmp) + 1);
                strcpy(s, tmp);
                CUR Strings[nt->nte_index] = s;
@@ -556,7 +556,7 @@ mark_cap(
 **
 **     Scan the name list and get the names.
 **     Enter each name into the can-test data base.
-**     <space> ( and ) may be used as seperators.
+**     <space> ( and ) may be used as separators.
 */
 void
 can_test(
@@ -588,7 +588,7 @@ can_test(
 **     cap_index(name-list, index-list)
 **
 **     Scan the name list and return a list of indexes.
-**     <space> ( and ) may be used as seperators.
+**     <space> ( and ) may be used as separators.
 **     This list is terminated with -1.
 */
 void
@@ -629,7 +629,7 @@ cap_index(
 **
 **     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.
+**     <space> ( and ) may be used as separators.
 */
 int
 cap_match(
@@ -863,7 +863,7 @@ change_one_entry(
                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);
+               _nc_trans_string(pad, pad + sizeof(pad));
                t = (char *)malloc(strlen(pad) + 1);
                strcpy(t, pad);
                CUR Strings[x] = t;
index 7ddfbbdf8c42fb215a56938d2e43c4571fec46de..fd895c372f3bf16d1036168e54137e32f4fa7b94 100644 (file)
@@ -21,7 +21,7 @@
 
 #include <tack.h>
 
-MODULE_ID("$Id: fun.c,v 1.2 1999/06/16 00:46:12 tom Exp $")
+MODULE_ID("$Id: fun.c,v 1.3 2000/03/04 20:29:21 tom Exp $")
 
 /*
  * Test the function keys on the terminal.  The code for echo tests
@@ -215,7 +215,7 @@ enter_key(
 
 static void
 fresh_line(void)
-{                              /* clear the line for a new fumction key line */
+{                              /* clear the line for a new function key line */
        if (over_strike) {
                put_crlf();
        } else {
@@ -610,7 +610,7 @@ funkey_prog(
                mm[i] = '\0';
                put_crlf();
                if (mm[0] != 'a' || mm[1] != 'b' || mm[2] != 'c') {
-                       sprintf(temp, "Error string recieved was: %s", expand(mm));
+                       sprintf(temp, "Error string received was: %s", expand(mm));
                        ptextln(temp);
                } else {
                        putln("Thank you\n");
@@ -764,8 +764,8 @@ 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(" columns print a test pattern to help count screen width.");
+       ptextln(" lines   print a test pattern to help count screen length.");
        ptextln(" end     exit.");
        ptextln(" echo    redisplay last report.");
        if (crx) {
index e19493d6b50af1e85daa677f67e7f89dd7e5b73b..4255452606da64414ab146c748b523e29a215058 100644 (file)
@@ -1,18 +1,18 @@
 /*
 ** 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,
@@ -22,7 +22,7 @@
 
 #include <tack.h>
 
-MODULE_ID("$Id: init.c,v 1.1 1999/04/18 01:05:23 tom Exp $")
+MODULE_ID("$Id: init.c,v 1.2 2000/05/13 19:58:48 Daniel.Weaver Exp $")
 
 #if NCURSES_VERSION_MAJOR >= 5 || NCURSES_VERSION_PATCH >= 981219
 #define _nc_get_curterm(p) _nc_get_tty_mode(p)
@@ -244,7 +244,7 @@ curses_setup(
        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);
+       can_test("lines cols cr nxon rf if iprog rmp smcup rmcup", FLAG_CAN_TEST);
        edit_init();                    /* initialize the edit data base */
 
        if (send_reset_init && enter_ca_mode) {
index a2bcc3809054e40dd50de77550f62a34f7cad1c1..6714d58dfc94cbcdc8d0ac355288642397635bcc 100644 (file)
@@ -21,7 +21,7 @@
 
 #include <tack.h>
 
-MODULE_ID("$Id: menu.c,v 1.1 1998/01/10 00:29:30 tom Exp $")
+MODULE_ID("$Id: menu.c,v 1.2 2000/03/04 21:13:53 tom Exp $")
 
 /*
    Menu control
@@ -85,7 +85,7 @@ menu_test_loop(
                }
                nch = 0;
                if (test->test_procedure) {
-                       /* The procedure takes precidence so I can pass
+                       /* The procedure takes precedence so I can pass
                           the menu entry as an argument.
                        */
                        can_test(test->caps_done, FLAG_TESTED);
@@ -340,7 +340,7 @@ subtest_menu(
 /*
 **     menu_can_scan(menu-structure)
 **
-**     Recursivly scan the menu tree and find which cap names can be tested.
+**     Recursively scan the menu tree and find which cap names can be tested.
 */
 void
 menu_can_scan(
@@ -362,7 +362,7 @@ menu_can_scan(
 /*
 **     menu_search(menu-structure, cap)
 **
-**     Recursivly search the menu tree and execute any tests that use cap.
+**     Recursively search the menu tree and execute any tests that use cap.
 */
 static void
 menu_search(
index 3c419a8b48bc02ee7aa75c2730cb3631c9f949e5..fac566e3b8a0b4adc0d9612fe68efa7e51904f8f 100644 (file)
@@ -23,7 +23,7 @@
 #include <tack.h>
 #include <time.h>
 
-MODULE_ID("$Id: output.c,v 1.4 1999/06/16 00:46:53 tom Exp $")
+MODULE_ID("$Id: output.c,v 1.5 2000/03/04 21:06:57 tom Exp $")
 
 /* globals */
 long char_sent;                        /* number of characters sent */
@@ -409,8 +409,8 @@ put_columns(const char *s, int len, int w)
 **     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.
+**     new line.  Break the line at a word boundary then send a CR LF.
+**     This is more esthetic on 40 column terminals.
 */
 void
 ptext(const char *s)
index bc6c6933e614add8d52b18fd6f110f8a7ef47593..980258c46f8a7af979473a4c036c945f2813286e 100644 (file)
@@ -21,7 +21,7 @@
 
 #include <tack.h>
 
-MODULE_ID("$Id: pad.c,v 1.1 1998/01/10 00:30:27 tom Exp $")
+MODULE_ID("$Id: pad.c,v 1.2 2000/03/04 21:04:58 tom Exp $")
 
 /* test the pad counts on the terminal */
 
@@ -448,12 +448,14 @@ pad_clear(
                                break;
                        }
                        clear_select++;
+                       /* FALLTHRU */
                case 2:
                        end_message = "Clear one character per line.  ";
                        if (newline) {
                                break;
                        }
                        clear_select++;
+                       /* FALLTHRU */
                case 3:
                        end_message = "Clear one full line.  ";
                        break;
@@ -1008,7 +1010,7 @@ pad_xch1(
        if (enter_insert_mode || exit_insert_mode ||
                enter_delete_mode || exit_delete_mode ||
                !insert_character || !delete_character) {
-               /* this test is quitely ignored */
+               /* this test is quietly ignored */
                return;
        }
        if (skip_pad_test(t, state, ch,
@@ -1025,7 +1027,7 @@ pad_xch1(
        } while(still_testing());
        pad_test_shutdown(t, 1);
        ptextln(xch1);
-       ptext("The preceeding two lines should be the same.  ");
+       ptext("The preceding two lines should be the same.  ");
        pad_done_message(t, state, ch);
 }
 
index d8866a0e5ebbb3b38e70a2a84d5a26c1a5b07556..3323b93f9ec27e2f5717b769f0c08e6e52456774 100644 (file)
@@ -22,7 +22,7 @@
 #include <tack.h>
 #include <time.h>
 
-MODULE_ID("$Id: sync.c,v 1.1 1998/01/10 00:31:07 tom Exp $")
+MODULE_ID("$Id: sync.c,v 1.2 2000/03/04 20:28:16 tom Exp $")
 
 /* terminal-synchronization and performance tests */
 
@@ -157,7 +157,7 @@ probe_enq_ok(void)
                ptextln(" the terminal is overrun with data.");
                ptext("\nENQ sequence from (u9): ");
                putln(expand(tty_ENQ));
-               ptext("ACK recieved: ");
+               ptext("ACK received: ");
                putln(expand(tty_ACK));
                len = user8 ? strlen(user8) : 0;
                sprintf(temp, "Length of ACK %d.  Expected length of ACK %d.",
@@ -368,7 +368,7 @@ sync_clear(
 }
 
 /*
-**     sync_symmary(test_list, status, ch)
+**     sync_summary(test_list, status, ch)
 **
 **     Print out the test results.
 */
index c07b4d9d53b9ebe3b0ad4fa6babfdc97d692daa5..43ef4457f2a95801c215012d38fb0ac27418ef2b 100644 (file)
@@ -19,7 +19,7 @@
 ** Boston, MA 02111-1307, USA.
 */
 /*
- * Operating system dependant functions.  We assume the POSIX API.
+ * Operating system dependent functions.  We assume the POSIX API.
  * Note: on strict-POSIX systems (including BSD/OS) the select_delay_type
  * global has no effect.
  */
@@ -43,7 +43,7 @@
 #endif
 #endif
 
-MODULE_ID("$Id: sysdep.c,v 1.6 1999/09/04 13:45:00 tom Exp $")
+MODULE_ID("$Id: sysdep.c,v 1.7 2000/03/04 21:02:11 tom Exp $")
 
 #if DECL_ERRNO
 extern int errno;
index 22e15af574449f27dd4691824d291d5c342dde55..52464d3e2a3479f8b54d37c77453f28b27a5c541 100644 (file)
@@ -19,7 +19,7 @@
 ** Boston, MA 02111-1307, USA.
 */
 
-/* $Id: tack.h,v 1.5 1999/06/26 22:14:07 tom Exp $ */
+/* $Id: tack.h,v 1.6 2000/03/04 21:10:07 tom Exp $ */
 
 #ifndef _TACK_H
 #define _TACK_H 1
@@ -178,14 +178,14 @@ extern const int mode_map[];
 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
+extern int tt_affected[TT_MAX];        /* lines or columns effected (repetition
                                   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
+extern int tx_affected[TT_MAX];        /* lines or columns effected (repetition
                                   factor) */
 extern int tx_count[TT_MAX];   /* Number of times sent */
 extern int tx_delay[TT_MAX];   /* Number of milliseconds delay */
index b0b9de038ce026d823a9af05d8952e43be85e194..9f573ba0d0b60fee8ed19fdedc88b81686732922 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.54 1999/10/23 20:01:19 tom Exp $
+# $Id: Makefile.in,v 1.58 2000/05/28 01:28:39 tom Exp $
 ##############################################################################
-# Copyright (c) 1998,1999 Free Software Foundation, Inc.                     #
+# Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.                #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -46,6 +46,7 @@ libdir                = @libdir@
 includedir     = @includedir@
 
 CC             = @CC@
+CPP            = @CPP@
 
 CFLAGS         = @CFLAGS@
 CPPFLAGS       =  -I../test -I$(srcdir) @CPPFLAGS@ -DHAVE_CONFIG_H
@@ -98,6 +99,7 @@ TESTS = \
        ncurses$x \
        newdemo$x \
        rain$x \
+       railroad$x \
        tclock$x \
        testaddch$x \
        testcurs$x \
@@ -161,6 +163,9 @@ newdemo$x: $(MODEL)/newdemo.o $(LOCAL_LIBS)
 rain$x: $(MODEL)/rain.o $(LOCAL_LIBS)
        @ECHO_LINK@ $(LINK) -o $@ $(MODEL)/rain.o $(LDFLAGS_DEFAULT)
 
+railroad$x: $(MODEL)/railroad.o $(LOCAL_LIBS)
+       @ECHO_LINK@ $(LINK) -o $@ $(MODEL)/railroad.o $(LDFLAGS_DEFAULT)
+
 tclock$x: $(MODEL)/tclock.o $(LOCAL_LIBS)
        @ECHO_LINK@ $(LINK) -o $@ $(MODEL)/tclock.o $(LDFLAGS_DEFAULT) $(MATH_LIB)
 
@@ -182,8 +187,9 @@ worm$x: $(MODEL)/worm.o $(LOCAL_LIBS)
 xmas$x: $(MODEL)/xmas.o $(LOCAL_LIBS)
        @ECHO_LINK@ $(LINK) -o $@ $(MODEL)/xmas.o $(LDFLAGS_DEFAULT)
 
-install:
-install.libs:
+libs \
+install \
+install.libs \
 install.test:
 
 uninstall:
index bc2e1adb14cc68158f3d01690b0b7e0597a14e00..980ffbeba94c243839f84119811bb9747fce57f3 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1999,2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -29,7 +29,7 @@
 /*
  * Author: Thomas E. Dickey <dickey@clark.net> 1999
  *
- * $Id: cardfile.c,v 1.2 1999/06/16 00:41:57 tom Exp $
+ * $Id: cardfile.c,v 1.4 2000/03/19 01:34:00 tom Exp $
  *
  * File format: text beginning in column 1 is a title; other text forms the content.
  */
 #endif
 
 typedef struct _card {
-       struct _card *link;
-       PANEL *panel;
-       FORM *form;
-       char *title;
-       char *content;
+    struct _card *link;
+    PANEL *panel;
+    FORM *form;
+    char *title;
+    char *content;
 } CARD;
 
 static CARD *all_cards;
@@ -62,37 +62,40 @@ static char default_name[] = "cardfile.dat";
 
 #if !HAVE_STRDUP
 #define strdup my_strdup
-static char *strdup (char *s)
+static char *
+strdup(char *s)
 {
-    char *p = (char *)malloc(strlen(s)+1);
+    char *p = (char *) malloc(strlen(s) + 1);
     if (p)
        strcpy(p, s);
-    return(p);
+    return (p);
 }
 #endif /* not HAVE_STRDUP */
 
-static char *skip(char *buffer)
+static char *
+skip(char *buffer)
 {
     while (isspace(*buffer))
        buffer++;
     return buffer;
 }
 
-static void trim(char *buffer)
+static void
+trim(char *buffer)
 {
     unsigned n = strlen(buffer);
     while (n-- && isspace(buffer[n]))
-       buffer[n] = 0;
+       buffer[n] = 0;
 }
 
 /*******************************************************************************/
 
-static CARD *add_title(const char *title)
+static CARD *
+add_title(const char *title)
 {
     CARD *card, *p, *q;
 
-    for (p = all_cards, q = 0; p != 0; q = p, p = p->link)
-    {
+    for (p = all_cards, q = 0; p != 0; q = p, p = p->link) {
        int cmp = strcmp(p->title, title);
        if (cmp == 0)
            return p;
@@ -100,46 +103,49 @@ static CARD *add_title(const char *title)
            break;
     }
 
-    card = (CARD *)calloc(1, sizeof(CARD));
+    card = (CARD *) calloc(1, sizeof(CARD));
     card->title = strdup(title);
     card->content = strdup("");
 
-    if (q == 0)
-    {
+    if (q == 0) {
        card->link = all_cards;
        all_cards = card;
-    }
-    else
-    {
-       card->link = q->link;
+    } else {
+       card->link = q->link;
        q->link = card;
     }
 
     return card;
 }
 
-static void add_content(CARD *card, char *content)
+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)
-       {
+    if ((total = strlen(content)) != 0) {
+       if ((offset = strlen(card->content)) != 0) {
            total += 1 + offset;
-           card->content = (char *)realloc(card->content, total + 1);
+           card->content = (char *) realloc(card->content, total + 1);
            strcpy(card->content + offset++, " ");
-       }
-       else
-       {
-           card->content = (char *)malloc(total + 1);
+       } else {
+           card->content = (char *) malloc(total + 1);
        }
        strcpy(card->content + offset, content);
     }
 }
 
-static CARD *find_card(char *title)
+static CARD *
+new_card(void)
+{
+    CARD *card = add_title("");
+    add_content(card, "");
+    return card;
+}
+
+static CARD *
+find_card(char *title)
 {
     CARD *card;
 
@@ -150,25 +156,21 @@ static CARD *find_card(char *title)
     return card;
 }
 
-static void read_data(char *fname)
+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))
-       {
+    if ((fp = fopen(fname, "r")) != 0) {
+       while (fgets(buffer, sizeof(buffer), fp)) {
            trim(buffer);
-           if (isspace(*buffer))
-           {
+           if (isspace(*buffer)) {
                if (card == 0)
                    card = add_title("");
                add_content(card, buffer);
-           }
-           else if ((card = find_card(buffer)) == 0)
-           {
+           } else if ((card = find_card(buffer)) == 0) {
                card = add_title(buffer);
            }
        }
@@ -178,7 +180,8 @@ static void read_data(char *fname)
 
 /*******************************************************************************/
 
-static void write_data(const char *fname)
+static void
+write_data(const char *fname)
 {
     FILE *fp;
     CARD *p = 0;
@@ -187,17 +190,13 @@ static void write_data(const char *fname)
     if (!strcmp(fname, default_name))
        fname = "cardfile.out";
 
-    if ((fp = fopen(fname, "w")) != 0)
-    {
-       for (p = all_cards; p != 0; p = p->link)
-       {
+    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++)
-           {
+           for (n = 0; f[n] != 0; n++) {
                char *s = field_buffer(f[n], 0);
                if (s != 0
-                && (s = strdup(s)) != 0)
-               {
+                   && (s = strdup(s)) != 0) {
                    trim(s);
                    fprintf(fp, "%s%s\n", n ? "\t" : "", s);
                    free(s);
@@ -213,7 +212,8 @@ static void write_data(const char *fname)
 /*
  * Count the cards
  */
-static int count_cards(void)
+static int
+count_cards(void)
 {
     CARD *p;
     int count = 0;
@@ -227,12 +227,12 @@ static int count_cards(void)
 /*
  * Shuffle the panels to keep them in a natural hierarchy.
  */
-static void order_cards(CARD *first, int depth)
+static void
+order_cards(CARD * first, int depth)
 {
-    if (first)
-    {
+    if (first) {
        if (depth && first->link)
-           order_cards(first->link, depth-1);
+           order_cards(first->link, depth - 1);
        top_panel(first->panel);
     }
 }
@@ -240,17 +240,19 @@ static void order_cards(CARD *first, int depth)
 /*
  * Return the next card in the list
  */
-static CARD *next_card(CARD *now)
+static CARD *
+next_card(CARD * now)
 {
     if (now->link)
-       now = now->link;
+       now = now->link;
     return now;
 }
 
 /*
  * Return the previous card in the list
  */
-static CARD *prev_card(CARD *now)
+static CARD *
+prev_card(CARD * now)
 {
     CARD *p;
     for (p = all_cards; p != 0; p = p->link)
@@ -259,49 +261,49 @@ static CARD *prev_card(CARD *now)
     return now;
 }
 
-
 /*******************************************************************************/
 
-static int form_virtualize(WINDOW *w)
+static int
+form_virtualize(WINDOW *w)
 {
-    int                c = wgetch(w);
+    int c = wgetch(w);
 
-    switch(c)
-    {
+    switch (c) {
     case CTRL('W'):
-       return(MAX_FORM_COMMAND + 4);
+       return (MAX_FORM_COMMAND + 4);
     case CTRL('N'):
-       return(MAX_FORM_COMMAND + 3);
+       return (MAX_FORM_COMMAND + 3);
     case CTRL('P'):
-       return(MAX_FORM_COMMAND + 2);
+       return (MAX_FORM_COMMAND + 2);
     case CTRL('Q'):
     case 033:
-       return(MAX_FORM_COMMAND + 1);
+       return (MAX_FORM_COMMAND + 1);
 
     case KEY_BACKSPACE:
-       return(REQ_DEL_PREV);
+       return (REQ_DEL_PREV);
     case KEY_DC:
-       return(REQ_DEL_CHAR);
+       return (REQ_DEL_CHAR);
     case KEY_LEFT:
-       return(REQ_LEFT_CHAR);
+       return (REQ_LEFT_CHAR);
     case KEY_RIGHT:
-       return(REQ_RIGHT_CHAR);
+       return (REQ_RIGHT_CHAR);
 
     case KEY_DOWN:
     case KEY_NEXT:
-       return(REQ_NEXT_FIELD);
+       return (REQ_NEXT_FIELD);
     case KEY_UP:
     case KEY_PREVIOUS:
-       return(REQ_PREV_FIELD);
+       return (REQ_PREV_FIELD);
 
     default:
-       return(c);
+       return (c);
     }
 }
 
 /*******************************************************************************/
 
-static void cardfile(char *fname)
+static void
+cardfile(char *fname)
 {
     WINDOW *win;
     CARD *p;
@@ -322,9 +324,8 @@ static void cardfile(char *fname)
     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 *));
+    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);
@@ -336,7 +337,7 @@ static void cardfile(char *fname)
        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);
+       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);
 
@@ -353,31 +354,28 @@ static void cardfile(char *fname)
 
     order_cards(top_card = all_cards, visible_cards);
 
-    update_panels();
-
-    while (!finished)
-    {
+    while (!finished) {
        update_panels();
        doupdate();
 
-       switch(form_driver(top_card->form, ch = form_virtualize(panel_window(top_card->panel))))
-       {
+       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:
+           case MAX_FORM_COMMAND + 1:
                finished = TRUE;
                break;
-           case MAX_FORM_COMMAND+2:
+           case MAX_FORM_COMMAND + 2:
                top_card = prev_card(top_card);
                order_cards(top_card, visible_cards);
                break;
-           case MAX_FORM_COMMAND+3:
+           case MAX_FORM_COMMAND + 3:
                top_card = next_card(top_card);
                order_cards(top_card, visible_cards);
                break;
-           case MAX_FORM_COMMAND+4:
+           case MAX_FORM_COMMAND + 4:
                write_data(fname);
                break;
            default:
@@ -394,7 +392,8 @@ static void cardfile(char *fname)
 
 /*******************************************************************************/
 
-int main(int argc, char *argv[])
+int
+main(int argc, char *argv[])
 {
     int n;
 
@@ -402,15 +401,16 @@ int main(int argc, char *argv[])
     cbreak();
     noecho();
 
-    if (argc > 1)
-    {
+    if (argc > 1) {
        for (n = 1; n < argc; n++)
            read_data(argv[n]);
+       if (count_cards() == 0)
+           new_card();
        cardfile(argv[1]);
-    }
-    else
-    {
+    } else {
        read_data(default_name);
+       if (count_cards() == 0)
+           new_card();
        cardfile(default_name);
     }
 
index 649dffe92c2b2238a37a6e4d1ae80b096fc27b93..2266114152d66617e4f3a602e840054b3382459b 100755 (executable)
@@ -1458,21 +1458,22 @@ done
 
 
 for ac_func in \
-curses_version \
 gettimeofday \
 napms \
 resizeterm \
 strdup \
+use_default_colors \
 vsscanf \
+wresize \
 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1471: checking for $ac_func" >&5
+echo "configure:1472: 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"
+#line 1477 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -1495,7 +1496,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:1499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1500: \"$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
@@ -1520,14 +1521,59 @@ fi
 done
 
 
+echo $ac_n "checking for function curses_version""... $ac_c" 1>&6
+echo "configure:1526: checking for function curses_version" >&5
+if eval "test \"`echo '$''{'cf_cv_func_curses_version'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+if test "$cross_compiling" = yes; then
+  cf_cv_func_curses_version=unknown
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1535 "configure"
+#include "confdefs.h"
+
+#include <curses.h>
+int main()
+{
+       char temp[1024];
+       sprintf(temp, "%s\n", curses_version());
+       exit(0);
+}
+
+EOF
+if { (eval echo configure:1547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  cf_cv_func_curses_version=yes
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  cf_cv_func_curses_version=no
+
+fi
+rm -fr conftest*
+fi
+
+rm -f core
+fi
+
+echo "$ac_t""$cf_cv_func_curses_version" 1>&6
+test "$cf_cv_func_curses_version" = yes && cat >> confdefs.h <<\EOF
+#define HAVE_CURSES_VERSION 1
+EOF
+
+
 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
+echo "configure:1571: 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"
+#line 1577 "configure"
 #include "confdefs.h"
 
 #if HAVE_SYS_TIME_H
@@ -1541,7 +1587,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:1545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1591: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_sys_time_select=yes
 else
index d963022c0bfd9fa3fcafb715d3b0ea910b3e1831..35e2b47cb9aec6920f3cf8f0d803834e15514fb5 100644 (file)
@@ -28,7 +28,7 @@ dnl***************************************************************************
 dnl
 dnl Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,1998
 dnl
-dnl $Id: configure.in,v 1.27 1999/10/23 20:01:42 tom Exp $
+dnl $Id: configure.in,v 1.29 1999/12/19 03:12:13 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)
@@ -129,14 +129,32 @@ unistd.h \
 )
 
 AC_CHECK_FUNCS( \
-curses_version \
 gettimeofday \
 napms \
 resizeterm \
 strdup \
+use_default_colors \
 vsscanf \
+wresize \
 )
 
+dnl Solaris has a data item 'curses_version', which confuses AC_CHECK_FUNCS.
+dnl It's a character string "SVR4", not documented.
+AC_CACHE_CHECK(for function curses_version, cf_cv_func_curses_version,[
+AC_TRY_RUN([
+#include <curses.h>
+int main()
+{
+       char temp[1024];
+       sprintf(temp, "%s\n", curses_version());
+       exit(0);
+}]
+,[cf_cv_func_curses_version=yes]
+,[cf_cv_func_curses_version=no]
+,[cf_cv_func_curses_version=unknown])
+rm -f core])
+test "$cf_cv_func_curses_version" = yes && AC_DEFINE(HAVE_CURSES_VERSION)
+
 dnl ---------------------------------------------------------------------------
 dnl [CF_SYS_TIME_SELECT]
 AC_MSG_CHECKING(if sys/time.h conflicts with sys/select.h)
index 13ec66a570929ba8a5ed39686da21df9a2edb4ee..a5ddcaad58884dd668b8b5455e96ca5630ad1302 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1999,2000 Free Software Foundation, Inc.                   *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -29,7 +29,7 @@
 /*
  * Author: Thomas E. Dickey <dickey@clark.net> 1999
  *
- * $Id: dots.c,v 1.2 1999/10/23 13:24:32 tom Exp $
+ * $Id: dots.c,v 1.4 2000/02/13 01:05:13 tom Exp $
  *
  * A simple demo of the terminfo interface.
  */
@@ -125,7 +125,7 @@ main(
 
        tputs(tparm(cursor_address, y, x), 1, outc);
        if (max_colors > 0) {
-           z = ranf() * max_colors;
+           z = (int)(ranf() * max_colors);
            if (ranf() > 0.01) {
                tputs(tparm(set_a_foreground, z), 1, outc);
            } else {
index 6057396a89c6b35534332a4d5f179624cfdcb00d..5d161cb64d6efca989a9e7e813cb2b23ccc04a4e 100644 (file)
@@ -29,7 +29,7 @@
 /*
  * Author:  Thomas E. Dickey <dickey@clark.net> 1998
  *
- * $Id: filter.c,v 1.2 1998/05/10 00:39:27 tom Exp $
+ * $Id: filter.c,v 1.3 1999/11/13 23:39:19 tom Exp $
  */
 #include <test.priv.h>
 
@@ -81,7 +81,7 @@ int main(
        if (has_colors()) {
                int background = COLOR_BLACK;
                start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
                if (use_default_colors () != ERR)
                        background = -1;
 #endif
index 557a7bf231ece347aade3b97e5316a51e6f9d6a8..ba5cbda2f7d464e7b45001388dece277a012a558 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: firework.c,v 1.15 1999/10/16 21:33:39 tom Exp $
+ * $Id: firework.c,v 1.16 1999/11/13 23:39:16 tom Exp $
  */
 #include <test.priv.h>
 
@@ -133,7 +133,7 @@ main(
 
     if (has_colors()) {
        start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
        if (use_default_colors() == OK)
            my_bg = -1;
 #endif
index ecef2bb1e1d1e876ac1d397e18184f981335ddd7..ea88d6c54754e200ff92aaa8df12bcae025a3060 100644 (file)
@@ -6,7 +6,7 @@
  * modified 10-18-89 for curses (jrl)
  * 10-18-89 added signal handling
  *
- * $Id: gdc.c,v 1.10 1997/10/18 20:06:06 tom Exp $
+ * $Id: gdc.c,v 1.14 2000/04/23 00:03:11 tom Exp $
  */
 
 #include <test.priv.h>
 #define XLENGTH        54
 #define YDEPTH 5
 
-/* it won't be */
-static time_t now; /* yeah! */
-static struct tm *tm;
-
-static short disp[11] = {
-       075557, 011111, 071747, 071717, 055711,
-       074717, 074757, 071111, 075757, 075717, 002020
+static short disp[11] =
+{
+    075557, 011111, 071747, 071717, 055711,
+    074717, 074757, 071111, 075757, 075717, 002020
 };
 static long older[6], next[6], newer[6], mask;
-static char scrol;
 
 static int sigtermed = 0;
+static bool redirected = FALSE;
+static bool hascolor = FALSE;
 
-static int hascolor = 0;
-
-static void set(int, int);
-static void standt(int);
-static void movto(int, int);
-
-static
-RETSIGTYPE sighndl(int signo)
+static RETSIGTYPE
+sighndl(int signo)
 {
-       signal(signo, sighndl);
-       sigtermed=signo;
+    signal(signo, sighndl);
+    sigtermed = signo;
+    if (redirected) {
+       endwin();
+       exit(EXIT_FAILURE);
+    }
 }
 
 static void
 drawbox(void)
 {
-       chtype bottom[XLENGTH+1];
-       int n;
+    chtype bottom[XLENGTH + 1];
+    int n;
 
-       if(hascolor)
-               attrset(COLOR_PAIR(3));
+    if (hascolor)
+       attrset(COLOR_PAIR(3));
 
-       mvaddch(YBASE - 1,  XBASE - 1, ACS_ULCORNER);
-       hline(ACS_HLINE, XLENGTH);
-       mvaddch(YBASE - 1,  XBASE + XLENGTH, ACS_URCORNER);
+    mvaddch(YBASE - 1, XBASE - 1, ACS_ULCORNER);
+    hline(ACS_HLINE, XLENGTH);
+    mvaddch(YBASE - 1, XBASE + XLENGTH, ACS_URCORNER);
 
-       mvaddch(YBASE + YDEPTH,  XBASE - 1, ACS_LLCORNER);
-       mvinchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH);
-       for (n = 0; n < XLENGTH; n++)
-               bottom[n] = ACS_HLINE | (bottom[n] & (A_ATTRIBUTES | A_COLOR));
-       mvaddchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH);
-       mvaddch(YBASE + YDEPTH,  XBASE + XLENGTH, ACS_LRCORNER);
+    mvaddch(YBASE + YDEPTH, XBASE - 1, ACS_LLCORNER);
+    mvinchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH);
+    for (n = 0; n < XLENGTH; n++)
+       bottom[n] = ACS_HLINE | (bottom[n] & (A_ATTRIBUTES | A_COLOR));
+    mvaddchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH);
+    mvaddch(YBASE + YDEPTH, XBASE + XLENGTH, ACS_LRCORNER);
 
-       move(YBASE,  XBASE - 1);
-       vline(ACS_VLINE, YDEPTH);
+    move(YBASE, XBASE - 1);
+    vline(ACS_VLINE, YDEPTH);
 
-       move(YBASE,  XBASE + XLENGTH);
-       vline(ACS_VLINE, YDEPTH);
+    move(YBASE, XBASE + XLENGTH);
+    vline(ACS_VLINE, YDEPTH);
 
-       if(hascolor)
-               attrset(COLOR_PAIR(2));
+    if (hascolor)
+       attrset(COLOR_PAIR(2));
 }
 
-int
-main(int argc, char *argv[])
+static void
+standt(int on)
 {
-long t, a;
-int i, j, s, k;
-int n = 0;
-
-       signal(SIGINT,sighndl);
-       signal(SIGTERM,sighndl);
-       signal(SIGKILL,sighndl);
-
-       initscr();
-       cbreak();
-       noecho();
-       nodelay(stdscr, 1);
-       curs_set(0);
-
-       hascolor = has_colors();
-
-       if(hascolor) {
-               int bg = COLOR_BLACK;
-               start_color();
-#ifdef NCURSES_VERSION
-               if (use_default_colors() == OK)
-                       bg = -1;
-#endif
-               init_pair(1, COLOR_BLACK, COLOR_RED);
-               init_pair(2, COLOR_RED,   bg);
-               init_pair(3, COLOR_WHITE, bg);
-               attrset(COLOR_PAIR(2));
+    if (on) {
+       if (hascolor) {
+           attron(COLOR_PAIR(1));
+       } else {
+           attron(A_STANDOUT);
        }
-
-       clear();
-       refresh();
-       while(--argc > 0) {
-               if(**++argv == '-')
-                       scrol = 1;
-               else
-                       n = atoi(*argv);
+    } else {
+       if (hascolor) {
+           attron(COLOR_PAIR(2));
+       } else {
+           attroff(A_STANDOUT);
        }
-
-       drawbox();
-       do {
-               char    buf[30];
-
-               mask = 0;
-               time(&now);
-               tm = localtime(&now);
-               set(tm->tm_sec%10, 0);
-               set(tm->tm_sec/10, 4);
-               set(tm->tm_min%10, 10);
-               set(tm->tm_min/10, 14);
-               set(tm->tm_hour%10, 20);
-               set(tm->tm_hour/10, 24);
-               set(10, 7);
-               set(10, 17);
-               for(k=0; k<6; k++) {
-                       if(scrol) {
-                               for(i=0; i<5; i++)
-                                       newer[i] = (newer[i]&~mask) | (newer[i+1]&mask);
-                               newer[5] = (newer[5]&~mask) | (next[k]&mask);
-                       } else
-                               newer[k] = (newer[k]&~mask) | (next[k]&mask);
-                       next[k] = 0;
-                       for(s=1; s>=0; s--) {
-                               standt(s);
-                               for(i=0; i<6; i++) {
-                                       if((a = (newer[i]^older[i])&(s ? newer : older)[i]) != 0) {
-                                               for(j=0,t=1<<26; t; t>>=1,j++) {
-                                                       if(a&t) {
-                                                               if(!(a&(t<<1))) {
-                                                                       movto(YBASE + i, XBASE + 2*j);
-                                                               }
-                                                               addstr("  ");
-                                                       }
-                                               }
-                                       }
-                                       if(!s) {
-                                               older[i] = newer[i];
-                                       }
-                               }
-                               if(!s) {
-                                       if (scrol)
-                                               drawbox();
-                                       refresh();
-                                       if (scrol)
-                                               napms(150);
-                               }
-                       }
-               }
-
-               /* this depends on the detailed format of ctime(3) */
-               (void) strcpy(buf, ctime(&now));
-               (void) strcpy(buf + 10, buf + 19);
-               mvaddstr(16, 30, buf);
-
-               movto(6, 0);
-               drawbox();
-               refresh();
-               sleep(1);
-               while(wgetch(stdscr) != ERR)
-                       continue;
-               if (sigtermed) {
-                       standend();
-                       clear();
-                       refresh();
-                       curs_set(1);
-                       endwin();
-                       fprintf(stderr, "gdc terminated by signal %d\n", sigtermed);
-                       return EXIT_FAILURE;
-               }
-       } while(--n);
-       standend();
-       clear();
-       refresh();
-       curs_set(1);
-       endwin();
-       return EXIT_SUCCESS;
+    }
 }
 
 static void
 set(int t, int n)
 {
-int i, m;
+    int i, m;
 
-       m = 7<<n;
-       for(i=0; i<5; i++) {
-               next[i] |= ((disp[t]>>(4-i)*3)&07)<<n;
-               mask |= (next[i]^older[i])&m;
-       }
-       if(mask&m)
-               mask |= m;
+    m = 7 << n;
+    for (i = 0; i < 5; i++) {
+       next[i] |= ((disp[t] >> (4 - i) * 3) & 07) << n;
+       mask |= (next[i] ^ older[i]) & m;
+    }
+    if (mask & m)
+       mask |= m;
 }
 
 static void
-standt(int on)
+usage(void)
 {
-       if (on) {
-               if(hascolor) {
-                       attron(COLOR_PAIR(1));
-               } else {
-                       attron(A_STANDOUT);
+    static const char *msg[] =
+    {
+       "Usage: gdc [options] [count]"
+       ,""
+       ,"Options:"
+       ,"  -n  redirect input to /dev/null"
+       ,"  -s  scroll each number into place, rather than flipping"
+       ,""
+       ,"If you specify a count, gdc runs for that number of seconds"
+    };
+    unsigned j;
+    for (j = 0; j < SIZEOF(msg); j++)
+       fprintf(stderr, "%s\n", msg[j]);
+    exit(EXIT_FAILURE);
+}
+
+int
+main(int argc, char *argv[])
+{
+    time_t now;
+    struct tm *tm;
+    long t, a;
+    int i, j, s, k;
+    int count = 0;
+    FILE *ofp = stdout;
+    FILE *ifp = stdin;
+    bool scrol = FALSE;
+
+    signal(SIGINT, sighndl);
+    signal(SIGTERM, sighndl);
+    signal(SIGKILL, sighndl);
+
+    while ((k = getopt(argc, argv, "sn")) != EOF) {
+       switch (k) {
+       case 's':
+           scrol = TRUE;
+           break;
+       case 'n':
+           ifp = fopen("/dev/null", "r");
+           redirected = TRUE;
+           break;
+       default:
+           usage();
+       }
+    }
+    if (optind < argc) {
+       count = atoi(argv[optind++]);
+    }
+    if (optind < argc)
+       usage();
+
+    if (redirected) {
+       char *name = getenv("TERM");
+       if (name == 0
+           || newterm(name, ofp, ifp) == 0) {
+           fprintf(stderr, "cannot open terminal\n");
+           exit(EXIT_FAILURE);
+       }
+
+    } else {
+       initscr();
+    }
+    cbreak();
+    noecho();
+    nodelay(stdscr, 1);
+    curs_set(0);
+
+    hascolor = has_colors();
+
+    if (hascolor) {
+       int bg = COLOR_BLACK;
+       start_color();
+#ifdef HAVE_USE_DEFAULT_COLORS
+       if (use_default_colors() == OK)
+           bg = -1;
+#endif
+       init_pair(1, COLOR_BLACK, COLOR_RED);
+       init_pair(2, COLOR_RED, bg);
+       init_pair(3, COLOR_WHITE, bg);
+       attrset(COLOR_PAIR(2));
+    }
+
+  restart:
+    for (j = 0; j < 5; j++)
+       older[j] = newer[j] = next[j] = 0;
+
+    clear();
+    drawbox();
+
+    do {
+       char buf[30];
+
+       time(&now);
+       tm = localtime(&now);
+
+       mask = 0;
+       set(tm->tm_sec % 10, 0);
+       set(tm->tm_sec / 10, 4);
+       set(tm->tm_min % 10, 10);
+       set(tm->tm_min / 10, 14);
+       set(tm->tm_hour % 10, 20);
+       set(tm->tm_hour / 10, 24);
+       set(10, 7);
+       set(10, 17);
+
+       for (k = 0; k < 6; k++) {
+           if (scrol) {
+               for (i = 0; i < 5; i++)
+                   newer[i] = (newer[i] & ~mask) | (newer[i + 1] & mask);
+               newer[5] = (newer[5] & ~mask) | (next[k] & mask);
+           } else
+               newer[k] = (newer[k] & ~mask) | (next[k] & mask);
+           next[k] = 0;
+           for (s = 1; s >= 0; s--) {
+               standt(s);
+               for (i = 0; i < 6; i++) {
+                   if ((a = (newer[i] ^ older[i]) & (s ? newer : older)[i])
+                       != 0) {
+                       for (j = 0, t = 1 << 26; t; t >>= 1, j++) {
+                           if (a & t) {
+                               if (!(a & (t << 1))) {
+                                   move(YBASE + i, XBASE + 2 * j);
+                               }
+                               addstr("  ");
+                           }
+                       }
+                   }
+                   if (!s) {
+                       older[i] = newer[i];
+                   }
                }
-       } else {
-               if(hascolor) {
-                       attron(COLOR_PAIR(2));
-               } else {
-                       attroff(A_STANDOUT);
+               if (!s) {
+                   if (scrol)
+                       drawbox();
+                   refresh();
+                   /*
+                    * If we're scrolling, space out the refreshes to fake
+                    * movement.  That's 7 frames, or 6 intervals, which would
+                    * be 166 msec if we spread it out over a second.  It looks
+                    * better (but will well on a slow terminal, e.g., less
+                    * than 9600bd) to squeeze that into a half-second, and use
+                    * half of 170 msec to ensure that the program doesn't eat
+                    * a lot of time when asking what time it is, at the top of
+                    * this loop -TD
+                    */
+                   if (scrol)
+                       napms(85);
                }
+           }
        }
-}
 
-static void
-movto(int line, int col)
-{
-       move(line, col);
+       /* this depends on the detailed format of ctime(3) */
+       (void) strcpy(buf, ctime(&now));
+       (void) strcpy(buf + 10, buf + 19);
+       mvaddstr(16, 30, buf);
+
+       move(6, 0);
+       drawbox();
+       refresh();
+
+       /*
+        * If we're not scrolling, wait 1000 msec (1 sec).  Use napms() rather
+        * than sleep() because the latter does odd things on some systems,
+        * e.g., suspending output as well.
+        */
+       if (scrol)
+           napms(500);
+       else
+           napms(1000);
+
+       /*
+        * This is a safe way to check if we're interrupted - making the signal
+        * handler set a flag that we can check.  Since we're running
+        * nodelay(), the wgetch() call returns immediately, and in particular
+        * will return an error if interrupted.  This works only if we can
+        * read from the input, of course.
+        */
+       switch (wgetch(stdscr)) {
+       case 'q':
+           count = 1;
+           break;
+       case 's':
+           nodelay(stdscr, FALSE);
+           break;
+       case ' ':
+           nodelay(stdscr, TRUE);
+           break;
+#ifdef KEY_RESIZE
+       case KEY_RESIZE:
+#endif
+       case '?':
+           goto restart;
+       case ERR:
+           if (sigtermed) {
+               standend();
+               endwin();
+               fprintf(stderr, "gdc terminated by signal %d\n", sigtermed);
+               return EXIT_FAILURE;
+           }
+       default:
+           continue;
+       }
+    } while (--count);
+    standend();
+    endwin();
+    return EXIT_SUCCESS;
 }
index 3ee64b0a0d1453017e05f9271e55fe7c91e053e6..23a864624b012b62f2490c646008faaaa89bd50a 100644 (file)
@@ -14,7 +14,7 @@
  *
  *     Date: 05.Nov.90
  *
- * $Id: hanoi.c,v 1.16 1999/10/23 15:01:01 tom Exp $
+ * $Id: hanoi.c,v 1.18 2000/04/01 20:01:08 tom Exp $
  */
 
 #include <test.priv.h>
@@ -97,7 +97,7 @@ unsigned char AutoFlag = 0;
                Usage();
                return EXIT_FAILURE;
        }
-#ifdef NCURSES_VERSION
+#ifdef TRACE
        trace(TRACE_MAXIMUM);
 #endif
        initscr();
@@ -105,7 +105,7 @@ unsigned char AutoFlag = 0;
                int i;
                int bg = COLOR_BLACK;
                start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
                if (use_default_colors() == OK)
                        bg = -1;
 #endif
index fe3101198776b365590c73176df9f4c64b425a66..ad923b42b1de37a08ac68ee026f4afef8d442519 100644 (file)
@@ -6,7 +6,7 @@
  * Eric S. Raymond <esr@snark.thyrsus.com> July 22 1995.  Mouse support
  * added September 20th 1995.
  *
- * $Id: knight.c,v 1.14 1997/08/20 16:22:38 hjl Exp $
+ * $Id: knight.c,v 1.15 1999/11/13 23:39:10 tom Exp $
  */
 
 #include <test.priv.h>
@@ -98,7 +98,7 @@ static void init (void)
        int bg = COLOR_BLACK;
 
        start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
        if (use_default_colors() == OK)
            bg = -1;
 #endif
index 3c69bbd45752160c9d1a9904c2713b553539ff4e..583f8c76cc8b23f3b591798c5bdd7c2b0604fd20 100644 (file)
@@ -1,7 +1,7 @@
 # Test-Program modules
-# $Id: modules,v 1.11 1999/10/23 00:41:02 tom Exp $
+# $Id: modules,v 1.13 2000/02/13 01:05:13 tom Exp $
 ##############################################################################
-# Copyright (c) 1999 Free Software Foundation, Inc.                          #
+# Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.                #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -49,6 +49,7 @@ lrtest                progs           $(srcdir)
 ncurses                progs           $(srcdir)       ../include/panel.h ../include/menu.h ../include/form.h
 newdemo                progs           $(srcdir)
 rain           progs           $(srcdir)       ../include/term.h
+railroad       progs           $(srcdir)       ../include/termcap.h
 tclock         progs           $(srcdir)
 testaddch      progs           $(srcdir)
 testcurs       progs           $(srcdir)
index aa24a4261809fb36b84f6589125c9ab6f745ed1c..4bd8552e9c24de8606f19095a5d8066ca8da7ff9 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc.                   *
+ * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -39,7 +39,7 @@ DESCRIPTION
 AUTHOR
    Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993
 
-$Id: ncurses.c,v 1.120 1999/10/23 20:01:30 tom Exp $
+$Id: ncurses.c,v 1.130 2000/07/07 11:05:16 tom Exp $
 
 ***************************************************************************/
 
@@ -88,7 +88,7 @@ $Id: ncurses.c,v 1.120 1999/10/23 20:01:30 tom Exp $
 #ifdef NCURSES_VERSION
 
 #ifdef TRACE
-static int save_trace = TRACE_ORDINARY|TRACE_CALLS;
+static int save_trace = TRACE_ORDINARY | TRACE_CALLS;
 extern int _nc_tracing;
 #endif
 
@@ -100,13 +100,13 @@ extern int _nc_tracing;
 
 #define mmask_t chtype         /* not specified in XSI */
 #define attr_t chtype          /* not specified in XSI */
-#define ACS_S3          (acs_map['p'])  /* scan line 3 */
-#define ACS_S7          (acs_map['r'])  /* scan line 7 */
-#define ACS_LEQUAL      (acs_map['y'])  /* less/equal */
-#define ACS_GEQUAL      (acs_map['z'])  /* greater/equal */
-#define ACS_PI          (acs_map['{'])  /* Pi */
-#define ACS_NEQUAL      (acs_map['|'])  /* not equal */
-#define ACS_STERLING    (acs_map['}'])  /* UK pound sign */
+#define ACS_S3          (acs_map['p']) /* scan line 3 */
+#define ACS_S7          (acs_map['r']) /* scan line 7 */
+#define ACS_LEQUAL      (acs_map['y']) /* less/equal */
+#define ACS_GEQUAL      (acs_map['z']) /* greater/equal */
+#define ACS_PI          (acs_map['{']) /* Pi */
+#define ACS_NEQUAL      (acs_map['|']) /* not equal */
+#define ACS_STERLING    (acs_map['}']) /* UK pound sign */
 
 #endif
 
@@ -117,118 +117,125 @@ extern int _nc_tracing;
 
 #define QUIT           CTRL('Q')
 #define ESCAPE         CTRL('[')
-#define BLANK          ' '             /* this is the background character */
+#define BLANK          ' '     /* this is the background character */
 
 /* The behavior of mvhline, mvvline for negative/zero length is unspecified,
  * though we can rely on negative x/y values to stop the macro.
  */
-static void do_h_line(int y, int x, chtype c, int to)
+static void
+do_h_line(int y, int x, chtype c, int to)
 {
-       if ((to) > (x))
-               mvhline(y, x, c, (to) - (x));
+    if ((to) > (x))
+       mvhline(y, x, c, (to) - (x));
 }
 
-static void do_v_line(int y, int x, chtype c, int to)
+static void
+do_v_line(int y, int x, chtype c, int to)
 {
-       if ((to) > (y))
-               mvvline(y, x, c, (to) - (y));
+    if ((to) > (y))
+       mvvline(y, x, c, (to) - (y));
 }
 
 /* Common function to allow ^T to toggle trace-mode in the middle of a test
  * so that trace-files can be made smaller.
  */
-static int wGetchar(WINDOW *win)
+static int
+wGetchar(WINDOW *win)
 {
-       int c;
+    int c;
 #ifdef TRACE
-       while ((c = wgetch(win)) == CTRL('T')) {
-               if (_nc_tracing) {
-                       save_trace = _nc_tracing;
-                       _tracef("TOGGLE-TRACING OFF");
-                       _nc_tracing = 0;
-               } else {
-                       _nc_tracing = save_trace;
-               }
-               trace(_nc_tracing);
-               if (_nc_tracing)
-                       _tracef("TOGGLE-TRACING ON");
+    while ((c = wgetch(win)) == CTRL('T')) {
+       if (_nc_tracing) {
+           save_trace = _nc_tracing;
+           _tracef("TOGGLE-TRACING OFF");
+           _nc_tracing = 0;
+       } else {
+           _nc_tracing = save_trace;
        }
+       trace(_nc_tracing);
+       if (_nc_tracing)
+           _tracef("TOGGLE-TRACING ON");
+    }
 #else
-       c = wgetch(win);
+    c = wgetch(win);
 #endif
-       return c;
+    return c;
 }
 #define Getchar() wGetchar(stdscr)
 
-static void Pause(void)
+static void
+Pause(void)
 {
-       move(LINES - 1, 0);
-       addstr("Press any key to continue... ");
-       (void) Getchar();
+    move(LINES - 1, 0);
+    addstr("Press any key to continue... ");
+    (void) Getchar();
 }
 
-static void Cannot(const char *what)
+static void
+Cannot(const char *what)
 {
-       printw("\nThis %s terminal %s\n\n", getenv("TERM"), what);
-       Pause();
+    printw("\nThis %s terminal %s\n\n", getenv("TERM"), what);
+    Pause();
 }
 
-static void ShellOut(bool message)
+static void
+ShellOut(bool message)
 {
-       if (message)
-               addstr("Shelling out...");
-       def_prog_mode();
-       endwin();
-       system("sh");
-       if (message)
-               addstr("returned from shellout.\n");
-       refresh();
+    if (message)
+       addstr("Shelling out...");
+    def_prog_mode();
+    endwin();
+    system("sh");
+    if (message)
+       addstr("returned from shellout.\n");
+    refresh();
 }
 
 #ifdef NCURSES_MOUSE_VERSION
-static const char *mouse_decode(MEVENT const *ep)
+static const char *
+mouse_decode(MEVENT const *ep)
 {
-       static char buf[80];
+    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);
+    (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")
+    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);
+    if (buf[strlen(buf) - 1] == ' ')
+       buf[strlen(buf) - 2] = '\0';
+    (void) strcat(buf, "}");
+    return (buf);
 }
 #endif /* NCURSES_MOUSE_VERSION */
 
@@ -238,19 +245,20 @@ static const char *mouse_decode(MEVENT const *ep)
  *
  ****************************************************************************/
 
-static void getch_test(void)
+static void
+getch_test(void)
 /* test the keypad feature */
 {
-char buf[BUFSIZ];
-int c;
-int incount = 0, firsttime = 0;
-bool blocking = TRUE;
-int y, x;
+    char buf[BUFSIZ];
+    int c;
+    int incount = 0, firsttime = 0;
+    bool blocking = TRUE;
+    int y, x;
 
     refresh();
 
 #ifdef NCURSES_MOUSE_VERSION
-    mousemask(ALL_MOUSE_EVENTS, (mmask_t *)0);
+    mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0);
 #endif
 
     (void) printw("Delay in 10ths of a second (<CR> for blocking input)? ");
@@ -259,70 +267,59 @@ int y, x;
     noecho();
     nonl();
 
-    if (isdigit(buf[0]))
-    {
+    if (isdigit(buf[0])) {
        timeout(atoi(buf) * 100);
        blocking = FALSE;
     }
 
     c = '?';
     raw();
-    for (;;)
-    {
-       if (firsttime++)
-       {
+    for (;;) {
+       if (firsttime++) {
            printw("Key pressed: %04o ", c);
 #ifdef NCURSES_MOUSE_VERSION
-           if (c == KEY_MOUSE)
-           {
-               MEVENT  event;
+           if (c == KEY_MOUSE) {
+               MEVENT event;
 
                getmouse(&event);
                printw("KEY_MOUSE, %s\n", mouse_decode(&event));
-           }
-           else
-#endif /* NCURSES_MOUSE_VERSION */
-            if (c >= KEY_MIN)
-           {
+           } else
+#endif /* NCURSES_MOUSE_VERSION */
+           if (c >= KEY_MIN) {
                (void) addstr(keyname(c));
                addch('\n');
-           }
-           else if (c > 0x80)
-           {
+           } else if (c > 0x80) {
                int c2 = (c & 0x7f);
                if (isprint(c2))
                    (void) printw("M-%c", c2);
                else
                    (void) printw("M-%s", unctrl(c2));
                addstr(" (high-half character)\n");
-           }
-           else
-           {
+           } else {
                if (isprint(c))
                    (void) printw("%c (ASCII printable character)\n", c);
                else
                    (void) printw("%s (ASCII control character)\n", unctrl(c));
            }
            getyx(stdscr, y, x);
-           if (y >= LINES-1)
-               move(0,0);
+           if (y >= LINES - 1)
+               move(0, 0);
            clrtoeol();
        }
 
-       if (c == 'g')
-       {
+       if (c == 'g') {
            addstr("getstr test: ");
-           echo(); getstr(buf); noecho();
+           echo();
+           getstr(buf);
+           noecho();
            printw("I saw `%s'.\n", buf);
        }
-       if (c == 's')
-       {
+       if (c == 's') {
            ShellOut(TRUE);
        }
        if (c == 'x' || c == 'q' || (c == ERR && blocking))
            break;
-       if (c == '?')
-       {
+       if (c == '?') {
            addstr("Type any key to see its keypad value.  Also:\n");
            addstr("g -- triggers a getstr test\n");
            addstr("s -- shell out\n");
@@ -335,12 +332,12 @@ int y, x;
                (void) printw("%05d: input timed out\n", incount++);
            else {
                (void) printw("%05d: input error\n", incount++);
-               break;
+               break;
            }
     }
 
 #ifdef NCURSES_MOUSE_VERSION
-    mousemask(0, (mmask_t *)0);
+    mousemask(0, (mmask_t *) 0);
 #endif
     timeout(-1);
     erase();
@@ -349,27 +346,31 @@ int y, x;
     endwin();
 }
 
-static int show_attr(int row, int skip, chtype attr, const char *name, bool once)
+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, " ");
+    if (skip)
+       printw("%*s", skip, " ");
     if (once)
        attron(attr);
     else
-       attrset(attr);
+       attrset(attr);
     addstr("abcde fghij klmno pqrst uvwxy z");
     if (once)
        attroff(attr);
-    if (skip) printw("%*s", skip, " ");
+    if (skip)
+       printw("%*s", skip, " ");
     printw("|");
     if (attr != A_NORMAL) {
        if (!(termattrs() & attr)) {
            printw(" (N/A)");
        } else if (ncv > 0 && (getbkgd(stdscr) & A_COLOR)) {
-           static const attr_t table[] = {
+           static const attr_t table[] =
+           {
                A_STANDOUT,
                A_UNDERLINE,
                A_REVERSE,
@@ -382,9 +383,9 @@ static int show_attr(int row, int skip, chtype attr, const char *name, bool once
            };
            unsigned n;
            bool found = FALSE;
-           for (n = 0; n < sizeof(table)/sizeof(table[0]); n++) {
+           for (n = 0; n < sizeof(table) / sizeof(table[0]); n++) {
                if ((table[n] & attr) != 0
-                && ((1 << n) & ncv) != 0) {
+                   && ((1 << n) & ncv) != 0) {
                    found = TRUE;
                    break;
                }
@@ -396,7 +397,8 @@ static int show_attr(int row, int skip, chtype attr, const char *name, bool once
     return row + 2;
 }
 
-static bool attr_getc(int *skip, int *fg, int *bg)
+static bool
+attr_getc(int *skip, int *fg, int *bg)
 {
     int ch = Getchar();
 
@@ -409,36 +411,49 @@ static bool attr_getc(int *skip, int *fg, int *bg)
        return TRUE;
     } else if (has_colors()) {
        switch (ch) {
-       case 'f': *fg = (*fg + 1); break;
-       case 'F': *fg = (*fg - 1); break;
-       case 'b': *bg = (*bg + 1); break;
-       case 'B': *bg = (*bg - 1); break;
+       case 'f':
+           *fg = (*fg + 1);
+           break;
+       case 'F':
+           *fg = (*fg - 1);
+           break;
+       case 'b':
+           *bg = (*bg + 1);
+           break;
+       case 'B':
+           *bg = (*bg - 1);
+           break;
        default:
            return FALSE;
        }
-       if (*fg >= COLORS) *fg = 0;
-       if (*fg <  0)      *fg = COLORS - 1;
-       if (*bg >= COLORS) *bg = 0;
-       if (*bg <  0)      *bg = COLORS - 1;
+       if (*fg >= COLORS)
+           *fg = 0;
+       if (*fg < 0)
+           *fg = COLORS - 1;
+       if (*bg >= COLORS)
+           *bg = 0;
+       if (*bg < 0)
+           *bg = COLORS - 1;
        return TRUE;
     }
     return FALSE;
 }
 
-static void attr_test(void)
+static void
+attr_test(void)
 /* test text attributes */
 {
     int n;
     int skip = tigetnum("xmc");
     int fg = COLOR_BLACK;      /* color pair 0 is special */
     int bg = COLOR_BLACK;
-    bool *pairs = (bool *)calloc(COLOR_PAIRS, sizeof(bool));
+    bool *pairs = (bool *) calloc(COLOR_PAIRS, sizeof(bool));
     pairs[0] = TRUE;
 
     if (skip < 0)
-       skip = 0;
+       skip = 0;
 
-    n = skip;  /* make it easy */
+    n = skip;                  /* make it easy */
 
     do {
        int row = 2;
@@ -447,7 +462,7 @@ static void attr_test(void)
        if (has_colors()) {
            int pair = (fg * COLORS) + bg;
            if (!pairs[pair]) {
-               init_pair(pair, fg, bg);
+               init_pair(pair, fg, bg);
                pairs[pair] = TRUE;
            }
            normal |= COLOR_PAIR(pair);
@@ -457,30 +472,30 @@ static void attr_test(void)
 
        mvaddstr(0, 20, "Character attribute test display");
 
-       row = show_attr(row, n, A_STANDOUT,  "STANDOUT",  TRUE);
-       row = show_attr(row, n, A_REVERSE,   "REVERSE",   TRUE);
-       row = show_attr(row, n, A_BOLD,      "BOLD",      TRUE);
+       row = show_attr(row, n, A_STANDOUT, "STANDOUT", TRUE);
+       row = show_attr(row, n, A_REVERSE, "REVERSE", TRUE);
+       row = show_attr(row, n, A_BOLD, "BOLD", TRUE);
        row = show_attr(row, n, A_UNDERLINE, "UNDERLINE", TRUE);
-       row = show_attr(row, n, A_DIM,       "DIM",       TRUE);
-       row = show_attr(row, n, A_BLINK,     "BLINK",     TRUE);
-       row = show_attr(row, n, A_PROTECT,   "PROTECT",   TRUE);
-       row = show_attr(row, n, A_INVIS,     "INVISIBLE", TRUE);
-       row = show_attr(row, n, A_NORMAL,    "NORMAL",    FALSE);
+       row = show_attr(row, n, A_DIM, "DIM", TRUE);
+       row = show_attr(row, n, A_BLINK, "BLINK", TRUE);
+       row = show_attr(row, n, A_PROTECT, "PROTECT", TRUE);
+       row = show_attr(row, n, A_INVIS, "INVISIBLE", TRUE);
+       row = show_attr(row, n, A_NORMAL, "NORMAL", FALSE);
 
        mvprintw(row, 8,
-            "This terminal does %shave the magic-cookie glitch",
-            tigetnum("xmc") > -1 ? "" : "not ");
-       mvprintw(row+1, 8,
-            "Enter a digit to set gaps on each side of displayed attributes");
-       mvprintw(row+2, 8,
-            "^L = repaint");
+           "This terminal does %shave the magic-cookie glitch",
+           tigetnum("xmc") > -1 ? "" : "not ");
+       mvprintw(row + 1, 8,
+           "Enter a digit to set gaps on each side of displayed attributes");
+       mvprintw(row + 2, 8,
+           "^L = repaint");
        if (has_colors())
            printw(".  f/F/b/F toggle colors (now %d/%d)", fg, bg);
 
-        refresh();
+       refresh();
     } while (attr_getc(&n, &fg, &bg));
 
-    free((char *)pairs);
+    free((char *) pairs);
     bkgdset(A_NORMAL | BLANK);
     erase();
     endwin();
@@ -501,10 +516,19 @@ static NCURSES_CONST char *color_names[] =
     "blue",
     "magenta",
     "cyan",
-    "white"
+    "white",
+    "BLACK",
+    "RED",
+    "GREEN",
+    "YELLOW",
+    "BLUE",
+    "MAGENTA",
+    "CYAN",
+    "WHITE"
 };
 
-static void show_color_name(int y, int x, int color)
+static void
+show_color_name(int y, int x, int color)
 {
     if (COLORS > 8)
        mvprintw(y, x, "%02d   ", color);
@@ -512,7 +536,8 @@ static void show_color_name(int y, int x, int color)
        mvaddstr(y, x, color_names[color]);
 }
 
-static void color_test(void)
+static void
+color_test(void)
 /* generate a color test pattern */
 {
     int i;
@@ -525,24 +550,22 @@ static void color_test(void)
     width = (COLORS > 8) ? 4 : 8;
     hello = (COLORS > 8) ? "Test" : "Hello";
 
-    for (base = 0; base < 2; base++)
-    {
-       top = (COLORS > 8) ? 0 : base * (COLORS+3);
+    for (base = 0; base < 2; base++) {
+       top = (COLORS > 8) ? 0 : base * (COLORS + 3);
        clrtobot();
        (void) mvprintw(top + 1, 0,
-               "%dx%d matrix of foreground/background colors, bright *%s*\n",
-               COLORS, COLORS,
-               base ? "on" : "off");
+           "%dx%d matrix of foreground/background colors, bright *%s*\n",
+           COLORS, COLORS,
+           base ? "on" : "off");
        for (i = 0; i < COLORS; i++)
-           show_color_name(top + 2, (i+1) * width, i);
+           show_color_name(top + 2, (i + 1) * width, i);
        for (i = 0; i < COLORS; i++)
            show_color_name(top + 3 + i, 0, i);
-       for (i = 1; i < COLOR_PAIRS; i++)
-       {
+       for (i = 1; i < COLOR_PAIRS; i++) {
            init_pair(i, i % COLORS, i / COLORS);
-           attron((attr_t)COLOR_PAIR(i));
+           attron((attr_t) COLOR_PAIR(i));
            if (base)
-               attron((attr_t)A_BOLD);
+               attron((attr_t) A_BOLD);
            mvaddstr(top + 3 + (i / COLORS), (i % COLORS + 1) * width, hello);
            attrset(A_NORMAL);
        }
@@ -554,57 +577,59 @@ static void color_test(void)
     endwin();
 }
 
-static void change_color(int current, int field, int value, int usebase)
+static void
+change_color(int current, int field, int value, int usebase)
 {
-       short   red, green, blue;
+    short red, green, blue;
 
-       if (usebase)
-               color_content(current, &red, &green, &blue);
-       else
-               red = green = blue = 0;
+    if (usebase)
+       color_content(current, &red, &green, &blue);
+    else
+       red = green = blue = 0;
 
-       switch (field) {
-       case 0:
-               red += value;
-               break;
-       case 1:
-               green += value;
-               break;
-       case 2:
-               blue += value;
-               break;
-       }
+    switch (field) {
+    case 0:
+       red += value;
+       break;
+    case 1:
+       green += value;
+       break;
+    case 2:
+       blue += value;
+       break;
+    }
 
-       if (init_color(current, red, green, blue) == ERR)
-               beep();
+    if (init_color(current, red, green, blue) == ERR)
+       beep();
 }
 
-static void color_edit(void)
+static void
+color_edit(void)
 /* display the color test pattern, without trying to edit colors */
 {
-    int        i, this_c = 0, value = 0, current = 0, field = 0;
+    int i, this_c = 0, value = 0, current = 0, field = 0;
     int last_c;
+    int max_colors = COLORS > 16 ? 16 : COLORS;
 
     refresh();
 
-    for (i = 0; i < COLORS; i++)
+    for (i = 0; i < max_colors; i++)
        init_pair(i, COLOR_WHITE, i);
 
-    mvprintw(LINES-2, 0, "Number: %d", value);
+    mvprintw(LINES - 2, 0, "Number: %d", value);
 
     do {
-       short   red, green, blue;
+       short red, green, blue;
 
        attron(A_BOLD);
        mvaddstr(0, 20, "Color RGB Value Editing");
        attroff(A_BOLD);
 
-       for (i = 0; i < COLORS; i++)
-        {
+       for (i = 0; i < max_colors; i++) {
            mvprintw(2 + i, 0, "%c %-8s:",
-                    (i == current ? '>' : ' '),
-                    (i < (int) SIZEOF(color_names)
-                       ? color_names[i] : ""));
+               (i == current ? '>' : ' '),
+               (i < (int) SIZEOF(color_names)
+                   ? color_names[i] : ""));
            attrset(COLOR_PAIR(i));
            addstr("        ");
            attrset(A_NORMAL);
@@ -619,24 +644,30 @@ static void color_edit(void)
 
            color_content(i, &red, &green, &blue);
            addstr("   R = ");
-           if (current == i && field == 0) attron(A_STANDOUT);
+           if (current == i && field == 0)
+               attron(A_STANDOUT);
            printw("%04d", red);
-           if (current == i && field == 0) attrset(A_NORMAL);
+           if (current == i && field == 0)
+               attrset(A_NORMAL);
            addstr(", G = ");
-           if (current == i && field == 1) attron(A_STANDOUT);
+           if (current == i && field == 1)
+               attron(A_STANDOUT);
            printw("%04d", green);
-           if (current == i && field == 1) attrset(A_NORMAL);
+           if (current == i && field == 1)
+               attrset(A_NORMAL);
            addstr(", B = ");
-           if (current == i && field == 2) attron(A_STANDOUT);
+           if (current == i && field == 2)
+               attron(A_STANDOUT);
            printw("%04d", blue);
-           if (current == i && field == 2) attrset(A_NORMAL);
+           if (current == i && field == 2)
+               attrset(A_NORMAL);
            attrset(A_NORMAL);
            addstr(")");
        }
 
-       mvaddstr(COLORS + 3, 0,
+       mvaddstr(max_colors + 3, 0,
            "Use up/down to select a color, left/right to change fields.");
-       mvaddstr(COLORS + 4, 0,
+       mvaddstr(max_colors + 4, 0,
            "Modify field by typing nnn=, nnn-, or nnn+.  ? for help.");
 
        move(2 + current, 0);
@@ -644,16 +675,15 @@ static void color_edit(void)
        last_c = this_c;
        this_c = Getchar();
        if (isdigit(this_c) && !isdigit(last_c))
-               value = 0;
+           value = 0;
 
-       switch (this_c)
-       {
+       switch (this_c) {
        case KEY_UP:
-           current = (current == 0 ? (COLORS - 1) : current - 1);
+           current = (current == 0 ? (max_colors - 1) : current - 1);
            break;
 
        case KEY_DOWN:
-           current = (current == (COLORS - 1) ? 0 : current + 1);
+           current = (current == (max_colors - 1) ? 0 : current + 1);
            break;
 
        case KEY_RIGHT:
@@ -664,8 +694,16 @@ static void color_edit(void)
            field = (field == 0 ? 2 : field - 1);
            break;
 
-       case '0': case '1': case '2': case '3': case '4':
-       case '5': case '6': case '7': case '8': case '9':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
            value = value * 10 + (this_c - '0');
            break;
 
@@ -683,18 +721,18 @@ static void color_edit(void)
 
        case '?':
            erase();
-    P("                      RGB Value Editing Help");
-    P("");
-    P("You are in the RGB value editor.  Use the arrow keys to select one of");
-    P("the fields in one of the RGB triples of the current colors; the one");
-    P("currently selected will be reverse-video highlighted.");
-    P("");
-    P("To change a field, enter the digits of the new value; they are echoed");
-    P("as entered.  Finish by typing `='.  The change will take effect instantly.");
-    P("To increment or decrement a value, use the same procedure, but finish");
-    P("with a `+' or `-'.");
-    P("");
-    P("To quit, do `x' or 'q'");
+           P("                      RGB Value Editing Help");
+           P("");
+           P("You are in the RGB value editor.  Use the arrow keys to select one of");
+           P("the fields in one of the RGB triples of the current colors; the one");
+           P("currently selected will be reverse-video highlighted.");
+           P("");
+           P("To change a field, enter the digits of the new value; they are echoed");
+           P("as entered.  Finish by typing `='.  The change will take effect instantly.");
+           P("To increment or decrement a value, use the same procedure, but finish");
+           P("with a `+' or `-'.");
+           P("");
+           P("To quit, do `x' or 'q'");
 
            Pause();
            erase();
@@ -708,7 +746,7 @@ static void color_edit(void)
            beep();
            break;
        }
-       mvprintw(LINES-2, 0, "Number: %d", value);
+       mvprintw(LINES - 2, 0, "Number: %d", value);
        clrtoeol();
     } while
        (this_c != 'x' && this_c != 'q');
@@ -723,17 +761,17 @@ static void color_edit(void)
  *
  ****************************************************************************/
 
-static void slk_test(void)
+static void
+slk_test(void)
 /* exercise the soft keys */
 {
-    int        c, fmt = 1;
+    int c, fmt = 1;
     char buf[9];
 
     c = CTRL('l');
     do {
        move(0, 0);
-       switch(c)
-       {
+       switch (c) {
        case CTRL('l'):
            erase();
            attron(A_BOLD);
@@ -772,7 +810,7 @@ static void slk_test(void)
        case 's':
            mvprintw(20, 0, "Press Q to stop the scrolling-test: ");
            while ((c = Getchar()) != 'Q' && (c != ERR))
-               addch((chtype)c);
+               addch((chtype) c);
            break;
 
        case 'd':
@@ -791,15 +829,22 @@ static void slk_test(void)
            fmt = 2;
            break;
 
-       case '1': case '2': case '3': case '4':
-       case '5': case '6': case '7': case '8':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
            (void) mvaddstr(20, 0, "Please enter the label value: ");
            echo();
            wgetnstr(stdscr, buf, 8);
            noecho();
            slk_set((c - '0'), buf, fmt);
            slk_refresh();
-           move(20, 0); clrtoeol();
+           move(20, 0);
+           clrtoeol();
            break;
 
        case 'x':
@@ -812,7 +857,7 @@ static void slk_test(void)
     } while
        ((c = Getchar()) != EOF);
 
- done:
 done:
     erase();
     endwin();
 }
@@ -826,121 +871,127 @@ static void slk_test(void)
 /* ISO 6429:  codes 0x80 to 0x9f may be control characters that cause the
  * terminal to perform functions.  The remaining codes can be graphic.
  */
-static void show_upper_chars(int first)
+static void
+show_upper_chars(int first)
 {
-       bool C1 = (first == 128);
-       int code;
-       int last = first + 31;
-       int reply;
+    bool C1 = (first == 128);
+    int code;
+    int last = first + 31;
+    int reply;
 
-       erase();
-       attron(A_BOLD);
-       mvprintw(0, 20, "Display of %s Character Codes %d to %d",
-               C1 ? "C1" : "GR", first, last);
-       attroff(A_BOLD);
-       refresh();
+    erase();
+    attron(A_BOLD);
+    mvprintw(0, 20, "Display of %s Character Codes %d to %d",
+       C1 ? "C1" : "GR", first, last);
+    attroff(A_BOLD);
+    refresh();
 
-       for (code = first; code <= last; code++) {
-               int row = 4 + ((code - first) % 16);
-               int col = ((code - first) / 16) * COLS / 2;
-               char tmp[80];
-               sprintf(tmp, "%3d (0x%x)", code, code);
-               mvprintw(row, col, "%*s: ", COLS/4, tmp);
-               if (C1)
-                       nodelay(stdscr, TRUE);
-               echochar(code);
-               if (C1) {
-                       /* (yes, this _is_ crude) */
-                       while ((reply = Getchar()) != ERR) {
-                               addch(reply);
-                               napms(10);
-                       }
-                       nodelay(stdscr, FALSE);
-               }
+    for (code = first; code <= last; code++) {
+       int row = 4 + ((code - first) % 16);
+       int col = ((code - first) / 16) * COLS / 2;
+       char tmp[80];
+       sprintf(tmp, "%3d (0x%x)", code, code);
+       mvprintw(row, col, "%*s: ", COLS / 4, tmp);
+       if (C1)
+           nodelay(stdscr, TRUE);
+       echochar(code);
+       if (C1) {
+           /* (yes, this _is_ crude) */
+           while ((reply = Getchar()) != ERR) {
+               addch(reply);
+               napms(10);
+           }
+           nodelay(stdscr, FALSE);
        }
+    }
 }
 
-static int show_1_acs(int n, const char *name, chtype code)
+static int
+show_1_acs(int n, const char *name, chtype code)
 {
-       const int height = 16;
-       int row = 4 + (n % height);
-       int col = (n / height) * COLS / 2;
-       mvprintw(row, col, "%*s : ", COLS/4, name);
-       addch(code);
-       return n + 1;
+    const int height = 16;
+    int row = 4 + (n % height);
+    int col = (n / height) * COLS / 2;
+    mvprintw(row, col, "%*s : ", COLS / 4, name);
+    addch(code);
+    return n + 1;
 }
 
-static void show_acs_chars(void)
+static void
+show_acs_chars(void)
 /* display the ACS character set */
 {
-       int n;
+    int n;
 
 #define BOTH(name) #name, name
 
-       erase();
-       attron(A_BOLD);
-       mvaddstr(0, 20, "Display of the ACS Character Set");
-       attroff(A_BOLD);
-       refresh();
+    erase();
+    attron(A_BOLD);
+    mvaddstr(0, 20, "Display of the ACS Character Set");
+    attroff(A_BOLD);
+    refresh();
 
-       n = show_1_acs(0, BOTH(ACS_ULCORNER));
-       n = show_1_acs(n, BOTH(ACS_LLCORNER));
-       n = show_1_acs(n, BOTH(ACS_URCORNER));
-       n = show_1_acs(n, BOTH(ACS_LRCORNER));
-       n = show_1_acs(n, BOTH(ACS_RTEE));
-       n = show_1_acs(n, BOTH(ACS_LTEE));
-       n = show_1_acs(n, BOTH(ACS_BTEE));
-       n = show_1_acs(n, BOTH(ACS_TTEE));
-       n = show_1_acs(n, BOTH(ACS_HLINE));
-       n = show_1_acs(n, BOTH(ACS_VLINE));
-       n = show_1_acs(n, BOTH(ACS_PLUS));
-       n = show_1_acs(n, BOTH(ACS_S1));
-       n = show_1_acs(n, BOTH(ACS_S9));
-       n = show_1_acs(n, BOTH(ACS_DIAMOND));
-       n = show_1_acs(n, BOTH(ACS_CKBOARD));
-       n = show_1_acs(n, BOTH(ACS_DEGREE));
-       n = show_1_acs(n, BOTH(ACS_PLMINUS));
-       n = show_1_acs(n, BOTH(ACS_BULLET));
-       n = show_1_acs(n, BOTH(ACS_LARROW));
-       n = show_1_acs(n, BOTH(ACS_RARROW));
-       n = show_1_acs(n, BOTH(ACS_DARROW));
-       n = show_1_acs(n, BOTH(ACS_UARROW));
-       n = show_1_acs(n, BOTH(ACS_BOARD));
-       n = show_1_acs(n, BOTH(ACS_LANTERN));
-       n = show_1_acs(n, BOTH(ACS_BLOCK));
-       n = show_1_acs(n, BOTH(ACS_S3));
-       n = show_1_acs(n, BOTH(ACS_S7));
-       n = show_1_acs(n, BOTH(ACS_LEQUAL));
-       n = show_1_acs(n, BOTH(ACS_GEQUAL));
-       n = show_1_acs(n, BOTH(ACS_PI));
-       n = show_1_acs(n, BOTH(ACS_NEQUAL));
-       n = show_1_acs(n, BOTH(ACS_STERLING));
-}
-
-static void acs_display(void)
-{
-       int     c = 'a';
-
-       do {
-               switch (c) {
-               case 'a':
-                       show_acs_chars();
-                       break;
-               case '0':
-               case '1':
-               case '2':
-               case '3':
-                       show_upper_chars((c - '0') * 32 + 128);
-                       break;
-               }
-               mvprintw(LINES-3,0, "Note: ANSI terminals may not display C1 characters.");
-               mvprintw(LINES-2,0, "Select: a=ACS, 0=C1, 1,2,3=GR characters, q=quit");
-               refresh();
-       } while ((c = Getchar()) != 'x' && c != 'q');
+    n = show_1_acs(0, BOTH(ACS_ULCORNER));
+    n = show_1_acs(n, BOTH(ACS_LLCORNER));
+    n = show_1_acs(n, BOTH(ACS_URCORNER));
+    n = show_1_acs(n, BOTH(ACS_LRCORNER));
+    n = show_1_acs(n, BOTH(ACS_RTEE));
+    n = show_1_acs(n, BOTH(ACS_LTEE));
+    n = show_1_acs(n, BOTH(ACS_BTEE));
+    n = show_1_acs(n, BOTH(ACS_TTEE));
+    n = show_1_acs(n, BOTH(ACS_HLINE));
+    n = show_1_acs(n, BOTH(ACS_VLINE));
+    n = show_1_acs(n, BOTH(ACS_PLUS));
+    n = show_1_acs(n, BOTH(ACS_S1));
+    n = show_1_acs(n, BOTH(ACS_S9));
+    n = show_1_acs(n, BOTH(ACS_DIAMOND));
+    n = show_1_acs(n, BOTH(ACS_CKBOARD));
+    n = show_1_acs(n, BOTH(ACS_DEGREE));
+    n = show_1_acs(n, BOTH(ACS_PLMINUS));
+    n = show_1_acs(n, BOTH(ACS_BULLET));
+    n = show_1_acs(n, BOTH(ACS_LARROW));
+    n = show_1_acs(n, BOTH(ACS_RARROW));
+    n = show_1_acs(n, BOTH(ACS_DARROW));
+    n = show_1_acs(n, BOTH(ACS_UARROW));
+    n = show_1_acs(n, BOTH(ACS_BOARD));
+    n = show_1_acs(n, BOTH(ACS_LANTERN));
+    n = show_1_acs(n, BOTH(ACS_BLOCK));
+    n = show_1_acs(n, BOTH(ACS_S3));
+    n = show_1_acs(n, BOTH(ACS_S7));
+    n = show_1_acs(n, BOTH(ACS_LEQUAL));
+    n = show_1_acs(n, BOTH(ACS_GEQUAL));
+    n = show_1_acs(n, BOTH(ACS_PI));
+    n = show_1_acs(n, BOTH(ACS_NEQUAL));
+    n = show_1_acs(n, BOTH(ACS_STERLING));
+}
 
-       Pause();
-       erase();
-       endwin();
+static void
+acs_display(void)
+{
+    int c = 'a';
+
+    do {
+       switch (c) {
+       case 'a':
+           show_acs_chars();
+           break;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+           show_upper_chars((c - '0') * 32 + 128);
+           break;
+       }
+       mvprintw(LINES - 3, 0,
+           "Note: ANSI terminals may not display C1 characters.");
+       mvprintw(LINES - 2, 0,
+           "Select: a=ACS, 0=C1, 1,2,3=GR characters, q=quit");
+       refresh();
+    } while ((c = Getchar()) != 'x' && c != 'q');
+
+    Pause();
+    erase();
+    endwin();
 }
 
 /*
@@ -961,58 +1012,59 @@ test_sgr_attributes(void)
        }
        bkgdset(normal);
        erase();
-       mvprintw( 1,20, "Graphic rendition test pattern:");
+       mvprintw(1, 20, "Graphic rendition test pattern:");
 
-       mvprintw( 4, 1, "vanilla");
+       mvprintw(4, 1, "vanilla");
 
 #define set_sgr(mask) bkgdset((normal^(mask)));
        set_sgr(A_BOLD);
-       mvprintw( 4,40, "bold");
+       mvprintw(4, 40, "bold");
 
        set_sgr(A_UNDERLINE);
-       mvprintw( 6, 6, "underline");
+       mvprintw(6, 6, "underline");
 
-       set_sgr(A_BOLD|A_UNDERLINE);
-       mvprintw( 6,45, "bold underline");
+       set_sgr(A_BOLD | A_UNDERLINE);
+       mvprintw(6, 45, "bold underline");
 
        set_sgr(A_BLINK);
-       mvprintw( 8, 1, "blink");
+       mvprintw(8, 1, "blink");
 
-       set_sgr(A_BLINK|A_BOLD);
-       mvprintw( 8,40, "bold blink");
+       set_sgr(A_BLINK | A_BOLD);
+       mvprintw(8, 40, "bold blink");
 
-       set_sgr(A_UNDERLINE|A_BLINK);
+       set_sgr(A_UNDERLINE | A_BLINK);
        mvprintw(10, 6, "underline blink");
 
-       set_sgr(A_BOLD|A_UNDERLINE|A_BLINK);
-       mvprintw(10,45, "bold underline blink");
+       set_sgr(A_BOLD | A_UNDERLINE | A_BLINK);
+       mvprintw(10, 45, "bold underline blink");
 
        set_sgr(A_REVERSE);
        mvprintw(12, 1, "negative");
 
-       set_sgr(A_BOLD|A_REVERSE);
-       mvprintw(12,40, "bold negative");
+       set_sgr(A_BOLD | A_REVERSE);
+       mvprintw(12, 40, "bold negative");
 
-       set_sgr(A_UNDERLINE|A_REVERSE);
+       set_sgr(A_UNDERLINE | A_REVERSE);
        mvprintw(14, 6, "underline negative");
 
-       set_sgr(A_BOLD|A_UNDERLINE|A_REVERSE);
-       mvprintw(14,45, "bold underline negative");
+       set_sgr(A_BOLD | A_UNDERLINE | A_REVERSE);
+       mvprintw(14, 45, "bold underline negative");
 
-       set_sgr(A_BLINK|A_REVERSE);
+       set_sgr(A_BLINK | A_REVERSE);
        mvprintw(16, 1, "blink negative");
 
-       set_sgr(A_BOLD|A_BLINK|A_REVERSE);
-       mvprintw(16,40, "bold blink negative");
+       set_sgr(A_BOLD | A_BLINK | A_REVERSE);
+       mvprintw(16, 40, "bold blink negative");
 
-       set_sgr(A_UNDERLINE|A_BLINK|A_REVERSE);
+       set_sgr(A_UNDERLINE | A_BLINK | A_REVERSE);
        mvprintw(18, 6, "underline blink negative");
 
-       set_sgr(A_BOLD|A_UNDERLINE|A_BLINK|A_REVERSE);
-       mvprintw(18,45, "bold underline blink negative");
+       set_sgr(A_BOLD | A_UNDERLINE | A_BLINK | A_REVERSE);
+       mvprintw(18, 45, "bold underline blink negative");
 
        bkgdset(normal);
-       mvprintw(LINES-2,1, "%s background. ", pass == 0 ? "Dark" : "Light");
+       mvprintw(LINES - 2, 1, "%s background. ", pass == 0 ? "Dark" :
+           "Light");
        clrtoeol();
        Pause();
     }
@@ -1030,196 +1082,240 @@ test_sgr_attributes(void)
 
 #define BOTLINES       4       /* number of line stolen from screen bottom */
 
-typedef struct
-{
+typedef struct {
     int y, x;
-}
-pair;
+} pair;
 
 #define FRAME struct frame
 FRAME
 {
-       FRAME           *next, *last;
-       bool            do_scroll;
-       bool            do_keypad;
-       WINDOW          *wind;
+    FRAME *next, *last;
+    bool do_scroll;
+    bool do_keypad;
+    WINDOW *wind;
 };
 
 /* We need to know if these flags are actually set, so don't look in FRAME.
  * These names are known to work with SVr4 curses as well as ncurses.
  */
-static bool HaveKeypad(FRAME *curp)
+static bool
+HaveKeypad(FRAME * curp)
 {
-       WINDOW *win = (curp ? curp->wind : stdscr);
-       return win->_use_keypad;
+    WINDOW *win = (curp ? curp->wind : stdscr);
+    return win->_use_keypad;
 }
 
-static bool HaveScroll(FRAME *curp)
+static bool
+HaveScroll(FRAME * curp)
 {
-       WINDOW *win = (curp ? curp->wind : stdscr);
-       return win->_scroll;
+    WINDOW *win = (curp ? curp->wind : stdscr);
+    return win->_scroll;
 }
 
-static void newwin_legend(FRAME *curp)
+static void
+newwin_legend(FRAME * curp)
 {
-       static const struct {
-               const char *msg;
-               int code;
-       } legend[] = {
-               { "^C = create window",         0 },
-               { "^N = next window",           0 },
-               { "^P = previous window",       0 },
-               { "^F = scroll forward",        0 },
-               { "^B = scroll backward",       0 },
-               { "^K = keypad(%s)",            1 },
-               { "^S = scrollok(%s)",          2 },
-               { "^W = save window to file",   0 },
-               { "^R = restore window",        0 },
-#ifdef NCURSES_VERSION
-               { "^X = resize",                0 },
+    static const struct {
+       const char *msg;
+       int code;
+    } legend[] = {
+       {
+           "^C = create window", 0
+       },
+       {
+           "^N = next window", 0
+       },
+       {
+           "^P = previous window", 0
+       },
+       {
+           "^F = scroll forward", 0
+       },
+       {
+           "^B = scroll backward", 0
+       },
+       {
+           "^K = keypad(%s)", 1
+       },
+       {
+           "^S = scrollok(%s)", 2
+       },
+       {
+           "^W = save window to file", 0
+       },
+       {
+           "^R = restore window", 0
+       },
+#ifdef HAVE_WRESIZE
+       {
+           "^X = resize", 0
+       },
 #endif
-               { "^Q%s = exit",                3 }
-       };
-       size_t n;
-       int y, x;
-       bool do_keypad = HaveKeypad(curp);
-       bool do_scroll = HaveScroll(curp);
-       char buf[BUFSIZ];
-
-       move(LINES-4, 0);
-       for (n = 0; n < SIZEOF(legend); n++) {
-               switch (legend[n].code) {
-               default:
-                       strcpy(buf, legend[n].msg);
-                       break;
-               case 1:
-                       sprintf(buf, legend[n].msg, do_keypad ? "yes" : "no");
-                       break;
-               case 2:
-                       sprintf(buf, legend[n].msg, do_scroll ? "yes" : "no");
-                       break;
-               case 3:
-                       sprintf(buf, legend[n].msg, do_keypad ? "/ESC" : "");
-                       break;
-               }
-               getyx(stdscr, y, x);
-               addstr((COLS < (x + 3 + (int)strlen(buf))) ? "\n" : (n ? ", " : ""));
-               addstr(buf);
+       {
+           "^Q%s = exit", 3
        }
-       clrtoeol();
+    };
+    size_t n;
+    int y, x;
+    bool do_keypad = HaveKeypad(curp);
+    bool do_scroll = HaveScroll(curp);
+    char buf[BUFSIZ];
+
+    move(LINES - 4, 0);
+    for (n = 0; n < SIZEOF(legend); n++) {
+       switch (legend[n].code) {
+       default:
+           strcpy(buf, legend[n].msg);
+           break;
+       case 1:
+           sprintf(buf, legend[n].msg, do_keypad ? "yes" : "no");
+           break;
+       case 2:
+           sprintf(buf, legend[n].msg, do_scroll ? "yes" : "no");
+           break;
+       case 3:
+           sprintf(buf, legend[n].msg, do_keypad ? "/ESC" : "");
+           break;
+       }
+       getyx(stdscr, y, x);
+       addstr((COLS < (x + 3 + (int) strlen(buf))) ? "\n" : (n ? ", " : ""));
+       addstr(buf);
+    }
+    clrtoeol();
 }
 
-static void transient(FRAME *curp, NCURSES_CONST char *msg)
+static void
+transient(FRAME * curp, NCURSES_CONST char *msg)
 {
     newwin_legend(curp);
-    if (msg)
-    {
+    if (msg) {
        mvaddstr(LINES - 1, 0, msg);
        refresh();
        napms(1000);
     }
 
-    move(LINES-1, 0);
+    move(LINES - 1, 0);
     printw("%s characters are echoed, window should %sscroll.",
        HaveKeypad(curp) ? "Non-arrow" : "All other",
-       HaveScroll(curp) ? "" : "not " );
+       HaveScroll(curp) ? "" : "not ");
     clrtoeol();
 }
 
-static void newwin_report(FRAME *curp)
+static void
+newwin_report(FRAME * curp)
 /* report on the cursor's current position, then restore it */
 {
-       WINDOW *win = (curp != 0) ? curp->wind : stdscr;
-       int y, x;
+    WINDOW *win = (curp != 0) ? curp->wind : stdscr;
+    int y, x;
 
-       if (win != stdscr)
-               transient(curp, (char *)0);
-       getyx(win, y, x);
-       move(LINES - 1, COLS - 17);
-       printw("Y = %2d X = %2d", y, x);
-       if (win != stdscr)
-               refresh();
-       else
-               wmove(win, y, x);
+    if (win != stdscr)
+       transient(curp, (char *) 0);
+    getyx(win, y, x);
+    move(LINES - 1, COLS - 17);
+    printw("Y = %2d X = %2d", y, x);
+    if (win != stdscr)
+       refresh();
+    else
+       wmove(win, y, x);
 }
 
-static pair *selectcell(int uli, int ulj, int lri, int lrj)
+static pair *
+selectcell(int uli, int ulj, int lri, int lrj)
 /* arrows keys move cursor, return location at current on non-arrow key */
 {
-    static pair        res;                    /* result cell */
-    int                si = lri - uli + 1;     /* depth of the select area */
-    int                sj = lrj - ulj + 1;     /* width of the select area */
-    int                i = 0, j = 0;           /* offsets into the select area */
+    static pair res;           /* result cell */
+    int si = lri - uli + 1;    /* depth of the select area */
+    int sj = lrj - ulj + 1;    /* width of the select area */
+    int i = 0, j = 0;          /* offsets into the select area */
 
     res.y = uli;
     res.x = ulj;
-    for (;;)
-    {
+    for (;;) {
        move(uli + i, ulj + j);
-       newwin_report((FRAME *)0);
+       newwin_report((FRAME *) 0);
 
-       switch(Getchar())
-       {
-       case KEY_UP:    i += si - 1; break;
-       case KEY_DOWN:  i++; break;
-       case KEY_LEFT:  j += sj - 1; break;
-       case KEY_RIGHT: j++; break;
+       switch (Getchar()) {
+       case KEY_UP:
+           i += si - 1;
+           break;
+       case KEY_DOWN:
+           i++;
+           break;
+       case KEY_LEFT:
+           j += sj - 1;
+           break;
+       case KEY_RIGHT:
+           j++;
+           break;
        case QUIT:
-       case ESCAPE:    return((pair *)0);
+       case ESCAPE:
+           return ((pair *) 0);
 #ifdef NCURSES_MOUSE_VERSION
        case KEY_MOUSE:
            {
-               MEVENT  event;
+               MEVENT event;
 
                getmouse(&event);
                if (event.y > uli && event.x > ulj) {
-                       i = event.y - uli;
-                       j = event.x - ulj;
+                   i = event.y - uli;
+                   j = event.x - ulj;
                } else {
-                       beep();
-                       break;
+                   beep();
+                   break;
                }
            }
            /* FALLTHRU */
 #endif
-       default:        res.y = uli + i; res.x = ulj + j; return(&res);
+       default:
+           res.y = uli + i;
+           res.x = ulj + j;
+           return (&res);
        }
        i %= si;
        j %= sj;
     }
 }
 
-static void outerbox(pair ul, pair lr, bool onoff)
+static void
+outerbox(pair ul, pair lr, bool onoff)
 /* draw or erase a box *outside* the given pair of corners */
 {
-    mvaddch(ul.y-1, lr.x-1, onoff ? ACS_ULCORNER : ' ');
-    mvaddch(ul.y-1, lr.x+1, onoff ? ACS_URCORNER : ' ');
-    mvaddch(lr.y+1, lr.x+1, onoff ? ACS_LRCORNER : ' ');
-    mvaddch(lr.y+1, ul.x-1, onoff ? ACS_LLCORNER : ' ');
-    move(ul.y-1, ul.x);   hline(onoff ? ACS_HLINE : ' ', lr.x - ul.x + 1);
-    move(ul.y,   ul.x-1); vline(onoff ? ACS_VLINE : ' ', lr.y - ul.y + 1);
-    move(lr.y+1, ul.x);   hline(onoff ? ACS_HLINE : ' ', lr.x - ul.x + 1);
-    move(ul.y,   lr.x+1); vline(onoff ? ACS_VLINE : ' ', lr.y - ul.y + 1);
-}
-
-static WINDOW *getwindow(void)
+    mvaddch(ul.y - 1, lr.x - 1, onoff ? ACS_ULCORNER : ' ');
+    mvaddch(ul.y - 1, lr.x + 1, onoff ? ACS_URCORNER : ' ');
+    mvaddch(lr.y + 1, lr.x + 1, onoff ? ACS_LRCORNER : ' ');
+    mvaddch(lr.y + 1, ul.x - 1, onoff ? ACS_LLCORNER : ' ');
+    move(ul.y - 1, ul.x);
+    hline(onoff ? ACS_HLINE : ' ', lr.x - ul.x + 1);
+    move(ul.y, ul.x - 1);
+    vline(onoff ? ACS_VLINE : ' ', lr.y - ul.y + 1);
+    move(lr.y + 1, ul.x);
+    hline(onoff ? ACS_HLINE : ' ', lr.x - ul.x + 1);
+    move(ul.y, lr.x + 1);
+    vline(onoff ? ACS_VLINE : ' ', lr.y - ul.y + 1);
+}
+
+static WINDOW *
+getwindow(void)
 /* Ask user for a window definition */
 {
-    WINDOW     *rwindow;
-    pair       ul, lr, *tmp;
+    WINDOW *rwindow;
+    pair ul, lr, *tmp;
 
-    move(0, 0); clrtoeol();
+    move(0, 0);
+    clrtoeol();
     addstr("Use arrows to move cursor, anything else to mark corner 1");
     refresh();
-    if ((tmp = selectcell(2, 1, LINES-BOTLINES-2, COLS-2)) == (pair *)0)
-       return((WINDOW *)0);
+    if ((tmp = selectcell(2, 1, LINES - BOTLINES - 2, COLS - 2)) == (pair *) 0)
+       return ((WINDOW *) 0);
     memcpy(&ul, tmp, sizeof(pair));
-    mvaddch(ul.y-1, ul.x-1, ACS_ULCORNER);
-    move(0, 0); clrtoeol();
+    mvaddch(ul.y - 1, ul.x - 1, ACS_ULCORNER);
+    move(0, 0);
+    clrtoeol();
     addstr("Use arrows to move cursor, anything else to mark corner 2");
     refresh();
-    if ((tmp = selectcell(ul.y, ul.x, LINES-BOTLINES-2, COLS-2)) == (pair *)0)
-       return((WINDOW *)0);
+    if ((tmp = selectcell(ul.y, ul.x, LINES - BOTLINES - 2, COLS - 2)) ==
+       (pair *) 0)
+       return ((WINDOW *) 0);
     memcpy(&lr, tmp, sizeof(pair));
 
     rwindow = subwin(stdscr, lr.y - ul.y + 1, lr.x - ul.x + 1, ul.y, ul.x);
@@ -1229,78 +1325,78 @@ static WINDOW *getwindow(void)
 
     wrefresh(rwindow);
 
-    move(0, 0); clrtoeol();
-    return(rwindow);
+    move(0, 0);
+    clrtoeol();
+    return (rwindow);
 }
 
-static void newwin_move(FRAME *curp, int dy, int dx)
+static void
+newwin_move(FRAME * curp, int dy, int dx)
 {
-       WINDOW *win = (curp != 0) ? curp->wind : stdscr;
-       int cur_y, cur_x;
-       int max_y, max_x;
+    WINDOW *win = (curp != 0) ? curp->wind : stdscr;
+    int cur_y, cur_x;
+    int max_y, max_x;
 
-       getyx(win, cur_y, cur_x);
-       getmaxyx(win, max_y, max_x);
-       if ((cur_x += dx) < 0)
-               cur_x = 0;
-       else if (cur_x >= max_x)
-               cur_x = max_x - 1;
-       if ((cur_y += dy) < 0)
-               cur_y = 0;
-       else if (cur_y >= max_y)
-               cur_y = max_y - 1;
-       wmove(win, cur_y, cur_x);
+    getyx(win, cur_y, cur_x);
+    getmaxyx(win, max_y, max_x);
+    if ((cur_x += dx) < 0)
+       cur_x = 0;
+    else if (cur_x >= max_x)
+       cur_x = max_x - 1;
+    if ((cur_y += dy) < 0)
+       cur_y = 0;
+    else if (cur_y >= max_y)
+       cur_y = max_y - 1;
+    wmove(win, cur_y, cur_x);
 }
 
-static FRAME *delete_framed(FRAME *fp, bool showit)
+static FRAME *
+delete_framed(FRAME * fp, bool showit)
 {
-       FRAME *np;
+    FRAME *np;
 
-       fp->last->next = fp->next;
-       fp->next->last = fp->last;
+    fp->last->next = fp->next;
+    fp->next->last = fp->last;
 
-       if (showit) {
-               werase(fp->wind);
-               wrefresh(fp->wind);
-       }
-       delwin(fp->wind);
+    if (showit) {
+       werase(fp->wind);
+       wrefresh(fp->wind);
+    }
+    delwin(fp->wind);
 
-       np = (fp == fp->next) ? 0 : fp->next;
-       free(fp);
-       return np;
+    np = (fp == fp->next) ? 0 : fp->next;
+    free(fp);
+    return np;
 }
 
-static void acs_and_scroll(void)
+static void
+acs_and_scroll(void)
 /* Demonstrate windows */
 {
-    int        c, i;
+    int c, i;
     FILE *fp;
-    FRAME *current = (FRAME *)0, *neww;
+    FRAME *current = (FRAME *) 0, *neww;
     WINDOW *usescr = stdscr;
 
 #define DUMPFILE       "screendump"
 
 #ifdef NCURSES_MOUSE_VERSION
-    mousemask(BUTTON1_CLICKED, (mmask_t *)0);
+    mousemask(BUTTON1_CLICKED, (mmask_t *) 0);
 #endif
     c = CTRL('C');
     raw();
     do {
-       transient((FRAME *)0, (char *)0);
-       switch(c)
-       {
+       transient((FRAME *) 0, (char *) 0);
+       switch (c) {
        case CTRL('C'):
            neww = (FRAME *) calloc(1, sizeof(FRAME));
-           if ((neww->wind = getwindow()) == (WINDOW *)0)
+           if ((neww->wind = getwindow()) == (WINDOW *) 0)
                goto breakout;
 
-           if (current == 0)   /* First element,  */
-           {
-               neww->next = neww; /*   so point it at itself */
+           if (current == 0) { /* First element,  */
+               neww->next = neww;      /*   so point it at itself */
                neww->last = neww;
-           }
-           else
-           {
+           } else {
                neww->next = current->next;
                neww->last = current;
                neww->last->next = neww;
@@ -1316,27 +1412,27 @@ static void acs_and_scroll(void)
            current->do_scroll = HaveScroll(current);
            break;
 
-       case CTRL('N'):         /* go to next window */
+       case CTRL('N'): /* go to next window */
            if (current)
                current = current->next;
            break;
 
-       case CTRL('P'):         /* go to previous window */
+       case CTRL('P'): /* go to previous window */
            if (current)
                current = current->last;
            break;
 
-       case CTRL('F'):         /* scroll current window forward */
+       case CTRL('F'): /* scroll current window forward */
            if (current)
                wscrl(current->wind, 1);
            break;
 
-       case CTRL('B'):         /* scroll current window backwards */
+       case CTRL('B'): /* scroll current window backwards */
            if (current)
                wscrl(current->wind, -1);
            break;
 
-       case CTRL('K'):         /* toggle keypad mode for current */
+       case CTRL('K'): /* toggle keypad mode for current */
            if (current) {
                current->do_keypad = !current->do_keypad;
                keypad(current->wind, current->do_keypad);
@@ -1350,13 +1446,12 @@ static void acs_and_scroll(void)
            }
            break;
 
-       case CTRL('W'):         /* save and delete window */
+       case CTRL('W'): /* save and delete window */
            if (current == current->next)
                break;
-           if ((fp = fopen(DUMPFILE, "w")) == (FILE *)0)
+           if ((fp = fopen(DUMPFILE, "w")) == (FILE *) 0)
                transient(current, "Can't open screen dump file");
-           else
-           {
+           else {
                (void) putwin(current->wind, fp);
                (void) fclose(fp);
 
@@ -1364,11 +1459,10 @@ static void acs_and_scroll(void)
            }
            break;
 
-       case CTRL('R'):         /* restore window */
-           if ((fp = fopen(DUMPFILE, "r")) == (FILE *)0)
+       case CTRL('R'): /* restore window */
+           if ((fp = fopen(DUMPFILE, "r")) == (FILE *) 0)
                transient(current, "Can't open screen dump file");
-           else
-           {
+           else {
                neww = (FRAME *) calloc(1, sizeof(FRAME));
 
                neww->next = current->next;
@@ -1383,22 +1477,21 @@ static void acs_and_scroll(void)
            }
            break;
 
-#ifdef NCURSES_VERSION
-       case CTRL('X'):         /* resize window */
-           if (current)
-           {
+#ifdef HAVE_WRESIZE
+       case CTRL('X'): /* resize window */
+           if (current) {
                pair *tmp, ul, lr;
                int mx, my;
 
-               move(0, 0); clrtoeol();
+               move(0, 0);
+               clrtoeol();
                addstr("Use arrows to move cursor, anything else to mark new corner");
                refresh();
 
                getbegyx(current->wind, ul.y, ul.x);
 
-               tmp = selectcell(ul.y, ul.x, LINES-BOTLINES-2, COLS-2);
-               if (tmp == (pair *)0)
-               {
+               tmp = selectcell(ul.y, ul.x, LINES - BOTLINES - 2, COLS - 2);
+               if (tmp == (pair *) 0) {
                    beep();
                    break;
                }
@@ -1411,23 +1504,21 @@ static void acs_and_scroll(void)
 
                /* strictly cosmetic hack for the test */
                getmaxyx(current->wind, my, mx);
-               if (my > tmp->y - ul.y)
-               {
-                 getyx(current->wind, lr.y, lr.x);
-                 wmove(current->wind, tmp->y - ul.y + 1, 0);
-                 wclrtobot(current->wind);
-                 wmove(current->wind, lr.y, lr.x);
+               if (my > tmp->y - ul.y) {
+                   getyx(current->wind, lr.y, lr.x);
+                   wmove(current->wind, tmp->y - ul.y + 1, 0);
+                   wclrtobot(current->wind);
+                   wmove(current->wind, lr.y, lr.x);
                }
                if (mx > tmp->x - ul.x)
-                 for (i = 0; i < my; i++)
-                 {
-                   wmove(current->wind, i, tmp->x - ul.x + 1);
-                   wclrtoeol(current->wind);
-                 }
+                   for (i = 0; i < my; i++) {
+                       wmove(current->wind, i, tmp->x - ul.x + 1);
+                       wclrtoeol(current->wind);
+                   }
                wnoutrefresh(current->wind);
 
                memcpy(&lr, tmp, sizeof(pair));
-               (void) wresize(current->wind, lr.y-ul.y+0, lr.x-ul.x+0);
+               (void) wresize(current->wind, lr.y - ul.y + 0, lr.x - ul.x + 0);
 
                getbegyx(current->wind, ul.y, ul.x);
                getmaxyx(current->wind, lr.y, lr.x);
@@ -1437,11 +1528,12 @@ static void acs_and_scroll(void)
                wnoutrefresh(stdscr);
 
                wnoutrefresh(current->wind);
-               move(0, 0); clrtoeol();
+               move(0, 0);
+               clrtoeol();
                doupdate();
            }
            break;
-#endif /* NCURSES_VERSION */
+#endif /* HAVE_WRESIZE */
 
        case KEY_F(10): /* undocumented --- use this to test area clears */
            selectcell(0, 0, LINES - 1, COLS - 1);
@@ -1450,16 +1542,16 @@ static void acs_and_scroll(void)
            break;
 
        case KEY_UP:
-           newwin_move(current, -1,  0);
+           newwin_move(current, -1, 0);
            break;
        case KEY_DOWN:
-           newwin_move(current,  1,  0);
+           newwin_move(current, 1, 0);
            break;
        case KEY_LEFT:
-           newwin_move(current,  0, -1);
+           newwin_move(current, 0, -1);
            break;
        case KEY_RIGHT:
-           newwin_move(current,  0,  1);
+           newwin_move(current, 0, 1);
            break;
 
        case KEY_BACKSPACE:
@@ -1469,9 +1561,9 @@ static void acs_and_scroll(void)
                int y, x;
                getyx(current->wind, y, x);
                if (--x < 0) {
-                       if (--y < 0)
-                               break;
-                       x = getmaxx(current->wind) - 1;
+                   if (--y < 0)
+                       break;
+                   x = getmaxx(current->wind) - 1;
                }
                mvwdelch(current->wind, y, x);
            }
@@ -1483,7 +1575,7 @@ static void acs_and_scroll(void)
 
        default:
            if (current)
-               waddch(current->wind, (chtype)c);
+               waddch(current->wind, (chtype) c);
            else
                beep();
            break;
@@ -1493,16 +1585,16 @@ static void acs_and_scroll(void)
        wrefresh(usescr);
     } while
        ((c = wGetchar(usescr)) != QUIT
-        && !((c == ESCAPE) && (usescr->_use_keypad))
-        && (c != ERR));
+       && !((c == ESCAPE) && (usescr->_use_keypad))
+       && (c != ERR));
 
- breakout:
 breakout:
     while (current != 0)
-       current = delete_framed(current, FALSE);
+       current = delete_framed(current, FALSE);
 
     scrollok(stdscr, TRUE);    /* reset to driver's default */
 #ifdef NCURSES_MOUSE_VERSION
-    mousemask(0, (mmask_t *)0);
+    mousemask(0, (mmask_t *) 0);
 #endif
     noraw();
     erase();
@@ -1520,12 +1612,12 @@ static unsigned long nap_msec = 1;
 
 static NCURSES_CONST char *mod[] =
 {
-       "test ",
-       "TEST ",
-       "(**) ",
-       "*()* ",
-       "<--> ",
-       "LAST "
+    "test ",
+    "TEST ",
+    "(**) ",
+    "*()* ",
+    "<--> ",
+    "LAST "
 };
 
 /*+-------------------------------------------------------------------------
@@ -1535,19 +1627,19 @@ static void
 wait_a_while(unsigned long msec GCC_UNUSED)
 {
 #if HAVE_NAPMS
-       if(nap_msec == 1)
-               wGetchar(stdscr);
-       else
-               napms(nap_msec);
+    if (nap_msec == 1)
+       wGetchar(stdscr);
+    else
+       napms(nap_msec);
 #else
-       if(nap_msec == 1)
-               wGetchar(stdscr);
-       else if(msec > 1000L)
-               sleep((int)msec/1000L);
-       else
-               sleep(1);
+    if (nap_msec == 1)
+       wGetchar(stdscr);
+    else if (msec > 1000L)
+       sleep((int) msec / 1000L);
+    else
+       sleep(1);
 #endif
-}      /* end of wait_a_while */
+}                              /* end of wait_a_while */
 
 /*+-------------------------------------------------------------------------
        saywhat(text)
@@ -1555,10 +1647,10 @@ wait_a_while(unsigned long msec GCC_UNUSED)
 static void
 saywhat(NCURSES_CONST char *text)
 {
-       wmove(stdscr,LINES - 1,0);
-       wclrtoeol(stdscr);
-       waddstr(stdscr, text);
-}      /* end of saywhat */
+    wmove(stdscr, LINES - 1, 0);
+    wclrtoeol(stdscr);
+    waddstr(stdscr, text);
+}                              /* end of saywhat */
 
 /*+-------------------------------------------------------------------------
        mkpanel(rows,cols,tly,tlx) - alloc a win and panel and associate them
@@ -1566,34 +1658,34 @@ saywhat(NCURSES_CONST char *text)
 static PANEL *
 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 | ' ');
-               }
+    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 */
+    }
+    return pan;
+}                              /* end of mkpanel */
 
 /*+-------------------------------------------------------------------------
        rmpanel(pan)
 --------------------------------------------------------------------------*/
 static void
-rmpanel(PANEL *pan)
+rmpanel(PANEL * pan)
 {
-WINDOW *win = panel_window(pan);
-       del_panel(pan);
-       delwin(win);
-}      /* end of rmpanel */
+    WINDOW *win = panel_window(pan);
+    del_panel(pan);
+    delwin(win);
+}                              /* end of rmpanel */
 
 /*+-------------------------------------------------------------------------
        pflush()
@@ -1601,227 +1693,243 @@ WINDOW *win = panel_window(pan);
 static void
 pflush(void)
 {
-       update_panels();
-       doupdate();
-}      /* end of pflush */
+    update_panels();
+    doupdate();
+}                              /* end of pflush */
 
 /*+-------------------------------------------------------------------------
        fill_panel(win)
 --------------------------------------------------------------------------*/
 static void
-fill_panel(PANEL *pan)
+fill_panel(PANEL * pan)
 {
-WINDOW *win = panel_window(pan);
-int num = ((const char *)panel_userptr(pan))[1];
-int y,x;
+    WINDOW *win = panel_window(pan);
+    int num = ((const char *) panel_userptr(pan))[1];
+    int y, x;
 
-       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++)
-               {
-                       wmove(win,y,x);
-                       waddch(win,num);
-               }
+    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++) {
+           wmove(win, y, x);
+           waddch(win, num);
        }
-}      /* end of fill_panel */
+    }
+}                              /* end of fill_panel */
 
-static void demo_panels(void)
+static void
+demo_panels(void)
 {
-int itmp;
-register int y,x;
+    int itmp;
+    register int y, x;
 
-       refresh();
+    refresh();
 
-       for(y = 0; y < LINES - 1; y++)
-       {
-               for(x = 0; x < COLS; x++)
-                       wprintw(stdscr,"%d",(y + x) % 10);
+    for (y = 0; y < LINES - 1; y++) {
+       for (x = 0; x < COLS; x++)
+           wprintw(stdscr, "%d", (y + x) % 10);
+    }
+    for (y = 0; y < 5; y++) {
+       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(COLOR_GREEN,
+           LINES / 2 + 1,
+           COLS / 7,
+           LINES / 4,
+           COLS / 10);
+       set_panel_userptr(p2, "p2");
+
+       p3 = mkpanel(COLOR_YELLOW,
+           LINES / 4,
+           COLS / 10,
+           LINES / 2,
+           COLS / 9);
+       set_panel_userptr(p3, "p3");
+
+       p4 = mkpanel(COLOR_BLUE,
+           LINES / 2 - 2,
+           COLS / 8,
+           LINES / 2 - 2,
+           COLS / 3);
+       set_panel_userptr(p4, "p4");
+
+       p5 = mkpanel(COLOR_MAGENTA,
+           LINES / 2 - 2,
+           COLS / 8,
+           LINES / 2,
+           COLS / 2 - 2);
+       set_panel_userptr(p5, "p5");
+
+       fill_panel(p1);
+       fill_panel(p2);
+       fill_panel(p3);
+       fill_panel(p4);
+       fill_panel(p5);
+       hide_panel(p4);
+       hide_panel(p5);
+       pflush();
+       saywhat("press any key to continue");
+       wait_a_while(nap_msec);
+
+       saywhat("h3 s1 s2 s4 s5; press any key to continue");
+       move_panel(p1, 0, 0);
+       hide_panel(p3);
+       show_panel(p1);
+       show_panel(p2);
+       show_panel(p4);
+       show_panel(p5);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("s1; press any key to continue");
+       show_panel(p1);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("s2; press any key to continue");
+       show_panel(p2);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("m2; press any key to continue");
+       move_panel(p2, LINES / 3 + 1, COLS / 8);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("s3;");
+       show_panel(p3);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("m3; press any key to continue");
+       move_panel(p3, LINES / 4 + 1, COLS / 15);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("b3; press any key to continue");
+       bottom_panel(p3);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("s4; press any key to continue");
+       show_panel(p4);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("s5; press any key to continue");
+       show_panel(p5);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("t3; press any key to continue");
+       top_panel(p3);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("t1; press any key to continue");
+       top_panel(p1);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("t2; press any key to continue");
+       top_panel(p2);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("t3; press any key to continue");
+       top_panel(p3);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("t4; press any key to continue");
+       top_panel(p4);
+       pflush();
+       wait_a_while(nap_msec);
+
+       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]);
+           move_panel(p4, LINES / 6, itmp * (COLS / 8));
+           wmove(w5, LINES / 6, 1);
+           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]);
+           move_panel(p5, LINES / 3 - 1, (itmp * 10) + 6);
+           wmove(w5, LINES / 8, 1);
+           waddstr(w5, mod[itmp]);
+           pflush();
+           wait_a_while(nap_msec);
        }
-       for(y = 0; y < 5; y++)
-       {
-               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(COLOR_GREEN, LINES/2 + 1, COLS/7, LINES/4, COLS/10);
-               set_panel_userptr(p2,"p2");
-
-               p3 = mkpanel(COLOR_YELLOW, LINES/4, COLS/10, LINES/2, COLS/9);
-               set_panel_userptr(p3,"p3");
-
-               p4 = mkpanel(COLOR_BLUE, LINES/2 - 2, COLS/8, LINES/2 - 2, COLS/3);
-               set_panel_userptr(p4,"p4");
-
-               p5 = mkpanel(COLOR_MAGENTA, LINES/2 - 2, COLS/8, LINES/2, COLS/2 - 2);
-               set_panel_userptr(p5,"p5");
-
-               fill_panel(p1);
-               fill_panel(p2);
-               fill_panel(p3);
-               fill_panel(p4);
-               fill_panel(p5);
-               hide_panel(p4);
-               hide_panel(p5);
-               pflush();
-               saywhat("press any key to continue");
-               wait_a_while(nap_msec);
-
-               saywhat("h3 s1 s2 s4 s5; press any key to continue");
-               move_panel(p1,0,0);
-               hide_panel(p3);
-               show_panel(p1);
-               show_panel(p2);
-               show_panel(p4);
-               show_panel(p5);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("s1; press any key to continue");
-               show_panel(p1);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("s2; press any key to continue");
-               show_panel(p2);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("m2; press any key to continue");
-               move_panel(p2, LINES/3 + 1, COLS / 8);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("s3;");
-               show_panel(p3);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("m3; press any key to continue");
-               move_panel(p3, LINES/4 + 1, COLS / 15);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("b3; press any key to continue");
-               bottom_panel(p3);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("s4; press any key to continue");
-               show_panel(p4);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("s5; press any key to continue");
-               show_panel(p5);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("t3; press any key to continue");
-               top_panel(p3);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("t1; press any key to continue");
-               top_panel(p1);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("t2; press any key to continue");
-               top_panel(p2);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("t3; press any key to continue");
-               top_panel(p3);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("t4; press any key to continue");
-               top_panel(p4);
-               pflush();
-               wait_a_while(nap_msec);
-
-               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]);
-                       move_panel(p4, LINES/6, itmp*(COLS/8));
-                       wmove(w5, LINES/6, 1);
-                       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]);
-                       move_panel(p5, LINES/3 - 1,(itmp*10) + 6);
-                       wmove(w5, LINES/8, 1);
-                       waddstr(w5,mod[itmp]);
-                       pflush();
-                       wait_a_while(nap_msec);
-               }
 
-               saywhat("m4; press any key to continue");
-               move_panel(p4, LINES/6, itmp*(COLS/8));
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("t5; press any key to continue");
-               top_panel(p5);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("t2; press any key to continue");
-               top_panel(p2);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("t1; press any key to continue");
-               top_panel(p1);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("d2; press any key to continue");
-               rmpanel(p2);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("h3; press any key to continue");
-               hide_panel(p3);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("d1; press any key to continue");
-               rmpanel(p1);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("d4; press any key to continue");
-               rmpanel(p4);
-               pflush();
-               wait_a_while(nap_msec);
-
-               saywhat("d5; press any key to continue");
-               rmpanel(p5);
-               pflush();
-               wait_a_while(nap_msec);
-               if(nap_msec == 1)
-                       break;
-               nap_msec = 100L;
-       }
+       saywhat("m4; press any key to continue");
+       move_panel(p4, LINES / 6, itmp * (COLS / 8));
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("t5; press any key to continue");
+       top_panel(p5);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("t2; press any key to continue");
+       top_panel(p2);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("t1; press any key to continue");
+       top_panel(p1);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("d2; press any key to continue");
+       rmpanel(p2);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("h3; press any key to continue");
+       hide_panel(p3);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("d1; press any key to continue");
+       rmpanel(p1);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("d4; press any key to continue");
+       rmpanel(p4);
+       pflush();
+       wait_a_while(nap_msec);
+
+       saywhat("d5; press any key to continue");
+       rmpanel(p5);
+       pflush();
+       wait_a_while(nap_msec);
+       if (nap_msec == 1)
+           break;
+       nap_msec = 100L;
+    }
 
     erase();
     endwin();
@@ -1837,40 +1945,45 @@ register int y,x;
 
 static bool show_panner_legend = TRUE;
 
-static int panner_legend(int line)
-{
-       static const char *const legend[] = {
-               "Use arrow keys (or U,D,L,R) to pan, q to quit (?,t,s flags)",
-               "Use ! to shell-out.  Toggle legend:?, timer:t, scroll mark:s.",
-               "Use +,- (or j,k) to grow/shrink the panner vertically.",
-               "Use <,> (or h,l) to grow/shrink the panner horizontally."
-       };
-       int n = (SIZEOF(legend) - (LINES - line));
-       if (line < LINES && (n >= 0)) {
-               move(line, 0);
-               if (show_panner_legend)
-                       printw("%s", legend[n]);
-               clrtoeol();
-               return show_panner_legend;
-       }
-       return FALSE;
+static int
+panner_legend(int line)
+{
+    static const char *const legend[] =
+    {
+       "Use arrow keys (or U,D,L,R) to pan, q to quit (?,t,s flags)",
+       "Use ! to shell-out.  Toggle legend:?, timer:t, scroll mark:s.",
+       "Use +,- (or j,k) to grow/shrink the panner vertically.",
+       "Use <,> (or h,l) to grow/shrink the panner horizontally."
+    };
+    int n = (SIZEOF(legend) - (LINES - line));
+    if (line < LINES && (n >= 0)) {
+       move(line, 0);
+       if (show_panner_legend)
+           printw("%s", legend[n]);
+       clrtoeol();
+       return show_panner_legend;
+    }
+    return FALSE;
 }
 
-static void panner_h_cleanup(int from_y, int from_x, int to_x)
+static void
+panner_h_cleanup(int from_y, int from_x, int to_x)
 {
-       if (!panner_legend(from_y))
-               do_h_line(from_y, from_x, ' ', to_x);
+    if (!panner_legend(from_y))
+       do_h_line(from_y, from_x, ' ', to_x);
 }
 
-static void panner_v_cleanup(int from_y, int from_x, int to_y)
+static void
+panner_v_cleanup(int from_y, int from_x, int to_y)
 {
-       if (!panner_legend(from_y))
-               do_v_line(from_y, from_x, ' ', to_y);
+    if (!panner_legend(from_y))
+       do_v_line(from_y, from_x, ' ', to_y);
 }
 
-static void panner(WINDOW *pad,
-                  int top_x, int top_y, int porty, int portx,
-                  int (*pgetc)(WINDOW *))
+static void
+panner(WINDOW *pad,
+    int top_x, int top_y, int porty, int portx,
+    int (*pgetc) (WINDOW *))
 {
 #if HAVE_GETTIMEOFDAY
     struct timeval before, after;
@@ -1892,13 +2005,16 @@ static void panner(WINDOW *pad,
         * the port size of the pad to accommodate this.  Ncurses automatically
         * resizes all of the normal windows to fit on the new screen.
         */
-       if (top_x > COLS)       top_x = COLS;
-       if (portx > COLS)       portx = COLS;
-       if (top_y > LINES)      top_y = LINES;
-       if (porty > LINES)      porty = LINES;
+       if (top_x > COLS)
+           top_x = COLS;
+       if (portx > COLS)
+           portx = COLS;
+       if (top_y > LINES)
+           top_y = LINES;
+       if (porty > LINES)
+           porty = LINES;
 #endif
-       switch(c)
-       {
+       switch (c) {
        case KEY_REFRESH:
            erase();
 
@@ -1915,7 +2031,7 @@ static void panner(WINDOW *pad,
        case 't':
            timing = !timing;
            if (!timing)
-               panner_legend(LINES-1);
+               panner_legend(LINES - 1);
            break;
 #endif
        case 's':
@@ -1925,41 +2041,37 @@ static void panner(WINDOW *pad,
            /* Move the top-left corner of the pad, keeping the bottom-right
             * corner fixed.
             */
-       case 'h':       /* increase-columns: move left edge to left */
+       case 'h':               /* increase-columns: move left edge to left */
            if (top_x <= 0)
                beep();
-           else
-           {
+           else {
                panner_v_cleanup(top_y, top_x, porty);
                top_x--;
            }
            break;
 
-       case 'j':       /* decrease-lines: move top-edge down */
+       case 'j':               /* decrease-lines: move top-edge down */
            if (top_y >= porty)
                beep();
-           else
-           {
+           else {
                panner_h_cleanup(top_y - 1, top_x - (top_x > 0), portx);
                top_y++;
            }
            break;
 
-       case 'k':       /* increase-lines: move top-edge up */
+       case 'k':               /* increase-lines: move top-edge up */
            if (top_y <= 0)
                beep();
-           else
-           {
+           else {
                top_y--;
                panner_h_cleanup(top_y, top_x, portx);
            }
            break;
 
-       case 'l':       /* decrease-columns: move left-edge to right */
+       case 'l':               /* decrease-columns: move left-edge to right */
            if (top_x >= portx)
                beep();
-           else
-           {
+           else {
                panner_v_cleanup(top_y - (top_y > 0), top_x - 1, porty);
                top_x++;
            }
@@ -1968,47 +2080,43 @@ static void panner(WINDOW *pad,
            /* Move the bottom-right corner of the pad, keeping the top-left
             * corner fixed.
             */
-       case KEY_IC:    /* increase-columns: move right-edge to right */
+       case KEY_IC:            /* increase-columns: move right-edge to right */
            if (portx >= pxmax || portx >= COLS)
                beep();
-           else
-           {
+           else {
                panner_v_cleanup(top_y - (top_y > 0), portx - 1, porty);
                ++portx;
            }
            break;
 
-       case KEY_IL:    /* increase-lines: move bottom-edge down */
+       case KEY_IL:            /* increase-lines: move bottom-edge down */
            if (porty >= pymax || porty >= LINES)
                beep();
-           else
-           {
+           else {
                panner_h_cleanup(porty - 1, top_x - (top_x > 0), portx);
                ++porty;
            }
            break;
 
-       case KEY_DC:    /* decrease-columns: move bottom edge up */
+       case KEY_DC:            /* decrease-columns: move bottom edge up */
            if (portx <= top_x)
                beep();
-           else
-           {
+           else {
                portx--;
                panner_v_cleanup(top_y - (top_y > 0), portx, porty);
            }
            break;
 
-       case KEY_DL:    /* decrease-lines */
+       case KEY_DL:            /* decrease-lines */
            if (porty <= top_y)
                beep();
-           else
-           {
+           else {
                porty--;
                panner_h_cleanup(porty, top_x - (top_x > 0), portx);
            }
            break;
 
-       case KEY_LEFT:  /* pan leftwards */
+       case KEY_LEFT:          /* pan leftwards */
            if (basex > 0)
                basex--;
            else
@@ -2022,20 +2130,34 @@ static void panner(WINDOW *pad,
                beep();
            break;
 
-       case KEY_UP:    /* pan upwards */
+       case KEY_UP:            /* pan upwards */
            if (basey > 0)
                basey--;
            else
                beep();
            break;
 
-       case KEY_DOWN:  /* pan downwards */
+       case KEY_DOWN:          /* pan downwards */
            if (basey + porty - (pxmax > portx) < pymax)
                basey++;
            else
                beep();
            break;
 
+       case 'H':
+       case KEY_HOME:
+       case KEY_FIND:
+           basey = 0;
+           break;
+
+       case 'E':
+       case KEY_END:
+       case KEY_SELECT:
+           basey = pymax - porty;
+           if (basey < 0)
+               basey = 0;
+           break;
+
        default:
            beep();
            break;
@@ -2046,11 +2168,11 @@ static void panner(WINDOW *pad,
        do_h_line(top_y - 1, top_x, ACS_HLINE, portx);
 
        if (scrollers && (pxmax > portx - 1)) {
-           int length  = (portx - top_x - 1);
+           int length = (portx - top_x - 1);
            float ratio = ((float) length) / ((float) pxmax);
 
-           lowend  = (int)(top_x + (basex * ratio));
-           highend = (int)(top_x + ((basex + length) * ratio));
+           lowend = (int) (top_x + (basex * ratio));
+           highend = (int) (top_x + ((basex + length) * ratio));
 
            do_h_line(porty - 1, top_x, ACS_HLINE, lowend);
            if (highend < portx) {
@@ -2059,24 +2181,24 @@ static void panner(WINDOW *pad,
                attroff(A_REVERSE);
                do_h_line(porty - 1, highend + 1, ACS_HLINE, portx);
            }
-        } else
+       } else
            do_h_line(porty - 1, top_x, ACS_HLINE, portx);
 
        if (scrollers && (pymax > porty - 1)) {
-           int length  = (porty - top_y - 1);
+           int length = (porty - top_y - 1);
            float ratio = ((float) length) / ((float) pymax);
 
-           lowend  = (int)(top_y + (basey * ratio));
-           highend = (int)(top_y + ((basey + length) * ratio));
+           lowend = (int) (top_y + (basey * ratio));
+           highend = (int) (top_y + ((basey + length) * ratio));
 
            do_v_line(top_y, portx - 1, ACS_VLINE, lowend);
-               if (highend < porty) {
+           if (highend < porty) {
                attron(A_REVERSE);
                do_v_line(lowend, portx - 1, ' ', highend + 1);
                attroff(A_REVERSE);
                do_v_line(highend + 1, portx - 1, ACS_VLINE, porty);
            }
-        } else
+       } else
            do_v_line(top_y, portx - 1, ACS_VLINE, porty);
 
        mvaddch(top_y - 1, portx - 1, ACS_URCORNER);
@@ -2089,21 +2211,21 @@ static void panner(WINDOW *pad,
        wnoutrefresh(stdscr);
 
        pnoutrefresh(pad,
-                basey, basex,
-                top_y, top_x,
-                porty - (pxmax > portx) - 1,
-                portx - (pymax > porty) - 1);
+           basey, basex,
+           top_y, top_x,
+           porty - (pxmax > portx) - 1,
+           portx - (pymax > porty) - 1);
 
        doupdate();
 #if HAVE_GETTIMEOFDAY
        if (timing) {
-               double elapsed;
-               gettimeofday(&after, 0);
-               elapsed = (after.tv_sec  + after.tv_usec  / 1.0e6)
-                       - (before.tv_sec + before.tv_usec / 1.0e6);
-               move(LINES-1, COLS-20);
-               printw("Secs: %2.03f", elapsed);
-               refresh();
+           double elapsed;
+           gettimeofday(&after, 0);
+           elapsed = (after.tv_sec + after.tv_usec / 1.0e6)
+               - (before.tv_sec + before.tv_usec / 1.0e6);
+           move(LINES - 1, COLS - 20);
+           printw("Secs: %2.03f", elapsed);
+           refresh();
        }
 #endif
 
@@ -2114,47 +2236,69 @@ static void panner(WINDOW *pad,
 }
 
 static
-int padgetch(WINDOW *win)
+int
+padgetch(WINDOW *win)
 {
-    int        c;
+    int c;
 
-    switch(c = wGetchar(win))
-    {
-    case '!': ShellOut(FALSE); return KEY_REFRESH;
-    case CTRL('r'): endwin(); refresh(); return KEY_REFRESH;
-    case CTRL('l'): return KEY_REFRESH;
-    case 'U': return(KEY_UP);
-    case 'D': return(KEY_DOWN);
-    case 'R': return(KEY_RIGHT);
-    case 'L': return(KEY_LEFT);
-    case '+': return(KEY_IL);
-    case '-': return(KEY_DL);
-    case '>': return(KEY_IC);
-    case '<': return(KEY_DC);
-    case ERR: /* FALLTHRU */
-    case 'q': return(KEY_EXIT);
-    default: return(c);
+    switch (c = wGetchar(win)) {
+    case '!':
+       ShellOut(FALSE);
+       return KEY_REFRESH;
+    case CTRL('r'):
+       endwin();
+       refresh();
+       return KEY_REFRESH;
+    case CTRL('l'):
+       return KEY_REFRESH;
+    case 'U':
+       return (KEY_UP);
+    case 'D':
+       return (KEY_DOWN);
+    case 'R':
+       return (KEY_RIGHT);
+    case 'L':
+       return (KEY_LEFT);
+    case '+':
+       return (KEY_IL);
+    case '-':
+       return (KEY_DL);
+    case '>':
+       return (KEY_IC);
+    case '<':
+       return (KEY_DC);
+    case ERR:                  /* FALLTHRU */
+    case 'q':
+       return (KEY_EXIT);
+    default:
+       return (c);
     }
 }
 
-static void demo_pad(void)
+#define PAD_HIGH 200
+#define PAD_WIDE 200
+
+static void
+demo_pad(void)
 /* Demonstrate pads. */
 {
     int i, j;
     unsigned gridcount = 0;
-    WINDOW *panpad = newpad(200, 200);
+    WINDOW *panpad = newpad(PAD_HIGH, PAD_WIDE);
 
-    for (i = 0; i < 200; i++)
-    {
-       for (j = 0; j < 200; j++)
-           if (i % GRIDSIZE == 0 && j % GRIDSIZE == 0)
-           {
+    if (panpad == 0) {
+       Cannot("cannot create requested pad");
+       return;
+    }
+
+    for (i = 0; i < PAD_HIGH; i++) {
+       for (j = 0; j < PAD_WIDE; j++)
+           if (i % GRIDSIZE == 0 && j % GRIDSIZE == 0) {
                if (i == 0 || j == 0)
                    waddch(panpad, '+');
                else
-                   waddch(panpad, (chtype)('A' + (gridcount++ % 26)));
-           }
-           else if (i % GRIDSIZE == 0)
+                   waddch(panpad, (chtype) ('A' + (gridcount++ % 26)));
+           } else if (i % GRIDSIZE == 0)
                waddch(panpad, '-');
            else if (j % GRIDSIZE == 0)
                waddch(panpad, '|');
@@ -2172,7 +2316,7 @@ static void demo_pad(void)
      * We'll still be able to widen it during a test, since that's required
      * for testing boundaries.
      */
-    panner(panpad, 2, 2, LINES - 5, COLS-15, padgetch);
+    panner(panpad, 2, 2, LINES - 5, COLS - 15, padgetch);
 
     delwin(panpad);
     endwin();
@@ -2186,7 +2330,8 @@ static void demo_pad(void)
  *
  ****************************************************************************/
 
-static void Continue (WINDOW *win)
+static void
+Continue(WINDOW *win)
 {
     noecho();
     wmove(win, 10, 1);
@@ -2195,32 +2340,29 @@ static void Continue (WINDOW *win)
     wGetchar(win);
 }
 
-static void flushinp_test(WINDOW *win)
+static void
+flushinp_test(WINDOW *win)
 /* Input test, adapted from John Burnell's PDCurses tester */
 {
     int w, h, bx, by, sw, sh, i;
 
     WINDOW *subWin;
-    wclear (win);
+    wclear(win);
 
-    getmaxyx(win, h,  w);
+    getmaxyx(win, h, w);
     getbegyx(win, by, bx);
     sw = w / 3;
     sh = h / 3;
-    if((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2)) == 0)
-        return;
+    if ((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2)) == 0)
+       return;
 
 #ifdef A_COLOR
-    if (has_colors())
-    {
-       init_pair(2,COLOR_CYAN,COLOR_BLUE);
-       wattrset(subWin, COLOR_PAIR(2) | A_BOLD);
+    if (has_colors()) {
+       init_pair(2, COLOR_CYAN, COLOR_BLUE);
+       wbkgd(subWin, COLOR_PAIR(2) | ' ');
     }
-    else
-       wattrset(subWin, A_BOLD);
-#else
-    wattrset(subWin, A_BOLD);
 #endif
+    wattrset(subWin, A_BOLD);
     box(subWin, ACS_VLINE, ACS_HLINE);
     mvwaddstr(subWin, 2, 1, "This is a subwindow");
     wrefresh(win);
@@ -2237,29 +2379,28 @@ static void flushinp_test(WINDOW *win)
 
     mvwaddstr(win, 2, 1, "Type random keys for 5 seconds.");
     mvwaddstr(win, 3, 1,
-      "These should be discarded (not echoed) after the subwindow goes away.");
+       "These should be discarded (not echoed) after the subwindow goes away.");
     wrefresh(win);
 
-    for (i = 0; i < 5; i++)
-    {
-       mvwprintw (subWin, 1, 1, "Time = %d", i);
+    for (i = 0; i < 5; i++) {
+       mvwprintw(subWin, 1, 1, "Time = %d", i);
        wrefresh(subWin);
        napms(1000);
        flushinp();
     }
 
-    delwin (subWin);
+    delwin(subWin);
     werase(win);
     flash();
     wrefresh(win);
     napms(1000);
 
     mvwaddstr(win, 2, 1,
-             "If you were still typing when the window timer expired,");
+       "If you were still typing when the window timer expired,");
     mvwaddstr(win, 3, 1,
-             "or else you typed nothing at all while it was running,");
+       "or else you typed nothing at all while it was running,");
     mvwaddstr(win, 4, 1,
-             "test was invalid.  You'll see garbage or nothing at all. ");
+       "test was invalid.  You'll see garbage or nothing at all. ");
     mvwaddstr(win, 6, 1, "Press a key");
     wmove(win, 9, 10);
     wrefresh(win);
@@ -2267,7 +2408,7 @@ static void flushinp_test(WINDOW *win)
     wGetchar(win);
     flushinp();
     mvwaddstr(win, 12, 0,
-             "If you see any key other than what you typed, flushinp() is broken.");
+       "If you see any key other than what you typed, flushinp() is broken.");
     Continue(win);
 
     wmove(win, 9, 10);
@@ -2276,7 +2417,7 @@ static void flushinp_test(WINDOW *win)
     wmove(win, 12, 0);
     clrtoeol();
     waddstr(win,
-           "What you typed should now have been deleted; if not, wdelch() failed.");
+       "What you typed should now have been deleted; if not, wdelch() failed.");
     Continue(win);
 
     cbreak();
@@ -2293,66 +2434,69 @@ static void flushinp_test(WINDOW *win)
 #define MENU_Y 8
 #define MENU_X 8
 
-static int menu_virtualize(int c)
+static int
+menu_virtualize(int c)
 {
     if (c == '\n' || c == KEY_EXIT)
-       return(MAX_COMMAND + 1);
+       return (MAX_COMMAND + 1);
     else if (c == 'u')
-       return(REQ_SCR_ULINE);
+       return (REQ_SCR_ULINE);
     else if (c == 'd')
-       return(REQ_SCR_DLINE);
+       return (REQ_SCR_DLINE);
     else if (c == 'b' || c == KEY_NPAGE)
-       return(REQ_SCR_UPAGE);
+       return (REQ_SCR_UPAGE);
     else if (c == 'f' || c == KEY_PPAGE)
-       return(REQ_SCR_DPAGE);
+       return (REQ_SCR_DPAGE);
     else if (c == 'n' || c == KEY_DOWN)
-       return(REQ_NEXT_ITEM);
+       return (REQ_NEXT_ITEM);
     else if (c == 'p' || c == KEY_UP)
-       return(REQ_PREV_ITEM);
+       return (REQ_PREV_ITEM);
     else if (c == ' ')
-       return(REQ_TOGGLE_ITEM);
+       return (REQ_TOGGLE_ITEM);
     else {
        if (c != KEY_MOUSE)
            beep();
-       return(c);
+       return (c);
     }
 }
 
 static const char *animals[] =
 {
     "Lions", "Tigers", "Bears", "(Oh my!)", "Newts", "Platypi", "Lemurs",
-    (char *)0
+    (char *) 0
 };
 
-static void menu_test(void)
+static void
+menu_test(void)
 {
-    MENU       *m;
-    ITEM       *items[SIZEOF(animals)];
-    ITEM       **ip = items;
-    const char **ap;
-    int                mrows, mcols, c;
-    WINDOW     *menuwin;
+    MENU *m;
+    ITEM *items[SIZEOF(animals)];
+    ITEM **ip = items;
+    const char **ap;
+    int mrows, mcols, c;
+    WINDOW *menuwin;
 
 #ifdef NCURSES_MOUSE_VERSION
-    mousemask(ALL_MOUSE_EVENTS, (mmask_t *)0);
+    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, "  'b' and 'f' scroll up/down (page), 'u' and 'd' (line).");
+    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++)
        *ip++ = new_item(*ap, "");
-    *ip = (ITEM *)0;
+    *ip = (ITEM *) 0;
 
     m = new_menu(items);
 
-    set_menu_format(m, (SIZEOF(animals)+1)/2, 1);
+    set_menu_format(m, (SIZEOF(animals) + 1) / 2, 1);
     scale_menu(m, &mrows, &mcols);
 
-    menuwin = newwin(mrows + 2, mcols +  2, MENU_Y, MENU_X);
+    menuwin = newwin(mrows + 2, mcols + 2, MENU_Y, MENU_X);
     set_menu_win(m, menuwin);
     keypad(menuwin, TRUE);
     box(menuwin, 0, 0);
@@ -2368,7 +2512,7 @@ static void menu_test(void)
     }
 
     (void) mvprintw(LINES - 2, 0,
-                    "You chose: %s\n", item_name(current_item(m)));
+       "You chose: %s\n", item_name(current_item(m)));
     (void) addstr("Press any key to continue...");
     wGetchar(stdscr);
 
@@ -2379,17 +2523,18 @@ static void menu_test(void)
     for (ip = items; *ip; ip++)
        free_item(*ip);
 #ifdef NCURSES_MOUSE_VERSION
-    mousemask(0, (mmask_t *)0);
+    mousemask(0, (mmask_t *) 0);
 #endif
 }
 
 #ifdef TRACE
 #define T_TBL(name) { #name, name }
 static struct {
-       const char *name;
-       int mask;
+    const char *name;
+    int mask;
 } t_tbl[] = {
-       T_TBL(TRACE_DISABLE),
+
+    T_TBL(TRACE_DISABLE),
        T_TBL(TRACE_TIMES),
        T_TBL(TRACE_TPUTS),
        T_TBL(TRACE_UPDATE),
@@ -2402,41 +2547,45 @@ static struct {
        T_TBL(TRACE_BITS),
        T_TBL(TRACE_ICALLS),
        T_TBL(TRACE_CCALLS),
+       T_TBL(TRACE_DATABASE),
        T_TBL(TRACE_MAXIMUM),
-       { (char *)0, 0 }
+    {
+       (char *) 0, 0
+    }
 };
 
-static char *tracetrace(int tlevel)
+static char *
+tracetrace(int tlevel)
 {
-    static char        *buf;
-    int                n;
+    static char *buf;
+    int n;
 
     if (buf == 0) {
        size_t need = 12;
        for (n = 0; t_tbl[n].name != 0; n++)
            need += strlen(t_tbl[n].name) + 2;
-       buf = (char *)malloc(need);
+       buf = (char *) malloc(need);
     }
     sprintf(buf, "0x%02x = {", tlevel);
     if (tlevel == 0) {
        sprintf(buf + strlen(buf), "%s, ", t_tbl[0].name);
     } else {
        for (n = 1; t_tbl[n].name != 0; n++)
-           if ((tlevel & t_tbl[n].mask) == t_tbl[n].mask)
-           {
+           if ((tlevel & t_tbl[n].mask) == t_tbl[n].mask) {
                strcat(buf, t_tbl[n].name);
                strcat(buf, ", ");
            }
     }
     if (buf[strlen(buf) - 2] == ',')
        buf[strlen(buf) - 2] = '\0';
-    return(strcat(buf,"}"));
+    return (strcat(buf, "}"));
 }
 
 /* fake a dynamically reconfigurable menu using the 0th entry to deselect
  * the others
  */
-static int run_trace_menu(MENU *m)
+static int
+run_trace_menu(MENU * m)
 {
     ITEM **items;
     ITEM *i, **p;
@@ -2451,14 +2600,14 @@ static int run_trace_menu(MENU *m)
            i = current_item(m);
            if (i == items[0]) {
                if (item_value(i)) {
-                   for (p = items+1; *p != 0; p++)
+                   for (p = items + 1; *p != 0; p++)
                        if (item_value(*p)) {
                            set_item_value(*p, FALSE);
                            changed = TRUE;
                        }
                }
            } else {
-               for (p = items+1; *p != 0; p++)
+               for (p = items + 1; *p != 0; p++)
                    if (item_value(*p)) {
                        set_item_value(items[0], FALSE);
                        changed = TRUE;
@@ -2471,15 +2620,16 @@ static int run_trace_menu(MENU *m)
     }
 }
 
-static void trace_set(void)
+static void
+trace_set(void)
 /* interactively set the trace level */
 {
-    MENU       *m;
-    ITEM       *items[SIZEOF(t_tbl)];
-    ITEM       **ip = items;
-    int                mrows, mcols, newtrace;
-    int                n;
-    WINDOW     *menuwin;
+    MENU *m;
+    ITEM *items[SIZEOF(t_tbl)];
+    ITEM **ip = items;
+    int mrows, mcols, newtrace;
+    int n;
+    WINDOW *menuwin;
 
     mvaddstr(0, 0, "Interactively set trace level:");
     mvaddstr(2, 0, "  Press space bar to toggle a selection.");
@@ -2491,7 +2641,7 @@ static void trace_set(void)
 
     for (n = 0; t_tbl[n].name != 0; n++)
        *ip++ = new_item(t_tbl[n].name, "");
-    *ip = (ITEM *)0;
+    *ip = (ITEM *) 0;
 
     m = new_menu(items);
 
@@ -2499,7 +2649,7 @@ static void trace_set(void)
     scale_menu(m, &mrows, &mcols);
 
     menu_opts_off(m, O_ONEVALUE);
-    menuwin = newwin(mrows + 2, mcols +  2, MENU_Y, MENU_X);
+    menuwin = newwin(mrows + 2, mcols + 2, MENU_Y, MENU_X);
     set_menu_win(m, menuwin);
     keypad(menuwin, TRUE);
     box(menuwin, 0, 0);
@@ -2527,7 +2677,7 @@ static void trace_set(void)
     _tracef("trace level interactively set to %s", tracetrace(_nc_tracing));
 
     (void) mvprintw(LINES - 2, 0,
-                    "Trace level is %s\n", tracetrace(_nc_tracing));
+       "Trace level is %s\n", tracetrace(_nc_tracing));
     (void) addstr("Press any key to continue...");
     wGetchar(stdscr);
 
@@ -2547,38 +2697,39 @@ static void trace_set(void)
  *
  ****************************************************************************/
 #if USE_LIBFORM
-static FIELD *make_label(int frow, int fcol, NCURSES_CONST char *label)
+static FIELD *
+make_label(int frow, int fcol, NCURSES_CONST char *label)
 {
-    FIELD      *f = new_field(1, strlen(label), frow, fcol, 0, 0);
+    FIELD *f = new_field(1, strlen(label), frow, fcol, 0, 0);
 
-    if (f)
-    {
+    if (f) {
        set_field_buffer(f, 0, label);
        set_field_opts(f, field_opts(f) & ~O_ACTIVE);
     }
-    return(f);
+    return (f);
 }
 
-static FIELD *make_field(int frow, int fcol, int rows, int cols, bool secure)
+static FIELD *
+make_field(int frow, int fcol, int rows, int cols, bool secure)
 {
-    FIELD      *f = new_field(rows, cols, frow, fcol, 0, secure ? 1 : 0);
+    FIELD *f = new_field(rows, cols, frow, fcol, 0, secure ? 1 : 0);
 
     if (f) {
        set_field_back(f, A_UNDERLINE);
-       set_field_userptr(f, (void *)0);
+       set_field_userptr(f, (void *) 0);
     }
-    return(f);
+    return (f);
 }
 
-static void display_form(FORM *f)
+static void
+display_form(FORM * f)
 {
-    WINDOW     *w;
+    WINDOW *w;
     int rows, cols;
 
     scale_form(f, &rows, &cols);
 
-    if ((w =newwin(rows+2, cols+4, 0, 0)) != (WINDOW *)0)
-    {
+    if ((w = newwin(rows + 2, cols + 4, 0, 0)) != (WINDOW *) 0) {
        set_form_win(f, w);
        set_form_sub(f, derwin(w, rows, cols, 1, 2));
        box(w, 0, 0);
@@ -2589,10 +2740,11 @@ static void display_form(FORM *f)
        wrefresh(w);
 }
 
-static void erase_form(FORM *f)
+static void
+erase_form(FORM * f)
 {
-    WINDOW     *w = form_win(f);
-    WINDOW     *s = form_sub(f);
+    WINDOW *w = form_win(f);
+    WINDOW *s = form_sub(f);
 
     unpost_form(f);
     werase(w);
@@ -2601,17 +2753,18 @@ static void erase_form(FORM *f)
     delwin(w);
 }
 
-static int edit_secure(FIELD *me, int c)
+static int
+edit_secure(FIELD * me, int c)
 {
-    int rows, cols, frow, fcol, nbuf;
+    int rows, cols, frow, fcol, nrow, nbuf;
 
-    if (field_info(me, &rows, &cols, &frow, &fcol, (int *)0, &nbuf) == E_OK
-     && nbuf > 0) {
+    if (field_info(me, &rows, &cols, &frow, &fcol, &nrow, &nbuf) == E_OK
+       && nbuf > 0) {
        char temp[80];
        long len;
 
        strcpy(temp, field_buffer(me, 1));
-       len = (long)(char *) field_userptr(me);
+       len = (long) (char *) field_userptr(me);
        if (c <= KEY_MAX) {
            if (isgraph(c)) {
                temp[len++] = c;
@@ -2652,62 +2805,137 @@ static int edit_secure(FIELD *me, int c)
                    temp[--len] = 0;
                    set_field_buffer(me, 1, temp);
                }
-               break;
+               break;
            }
        }
-       set_field_userptr(me, (void *)len);
-     }
-     return c;
+       set_field_userptr(me, (void *) len);
+    }
+    return c;
 }
 
-static int form_virtualize(FORM *f, WINDOW *w)
+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 }
+       {
+           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;
+    static int mode = REQ_INS_MODE;
+    int c = wGetchar(w);
+    unsigned n;
     FIELD *me = current_field(f);
 
     if (c == CTRL(']')) {
@@ -2717,7 +2945,7 @@ static int form_virtualize(FORM *f, WINDOW *w)
            mode = REQ_INS_MODE;
        c = mode;
     } else {
-       for (n = 0; n < sizeof(lookup)/sizeof(lookup[0]); n++) {
+       for (n = 0; n < sizeof(lookup) / sizeof(lookup[0]); n++) {
            if (lookup[n].code == c) {
                c = lookup[n].result;
                break;
@@ -2739,25 +2967,26 @@ static int form_virtualize(FORM *f, WINDOW *w)
     return c;
 }
 
-static int my_form_driver(FORM *form, int c)
+static int
+my_form_driver(FORM * form, int c)
 {
     if (c == (MAX_FORM_COMMAND + 1)
-               && form_driver(form, REQ_VALIDATION) == E_OK)
-       return(TRUE);
-    else
-    {
+       && form_driver(form, REQ_VALIDATION) == E_OK)
+       return (TRUE);
+    else {
        beep();
-       return(FALSE);
+       return (FALSE);
     }
 }
 
-static void demo_forms(void)
+static void
+demo_forms(void)
 {
-    WINDOW     *w;
-    FORM       *form;
-    FIELD      *f[12], *secure;
-    int                finished = 0, c;
-    unsigned   n = 0;
+    WINDOW *w;
+    FORM *form;
+    FIELD *f[12], *secure;
+    int finished = 0, c;
+    unsigned n = 0;
 
     move(18, 0);
     addstr("Defined form-traversal keys:   ^Q/ESC- exit form\n");
@@ -2788,8 +3017,8 @@ static void demo_forms(void)
     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;
+       f[n++] = make_field(5, 30, 1, 9, TRUE);
+    f[n++] = (FIELD *) 0;
 
     form = new_form(f);
 
@@ -2797,10 +3026,9 @@ static void demo_forms(void)
 
     w = form_win(form);
     raw();
-    while (!finished)
-    {
-       switch(form_driver(form, c = form_virtualize(form, w)))
-       {
+    nonl();                    /* lets us read ^M's */
+    while (!finished) {
+       switch (form_driver(form, c = form_virtualize(form, w))) {
        case E_OK:
            mvaddstr(5, 57, field_buffer(secure, 1));
            clrtoeol();
@@ -2819,10 +3047,11 @@ static void demo_forms(void)
 
     free_form(form);
     for (c = 0; f[c] != 0; c++)
-       free_field(f[c]);
+       free_field(f[c]);
     noraw();
+    nl();
 }
-#endif /* USE_LIBFORM */
+#endif /* USE_LIBFORM */
 
 /****************************************************************************
  *
@@ -2830,42 +3059,42 @@ static void demo_forms(void)
  *
  ****************************************************************************/
 
-static void fillwin(WINDOW *win, char ch)
+static void
+fillwin(WINDOW *win, char ch)
 {
     int y, x;
     int y1, x1;
 
     getmaxyx(win, y1, x1);
-    for (y = 0; y < y1; y++)
-    {
+    for (y = 0; y < y1; y++) {
        wmove(win, y, 0);
        for (x = 0; x < x1; x++)
            waddch(win, ch);
     }
 }
 
-static void crosswin(WINDOW *win, char ch)
+static void
+crosswin(WINDOW *win, char ch)
 {
     int y, x;
     int y1, x1;
 
     getmaxyx(win, y1, x1);
-    for (y = 0; y < y1; y++)
-    {
+    for (y = 0; y < y1; y++) {
        for (x = 0; x < x1; x++)
            if (((x > (x1 - 1) / 3) && (x <= (2 * (x1 - 1)) / 3))
-           || (((y > (y1 - 1) / 3) && (y <= (2 * (y1 - 1)) / 3))))
-           {
+               || (((y > (y1 - 1) / 3) && (y <= (2 * (y1 - 1)) / 3)))) {
                wmove(win, y, x);
                waddch(win, ch);
            }
     }
 }
 
-static void overlap_test(void)
+static void
+overlap_test(void)
 /* test effects of overlapping windows */
 {
-    int        ch;
+    int ch;
 
     WINDOW *win1 = newwin(9, 20, 3, 3);
     WINDOW *win2 = newwin(9, 20, 9, 16);
@@ -2877,7 +3106,6 @@ static void overlap_test(void)
     printw("the shared region of two overlapping windows A and B.  The cross\n");
     printw("pattern in each window does not overlap the other.\n");
 
-
     move(18, 0);
     printw("a = refresh A, then B, then doupdate. b = refresh B, then A, then doupdaute\n");
     printw("c = fill window A with letter A.      d = fill window B with letter B.\n");
@@ -2887,8 +3115,7 @@ static void overlap_test(void)
     printw("^Q/ESC = terminate test.");
 
     while ((ch = Getchar()) != QUIT && ch != ESCAPE)
-       switch (ch)
-       {
+       switch (ch) {
        case 'a':               /* refresh window A first, then B */
            wnoutrefresh(win1);
            wnoutrefresh(win2);
@@ -2952,8 +3179,7 @@ static bool
 do_single_test(const char c)
 /* perform a single specified test */
 {
-    switch (c)
-    {
+    switch (c) {
     case 'a':
        getch_test();
        break;
@@ -3023,12 +3249,12 @@ do_single_test(const char c)
 #endif
 
     case 's':
-        overlap_test();
+       overlap_test();
        break;
 
 #if USE_LIBMENU && defined(TRACE)
     case 't':
-        trace_set();
+       trace_set();
        break;
 #endif
 
@@ -3045,10 +3271,15 @@ do_single_test(const char c)
 static void
 usage(void)
 {
-    static const char *const tbl[] = {
-        "Usage: ncurses [options]"
+    static const char *const tbl[] =
+    {
+       "Usage: ncurses [options]"
        ,""
        ,"Options:"
+#ifdef NCURSES_VERSION
+       ,"  -a f,b   set default-colors (assumed white-on-black)"
+       ,"  -d       use default-colors if terminal supports them"
+#endif
        ,"  -e fmt   specify format for soft-keys test (e)"
        ,"  -f       rip-off footer line (can repeat)"
        ,"  -h       rip-off header line (can repeat)"
@@ -3058,7 +3289,7 @@ usage(void)
 #endif
     };
     size_t n;
-    for (n = 0; n < sizeof(tbl)/sizeof(tbl[0]); n++)
+    for (n = 0; n < sizeof(tbl) / sizeof(tbl[0]); n++)
        fprintf(stderr, "%s\n", tbl[n]);
     exit(EXIT_FAILURE);
 }
@@ -3075,30 +3306,33 @@ set_terminal_modes(void)
 }
 
 #ifdef SIGUSR1
-static RETSIGTYPE announce_sig(int sig)
+static RETSIGTYPE
+announce_sig(int sig)
 {
     (void) fprintf(stderr, "Handled signal %d\r\n", sig);
 }
 #endif
 
-static int rip_footer(WINDOW *win, int columns)
+static int
+rip_footer(WINDOW *win, int columns)
 {
-       wbkgd(win, A_REVERSE);
-       werase(win);
-       wmove(win, 0, 0);
-       wprintw(win, "footer: %d columns", columns);
-       wnoutrefresh(win);
-       return OK;
+    wbkgd(win, A_REVERSE);
+    werase(win);
+    wmove(win, 0, 0);
+    wprintw(win, "footer: %d columns", columns);
+    wnoutrefresh(win);
+    return OK;
 }
 
-static int rip_header(WINDOW *win, int columns)
+static int
+rip_header(WINDOW *win, int columns)
 {
-       wbkgd(win, A_REVERSE);
-       werase(win);
-       wmove(win, 0, 0);
-       wprintw(win, "header: %d columns", columns);
-       wnoutrefresh(win);
-       return OK;
+    wbkgd(win, A_REVERSE);
+    werase(win);
+    wmove(win, 0, 0);
+    wprintw(win, "header: %d columns", columns);
+    wnoutrefresh(win);
+    return OK;
 }
 
 /*+-------------------------------------------------------------------------
@@ -3108,23 +3342,38 @@ static int rip_header(WINDOW *win, int columns)
 int
 main(int argc, char *argv[])
 {
-    int                command, c;
-    int                my_e_param = 1;
+    int command, c;
+    int my_e_param = 1;
+#ifdef NCURSES_VERSION
+    int default_fg = COLOR_WHITE;
+    int default_bg = COLOR_BLACK;
+    bool assumed_colors = FALSE;
+    bool default_colors = FALSE;
+#endif
 
 #if HAVE_LOCALE_H
     setlocale(LC_CTYPE, "");
 #endif
 
-    while ((c = getopt(argc, argv, "e:fhs:t:")) != EOF) {
+    while ((c = getopt(argc, argv, "a:de:fhs:t:")) != EOF) {
        switch (c) {
+#ifdef NCURSES_VERSION
+       case 'a':
+           assumed_colors = TRUE;
+           sscanf(optarg, "%d,%d", &default_fg, &default_bg);
+           break;
+       case 'd':
+           default_colors = TRUE;
+           break;
+#endif
        case 'e':
            my_e_param = atoi(optarg);
 #ifdef NCURSES_VERSION
            if (my_e_param > 3) /* allow extended layouts */
-               usage();
+               usage();
 #else
            if (my_e_param > 1)
-               usage();
+               usage();
 #endif
            break;
        case 'f':
@@ -3159,7 +3408,7 @@ main(int argc, char *argv[])
     trace(save_trace);
 #else
     if (!isatty(fileno(stdin)))
-       trace(save_trace);
+       trace(save_trace);
 #endif /* USE_LIBMENU */
 #endif /* TRACE */
 
@@ -3176,7 +3425,15 @@ main(int argc, char *argv[])
     bkgdset(BLANK);
 
     /* tests, in general, will want these modes */
-    start_color();
+    if (has_colors()) {
+       start_color();
+#ifdef NCURSES_VERSION
+       if (default_colors)
+           use_default_colors();
+       else if (assumed_colors)
+           assume_default_colors(default_fg, default_bg);
+#endif
+    }
     set_terminal_modes();
     def_prog_mode();
 
@@ -3190,9 +3447,9 @@ main(int argc, char *argv[])
     (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);
+       NCURSES_VERSION_MAJOR,
+       NCURSES_VERSION_MINOR,
+       NCURSES_VERSION_PATCH);
 #else
     (void) puts("Welcome to ncurses.  Press ? for help.");
 #endif
@@ -3226,7 +3483,7 @@ main(int argc, char *argv[])
        (void) puts("? = repeat this command summary");
 
        (void) fputs("> ", stdout);
-       (void) fflush(stdout);          /* necessary under SVr4 curses */
+       (void) fflush(stdout);  /* necessary under SVr4 curses */
 
        /*
         * This used to be an 'fgets()' call.  However (on Linux, at least)
@@ -3234,41 +3491,44 @@ main(int argc, char *argv[])
         * input stream to be flushed when switching between the two.
         */
        command = 0;
-       for(;;) {
-               char ch;
-               if (read(fileno(stdin), &ch, 1) <= 0) {
-                       if (command == 0)
-                               command = 'q';
-                       break;
-               } else if (command == 0 && !isspace(ch)) {
-                       command = ch;
-               } else if (ch == '\n' || ch == '\r') {
-                       if (command != 0)
-                               break;
-                       (void) fputs("> ", stdout);
-                       (void) fflush(stdout);
-               }
+       for (;;) {
+           char ch;
+           if (read(fileno(stdin), &ch, 1) <= 0) {
+               if (command == 0)
+                   command = 'q';
+               break;
+           } else if (command == 0 && !isspace(ch)) {
+               command = ch;
+           } else if (ch == '\n' || ch == '\r') {
+               if (command != 0)
+                   break;
+               (void) fputs("> ", stdout);
+               (void) fflush(stdout);
+           }
        }
 
        if (do_single_test(command)) {
-               /*
-                * This may be overkill; it's intended to reset everything back
-                * to the initial terminal modes so that tests don't get in
-                * each other's way.
-                */
-               flushinp();
-               set_terminal_modes();
-               reset_prog_mode();
-               clear();
-               refresh();
-               endwin();
-               if (command == '?') {
-                       (void) puts("This is the ncurses capability tester.");
-                       (void) puts("You may select a test from the main menu by typing the");
-                       (void) puts("key letter of the choice (the letter to left of the =)");
-                       (void) puts("at the > prompt.  The commands `x' or `q' will exit.");
-               }
-               continue;
+           /*
+            * This may be overkill; it's intended to reset everything back
+            * to the initial terminal modes so that tests don't get in
+            * each other's way.
+            */
+           flushinp();
+           set_terminal_modes();
+           reset_prog_mode();
+           clear();
+           refresh();
+           endwin();
+           if (command == '?') {
+               (void) puts("This is the ncurses capability tester.");
+               (void)
+                   puts("You may select a test from the main menu by typing the");
+               (void)
+                   puts("key letter of the choice (the letter to left of the =)");
+               (void)
+                   puts("at the > prompt.  The commands `x' or `q' will exit.");
+           }
+           continue;
        }
     } while
        (command != 'q');
diff --git a/test/railroad.c b/test/railroad.c
new file mode 100644 (file)
index 0000000..d3dc2ea
--- /dev/null
@@ -0,0 +1,201 @@
+/****************************************************************************
+ * Copyright (c) 2000 Free Software Foundation, Inc.                        *
+ *                                                                          *
+ * Permission is hereby granted, free of charge, to any person obtaining a  *
+ * copy of this software and associated documentation files (the            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, sublicense, and/or sell       *
+ * copies of the Software, and to permit persons to whom the Software is    *
+ * furnished to do so, subject to the following conditions:                 *
+ *                                                                          *
+ * The above copyright notice and this permission notice shall be included  *
+ * in all copies or substantial portions of the Software.                   *
+ *                                                                          *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+ *                                                                          *
+ * Except as contained in this notice, the name(s) of the above copyright   *
+ * holders shall not be used in advertising or otherwise to promote the     *
+ * sale, use or other dealings in this Software without prior written       *
+ * authorization.                                                           *
+ ****************************************************************************/
+
+/*
+ * Author: Thomas E. Dickey <dickey@clark.net> 2000
+ *
+ * $Id: railroad.c,v 1.1 2000/01/15 02:41:27 tom Exp $
+ *
+ * A simple demo of the termcap interface.
+ */
+#include <test.priv.h>
+
+#include <termcap.h>
+#include <ctype.h>
+#include <signal.h>
+
+static char *finisC;
+static char *finisS;
+static char *finisU;
+
+static char *startC;
+static char *startS;
+static char *startU;
+
+static char *backup;
+
+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 void
+PutChar(int ch)
+{
+    putchar(ch);
+    fflush(stdout);
+    napms(50);                 /* not really termcap... */
+}
+
+static void
+Backup(void)
+{
+    tputs(backup != 0 ? backup : "\b", 1, outc);
+}
+
+static void
+ShowCursor(int flag)
+{
+    if (startC != 0 && finisC != 0) {
+       tputs(flag ? startC : finisC, 1, outc);
+    }
+}
+
+static void
+StandOut(int flag)
+{
+    if (startS != 0 && finisS != 0) {
+       tputs(flag ? startS : finisS, 1, outc);
+    }
+}
+
+static void
+Underline(int flag)
+{
+    if (startU != 0 && finisU != 0) {
+       tputs(flag ? startU : finisU, 1, outc);
+    }
+}
+
+static void
+ShowSign(char *string)
+{
+    int ch, first, last;
+
+    while (*string != 0) {
+       ch = *string;
+       last = ch;
+       if (isalpha(ch)) {
+           first = isupper(ch) ? 'A' : 'a';
+       } else if (isdigit(ch)) {
+           first = '0';
+       } else {
+           first = ch;
+       }
+       if (first < last) {
+           Underline(1);
+           while (first < last) {
+               PutChar(first);
+               Backup();
+               first++;
+           }
+           Underline(0);
+       }
+       StandOut(1);
+       PutChar(ch);
+       StandOut(0);
+       fflush(stdout);
+       string++;
+    }
+    putchar('\n');
+}
+
+static void
+cleanup(void)
+{
+    Underline(0);
+    StandOut(0);
+    ShowCursor(1);
+}
+
+static void
+onsig(int n GCC_UNUSED)
+{
+    interrupted = TRUE;
+    cleanup();
+    exit(EXIT_FAILURE);
+}
+
+static void
+railroad(char **args)
+{
+    char *name = getenv("TERM");
+    char buffer[1024];
+    char area[1024], *ap = area;
+    int j;
+
+    if (name == 0)
+       name = "dumb";
+    if (tgetent(buffer, name)) {
+       startS = tgetstr("so", &ap);
+       finisS = tgetstr("se", &ap);
+
+       startU = tgetstr("us", &ap);
+       finisU = tgetstr("ue", &ap);
+
+       backup = tgetstr("le", &ap);
+
+       startC = tgetstr("ve", &ap);
+       finisC = tgetstr("vi", &ap);
+
+       ShowCursor(0);
+
+       for (j = SIGHUP; j <= SIGTERM; j++)
+           if (signal(j, SIG_IGN) != SIG_IGN)
+               signal(j, onsig);
+
+       while (*args) {
+           ShowSign(*args++);
+       }
+       ShowCursor(1);
+    }
+}
+
+int
+main(
+    int argc,
+    char *argv[])
+{
+    if (argc > 1) {
+       railroad(argv + 1);
+    } else {
+       static char *hello[] =
+       {"Hello World", 0};
+       railroad(hello);
+    }
+    return EXIT_SUCCESS;
+}
index 646ab96ee639f7b10af6dc42fa260287fbe22309..262f87d279b95d122954c1cb0617a8360417e4bb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: rain.c,v 1.13 1999/10/23 01:31:26 tom Exp $
+ * $Id: rain.c,v 1.14 1999/11/13 23:39:07 tom Exp $
  */
 #include <test.priv.h>
 
@@ -42,7 +42,7 @@ float c;
     if (has_colors()) {
        int bg = COLOR_BLACK;
        start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
        if (use_default_colors() == OK)
                bg = -1;
 #endif
index 0c79568411be3c99dbd99e72c265457235996b54..838f45e7092045647c2f79bc73199bf5467422b4 100644 (file)
@@ -128,7 +128,7 @@ main(
 
     if (has_colors()) {
        start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
        if (use_default_colors() == OK)
            my_bg = -1;
 #endif
index 0ae433195e4260895c686c09bdcd5ef353234f10..affed8d7e76a792edf733485b80b1012f485d207 100644 (file)
@@ -29,7 +29,7 @@
 /****************************************************************************
  *  Author: Thomas E. Dickey <dickey@clark.net> 1996                        *
  ****************************************************************************/
-/* $Id: test.priv.h,v 1.15 1998/02/11 12:14:04 tom Exp $ */
+/* $Id: test.priv.h,v 1.16 2000/04/15 17:52:08 tom Exp $ */
 #if HAVE_CONFIG_H
 #include <ncurses_cfg.h>
 #endif
@@ -68,6 +68,9 @@ extern int optind;
 
 #if defined(NCURSES_VERSION) && HAVE_NC_ALLOC_H
 #include <nc_alloc.h>
+#else
+#define typeMalloc(type,n) (type *) malloc(n * sizeof(type))
+#define typeRealloc(type,n,p) (type *) realloc(p, n * sizeof(type))
 #endif
 
 #ifndef ExitProgram
index ff776570e2e8ff38ea36acd2084ceb4feef0e7e8..5fa054a943a51b2cb7c6724074b142910593ce2e 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.19 1999/02/14 00:42:28 tom Exp $
+ * $Id: testcurs.c,v 1.22 2000/06/17 23:23:34 tom Exp $
  */
 
 #include <test.priv.h>
 char *XCursesProgramName = "testcurs";
 #endif
 
-static int  initTest (WINDOW **);
-static void display_menu (int,int);
-static void inputTest (WINDOW *);
-static void introTest (WINDOW *);
-static void outputTest (WINDOW *);
-static void padTest (WINDOW *);
-static void scrollTest (WINDOW *);
-#  if defined(PDCURSES) && !defined(XCURSES)
-static void resizeTest (WINDOW *);
+static int initTest(WINDOW **);
+static void display_menu(int, int);
+static void inputTest(WINDOW *);
+static void introTest(WINDOW *);
+static void outputTest(WINDOW *);
+static void padTest(WINDOW *);
+static void scrollTest(WINDOW *);
+#if defined(PDCURSES) && !defined(XCURSES)
+static void resizeTest(WINDOW *);
 #endif
 
-struct commands
-{
- NCURSES_CONST char *text;
- void (*function)(WINDOW *);
+struct commands {
+    NCURSES_CONST char *text;
+    void (*function) (WINDOW *);
 };
 typedef struct commands COMMAND;
 
 const COMMAND command[] =
 {
{"Intro Test",  introTest},
{"Pad Test",    padTest},
-#  if defined(PDCURSES) && !defined(XCURSES)
- {"Resize Test", resizeTest},
   {"Intro Test", introTest},
   {"Pad Test", padTest},
+#if defined(PDCURSES) && !defined(XCURSES)
   {"Resize Test", resizeTest},
 #endif
- {"Scroll Test", scrollTest},
{"Input Test",  inputTest},
- {"Output Test", outputTest}
   {"Scroll Test", scrollTest},
   {"Input Test", inputTest},
   {"Output Test", outputTest}
 };
 #define MAX_OPTIONS ((sizeof(command)/sizeof(command[0])))
 
-int     width, height;
+int width, height;
 
 int
 main(
-        int argc GCC_UNUSED,
-        char *argv[] GCC_UNUSED)
+    int argc GCC_UNUSED,
+    char *argv[]GCC_UNUSED)
 {
-WINDOW  *win;
-int key,old_option=(-1),new_option=0;
-bool quit=FALSE;
+    WINDOW *win;
+    int key, old_option = (-1), new_option = 0;
+    bool quit = FALSE;
 
 #ifdef PDCDEBUG
-        PDC_debug("testcurs started\n");
+    PDC_debug("testcurs started\n");
 #endif
-    if (!initTest (&win)) return EXIT_FAILURE;
+    if (!initTest(&win))
+       return EXIT_FAILURE;
 
+    erase();
+    display_menu(old_option, new_option);
+    while (1) {
 #ifdef A_COLOR
-    if (has_colors())
-      {
-       init_pair(1,COLOR_WHITE,COLOR_BLUE);
-       wbkgd(win, COLOR_PAIR(1));
-      }
-    else
-       wbkgd(win, A_REVERSE);
+       if (has_colors()) {
+           init_pair(1, COLOR_WHITE, COLOR_BLUE);
+           wbkgd(win, COLOR_PAIR(1));
+       } else
+           wbkgd(win, A_REVERSE);
 #else
-    wbkgd(win, A_REVERSE);
+       wbkgd(win, A_REVERSE);
 #endif
+       werase(win);
+
+       noecho();
+       keypad(stdscr, TRUE);
+       raw();
+       key = getch();
+       switch (key) {
+       case 10:
+       case 13:
+       case KEY_ENTER:
+           erase();
+           refresh();
+           (*command[new_option].function) (win);
+           erase();
+           display_menu(old_option, new_option);
+           break;
+       case KEY_UP:
+           new_option = (new_option == 0) ? new_option : new_option - 1;
+           display_menu(old_option, new_option);
+           break;
+       case KEY_DOWN:
+           new_option = (new_option == MAX_OPTIONS - 1) ? new_option :
+               new_option + 1;
+           display_menu(old_option, new_option);
+           break;
+       case 'Q':
+       case 'q':
+           quit = TRUE;
+           break;
+       default:
+           break;
+       }
+       if (quit == TRUE)
+           break;
+    }
 
-    erase();
-    display_menu(old_option,new_option);
-    while(1)
-      {
-       noecho();
-       keypad(stdscr,TRUE);
-       raw();
-       key = getch();
-       switch(key)
-         {
-          case 10:
-          case 13:
-          case KEY_ENTER:
-                         erase();
-                         refresh();
-                         (*command[new_option].function)(win);
-                         erase();
-                         display_menu(old_option,new_option);
-                         break;
-          case KEY_UP:
-                         new_option = (new_option == 0) ? new_option : new_option-1;
-                         display_menu(old_option,new_option);
-                         break;
-          case KEY_DOWN:
-                         new_option = (new_option == MAX_OPTIONS-1) ? new_option : new_option+1;
-                         display_menu(old_option,new_option);
-                         break;
-          case 'Q':
-          case 'q':
-                         quit = TRUE;
-                         break;
-          default:       break;
-         }
-       if (quit == TRUE)
-          break;
-      }
-
-    delwin (win);
+    delwin(win);
 
     endwin();
 #ifdef XCURSES
@@ -122,24 +121,35 @@ bool quit=FALSE;
     return EXIT_SUCCESS;
 }
 
-static
-void Continue (WINDOW *win)
+static void
+Continue(WINDOW *win)
 {
-    wmove(win, 10, 1);
+    int y1 = getmaxy(win);
+    int x1 = getmaxx(win);
+    int y0 = y1 < 10 ? y1 : 10;
+    int x0 = 1;
+    long save;
+
+    save = mvwinch(win, y0, x1 - 1);
+
+    mvwaddstr(win, y0, x0, " Press any key to continue");
     wclrtoeol(win);
-    mvwaddstr(win, 10, 1, " Press any key to continue");
-    wrefresh(win);
+    getyx(win, y0, x0);
+
+    mvwaddch(win, y0, x1 - 1, save);
+
+    wmove(win, y0, x0);
     raw();
     wgetch(win);
 }
 
 static int
-initTest (WINDOW **win)
+initTest(WINDOW **win)
 {
 #ifdef PDCDEBUG
     PDC_debug("initTest called\n");
 #endif
-#ifdef NCURSES_VERSION
+#ifdef TRACE
     trace(TRACE_MAXIMUM);
 #endif
     initscr();
@@ -148,106 +158,115 @@ initTest (WINDOW **win)
 #endif
 #ifdef A_COLOR
     if (has_colors())
-       start_color();
+       start_color();
 #endif
-    width  = 60;
-    height = 13;                /* Create a drawing window */
-    *win = newwin(height, width, (LINES-height)/2, (COLS-width)/2);
-    if(*win == NULL)
-    {
-        endwin();
-        return 0;
+    width = 60;
+    height = 13;               /* Create a drawing window */
+    *win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2);
+    if (*win == NULL) {
+       endwin();
+       return 0;
     }
     return 1;
 }
 
 static void
-introTest (WINDOW *win)
+introTest(WINDOW *win)
 {
-    wmove(  win, height/2-5, width/2 );
-    wvline( win, ACS_VLINE,  10 );
-    wmove(  win, height/2,   width/2-10 );
-    whline( win, ACS_HLINE,  20 );
+    wmove(win, height / 2 - 5, width / 2);
+    wvline(win, ACS_VLINE, 10);
+    wmove(win, height / 2, width / 2 - 10);
+    whline(win, ACS_HLINE, 20);
     Continue(win);
 
-    beep ();
+    beep();
     werase(win);
 
     box(win, ACS_VLINE, ACS_HLINE);
     wrefresh(win);
-    cbreak ();
-    mvwaddstr(win, 1, 1, "You should have rectangle in the middle of the screen");
+    cbreak();
+    mvwaddstr(win, 1, 1,
+       "You should have rectangle in the middle of the screen");
     mvwaddstr(win, 2, 1, "You should have heard a beep");
     Continue(win);
     return;
 }
 
 static void
-scrollTest (WINDOW *win)
+scrollTest(WINDOW *win)
 {
     int i;
+    int half;
     int OldX, OldY;
     NCURSES_CONST char *Message = "The window will now scroll slowly";
 
     wclear(win);
-    mvwprintw (win, height - 2, 1, Message);
-    wrefresh (win);
+    getmaxyx(win, OldY, OldX);
+    half = OldY / 2;
+    mvwprintw(win, OldY - 2, 1, Message);
+    wrefresh(win);
     scrollok(win, TRUE);
-    for (i = 1; i <= height; i++) {
-      napms(250);
-      scroll(win);
-      wrefresh (win);
+    for (i = 1; i <= OldY; i++) {
+       napms(600);
+       scroll(win);
+       wrefresh(win);
     }
 
-    getmaxyx (win, OldY, OldX);
-    mvwprintw (win, 6, 1, "The top of the window will scroll");
-    wmove (win, 1, 1);
-    wsetscrreg (win, 0, 4);
+    werase(win);
+    for (i = 1; i < OldY; i++) {
+       mvwprintw(win, i, 1, "Line %d", i);
+    }
+    mvwprintw(win, OldY - 2, 1, "The top of the window will scroll");
+    wmove(win, 1, 1);
+    wsetscrreg(win, 0, half - 1);
     box(win, ACS_VLINE, ACS_HLINE);
-    wrefresh (win);
-    for (i = 1; i <= 5; i++) {
-      napms(500);
-      scroll(win);
-      wrefresh (win);
+    wrefresh(win);
+    for (i = 1; i <= half; i++) {
+       napms(600);
+       scroll(win);
+       box(win, ACS_VLINE, ACS_HLINE);
+       wrefresh(win);
     }
 
-    mvwprintw (win, 3, 1, "The bottom of the window will scroll");
-    wmove (win, 8, 1);
-    wsetscrreg (win, 5, --OldY);
+    werase(win);
+    for (i = 1; i < OldY; i++) {
+       mvwprintw(win, i, 1, "Line %d", i);
+    }
+    mvwprintw(win, 1, 1, "The bottom of the window will scroll");
+    wmove(win, OldY - 2, 1);
+    wsetscrreg(win, half, --OldY);
     box(win, ACS_VLINE, ACS_HLINE);
-    wrefresh (win);
-    for (i = 5; i <= OldY; i++) {
-       napms (300);
-       wscrl(win,-1);
-       wrefresh (win);
+    wrefresh(win);
+    for (i = half; i <= OldY; i++) {
+       napms(600);
+       wscrl(win, -1);
+       box(win, ACS_VLINE, ACS_HLINE);
+       wrefresh(win);
     }
-    wsetscrreg (win, 0, OldY);
-
+    wsetscrreg(win, 0, OldY);
 }
 
 static void
-inputTest (WINDOW *win)
+inputTest(WINDOW *win)
 {
-    int w, h, bx, by, sw, sh, i, c,num;
-    char buffer [80];
+    int w, h, bx, by, sw, sh, i, c, num;
+    char buffer[80];
     WINDOW *subWin;
-    wclear (win);
+    wclear(win);
 
-    getmaxyx(win, h,  w);
+    getmaxyx(win, h, w);
     getbegyx(win, by, bx);
     sw = w / 3;
     sh = h / 3;
-    if((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2)) == NULL)
-        return;
+    if ((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2)) == NULL)
+       return;
 
 #ifdef A_COLOR
-    if (has_colors())
-      {
-       init_pair(2,COLOR_WHITE,COLOR_RED);
-       wbkgd(subWin, COLOR_PAIR(2) | A_BOLD);
-      }
-    else
-      wbkgd(subWin, A_BOLD);
+    if (has_colors()) {
+       init_pair(2, COLOR_WHITE, COLOR_RED);
+       wbkgd(subWin, COLOR_PAIR(2) | A_BOLD);
+    } else
+       wbkgd(subWin, A_BOLD);
 #else
     wbkgd(subWin, A_BOLD);
 #endif
@@ -259,16 +278,16 @@ inputTest (WINDOW *win)
     mvwaddstr(win, 1, 1, "Pressing ^C should do nothing");
     wrefresh(win);
 
-    werase (subWin);
+    werase(subWin);
     box(subWin, ACS_VLINE, ACS_HLINE);
     for (i = 0; i < 5; i++) {
-      mvwprintw (subWin, 1, 1, "Time = %d", i);
-      wrefresh(subWin);
-      napms(1000);
-      flushinp();
+       mvwprintw(subWin, 1, 1, "Time = %d", i);
+       wrefresh(subWin);
+       napms(1000);
+       flushinp();
     }
 
-    delwin (subWin);
+    delwin(subWin);
     werase(win);
     flash();
     wrefresh(win);
@@ -287,7 +306,7 @@ inputTest (WINDOW *win)
     mvwaddstr(win, 4, 1, "The character should now have been deleted");
     Continue(win);
 
-    wclear (win);
+    wclear(win);
     mvwaddstr(win, 1, 1, "Press keys (or mouse buttons) to show their names");
     mvwaddstr(win, 2, 1, "Press spacebar to finish");
     wrefresh(win);
@@ -298,49 +317,44 @@ inputTest (WINDOW *win)
 #if defined(PDCURSES)
     mouse_set(ALL_MOUSE_EVENTS);
 #endif
-    while(1) {
-      wmove(win,3,5);
-      c = wgetch(win);
-      wclrtobot(win);
-      if (c >= KEY_MIN)
-        wprintw(win,"Key Pressed: %s", keyname(c));
-      else
-        if (isprint(c))
-          wprintw(win,"Key Pressed: %c", c);
-        else
-          wprintw(win,"Key Pressed: %s", unctrl(c));
+    while (1) {
+       wmove(win, 3, 5);
+       c = wgetch(win);
+       wclrtobot(win);
+       if (c >= KEY_MIN)
+           wprintw(win, "Key Pressed: %s", keyname(c));
+       else if (isprint(c))
+           wprintw(win, "Key Pressed: %c", c);
+       else
+           wprintw(win, "Key Pressed: %s", unctrl(c));
 #if defined(PDCURSES)
-      if (c == KEY_MOUSE) {
-         int button=0;
-         request_mouse_pos();
-         if (BUTTON_CHANGED(1))
-            button = 1;
-          else
-            if (BUTTON_CHANGED(2))
-              button = 2;
-            else
-              if (BUTTON_CHANGED(3))
-                button = 3;
-              else
-                button = 0;
-         wmove(win,4,18);
-         wprintw(win,"Button %d: ",button);
-         if (MOUSE_MOVED)
-           wprintw(win,"moved: ");
-         else
-           if ((BUTTON_STATUS(button) & BUTTON_ACTION_MASK) == BUTTON_PRESSED)
-             wprintw(win,"pressed: ");
-           else
-             if ((BUTTON_STATUS(button) & BUTTON_ACTION_MASK) == BUTTON_DOUBLE_CLICKED)
-               wprintw(win,"double: ");
-             else
-               wprintw(win,"released: ");
-         wprintw(win," Position: Y: %d X: %d",MOUSE_Y_POS,MOUSE_X_POS);
-      }
+       if (c == KEY_MOUSE) {
+           int button = 0;
+           request_mouse_pos();
+           if (BUTTON_CHANGED(1))
+               button = 1;
+           else if (BUTTON_CHANGED(2))
+               button = 2;
+           else if (BUTTON_CHANGED(3))
+               button = 3;
+           else
+               button = 0;
+           wmove(win, 4, 18);
+           wprintw(win, "Button %d: ", button);
+           if (MOUSE_MOVED)
+               wprintw(win, "moved: ");
+           else if ((BUTTON_STATUS(button) & BUTTON_ACTION_MASK) == BUTTON_PRESSED)
+               wprintw(win, "pressed: ");
+           else if ((BUTTON_STATUS(button) & BUTTON_ACTION_MASK) == BUTTON_DOUBLE_CLICKED)
+               wprintw(win, "double: ");
+           else
+               wprintw(win, "released: ");
+           wprintw(win, " Position: Y: %d X: %d", MOUSE_Y_POS, MOUSE_X_POS);
+       }
 #endif
-      wrefresh(win);
-      if (c == ' ')
-        break;
+       wrefresh(win);
+       if (c == ' ')
+           break;
     }
 #if 0
     nodelay(win, TRUE);
@@ -351,9 +365,10 @@ inputTest (WINDOW *win)
     mouse_set(0L);
 #endif
     refresh();
-    wclear (win);
+    wclear(win);
     mvwaddstr(win, 3, 2, "The window should have moved");
-    mvwaddstr(win, 4, 2, "This text should have appeared without you pressing a key");
+    mvwaddstr(win, 4, 2,
+       "This text should have appeared without you pressing a key");
     mvwaddstr(win, 6, 2, "Enter a number then a string separated by space");
     mvwin(win, 2, 1);
     wrefresh(win);
@@ -361,25 +376,26 @@ inputTest (WINDOW *win)
     noraw();
     num = 0;
     *buffer = 0;
-    mvwscanw(win, 7, 6, "%d %s", &num,buffer);
-    mvwprintw(win, 8, 6, "String: %s Number: %d", buffer,num);
+    mvwscanw(win, 7, 6, "%d %s", &num, buffer);
+    mvwprintw(win, 8, 6, "String: %s Number: %d", buffer, num);
     Continue(win);
 }
 
 static void
-outputTest (WINDOW *win)
+outputTest(WINDOW *win)
 {
     WINDOW *win1;
-    char Buffer [80];
+    char Buffer[80];
     chtype ch;
     int by, bx;
 
-    nl ();
-    wclear (win);
-    mvwaddstr(win, 1, 1, "You should now have a screen in the upper left corner, and this text should have wrapped");
+    nl();
+    wclear(win);
+    mvwaddstr(win, 1, 1,
+       "You should now have a screen in the upper left corner, and this text should have wrapped");
     mvwin(win, 2, 1);
-    waddstr(win,"\nThis text should be down\n");
-    waddstr(win,  "and broken into two here ^");
+    waddstr(win, "\nThis text should be down\n");
+    waddstr(win, "and broken into two here ^");
     Continue(win);
 
     wclear(win);
@@ -392,51 +408,51 @@ outputTest (WINDOW *win)
     getbegyx(win, by, bx);
 
     if (LINES < 24 || COLS < 75) {
-       mvwaddstr(win, 5, 1, "Some tests have been skipped as they require a");
-       mvwaddstr(win, 6, 1, "display of at least 24 LINES by 75 COLUMNS");
-       Continue(win);
+       mvwaddstr(win, 5, 1,
+           "Some tests have been skipped as they require a");
+       mvwaddstr(win, 6, 1, "display of at least 24 LINES by 75 COLUMNS");
+       Continue(win);
     } else {
-      win1 = newwin(10, 50, 14, 25);
-      if(win1 == NULL)
-      {
-          endwin();
-          return;
-      }
+       win1 = newwin(10, 50, 14, 25);
+       if (win1 == NULL) {
+           endwin();
+           return;
+       }
 #ifdef A_COLOR
-      if (has_colors())
-        {
-         init_pair(3,COLOR_BLUE,COLOR_WHITE);
-         wbkgd(win1, COLOR_PAIR(3));
-        }
-      else
-        wbkgd(win1, A_NORMAL);
+       if (has_colors()) {
+           init_pair(3, COLOR_BLUE, COLOR_WHITE);
+           wbkgd(win1, COLOR_PAIR(3));
+       } else
+           wbkgd(win1, A_NORMAL);
 #else
-      wbkgd(win1, A_NORMAL);
+       wbkgd(win1, A_NORMAL);
 #endif
-      wclear (win1);
-      mvwaddstr(win1, 5, 1, "This text should appear; using overlay option");
-      copywin(win, win1,0,0,0,0,9,49,TRUE);
+       wclear(win1);
+       mvwaddstr(win1, 5, 1,
+           "This text should appear; using overlay option");
+       copywin(win, win1, 0, 0, 0, 0, 9, 49, TRUE);
 
 #if defined(PDCURSES) && !defined(XCURSES)
-      box(win1,0xb3,0xc4);
+       box(win1, 0xb3, 0xc4);
 #else
-      box(win1,ACS_VLINE,ACS_HLINE);
+       box(win1, ACS_VLINE, ACS_HLINE);
 #endif
-      wmove(win1, 8, 26);
-      wrefresh(win1);
-      wgetch(win1);
-
-      wclear(win1);
-      wattron(win1, A_BLINK);
-      mvwaddstr(win1, 4, 1, "This blinking text should appear in only the second window");
-      wattroff(win1, A_BLINK);
-      mvwin(win1, by, bx);
-      overlay(win, win1);
-      mvwin(win1,14,25);
-      wmove(win1, 8, 26);
-      wrefresh(win1);
-      wgetch(win1);
-      delwin(win1);
+       wmove(win1, 8, 26);
+       wrefresh(win1);
+       wgetch(win1);
+
+       wclear(win1);
+       wattron(win1, A_BLINK);
+       mvwaddstr(win1, 4, 1,
+           "This blinking text should appear in only the second window");
+       wattroff(win1, A_BLINK);
+       mvwin(win1, by, bx);
+       overlay(win, win1);
+       mvwin(win1, 14, 25);
+       wmove(win1, 8, 26);
+       wrefresh(win1);
+       wgetch(win1);
+       delwin(win1);
     }
 
     clear();
@@ -446,74 +462,75 @@ outputTest (WINDOW *win)
     mvwaddstr(win, 4, 2, "Only half of the next line is visible");
     mvwaddstr(win, 5, 2, "Only half of the next line is visible");
     wmove(win, 6, 1);
-    wclrtobot (win);
+    wclrtobot(win);
     wmove(win, 5, 20);
-    wclrtoeol (win);
+    wclrtoeol(win);
     mvwaddstr(win, 8, 2, "This line also shouldn't appear");
     wmove(win, 8, 1);
     wdeleteln(win);
     Continue(win);
 
-    wmove (win, 5, 9);
-    ch = winch (win);
+    wmove(win, 5, 9);
+    ch = winch(win);
 
     wclear(win);
-    wmove (win, 6, 2);
-    waddstr (win, "The next char should be l:  ");
-    winsch (win, ch);
+    wmove(win, 6, 2);
+    waddstr(win, "The next char should be l:  ");
+    winsch(win, ch);
     Continue(win);
 
-    mvwinsstr( win, 6, 2, "A1B2C3D4E5" );
+    mvwinsstr(win, 6, 2, "A1B2C3D4E5");
     Continue(win);
 
     wmove(win, 5, 1);
-    winsertln (win);
+    winsertln(win);
     mvwaddstr(win, 5, 2, "The lines below should have moved down");
     Continue(win);
 
     wclear(win);
     wmove(win, 2, 2);
-    wprintw(win, "This is a formatted string in a window: %d %s\n", 42, "is it");
+    wprintw(win, "This is a formatted string in a window: %d %s\n", 42,
+       "is it");
     mvwaddstr(win, 10, 1, "Enter a string: ");
     wrefresh(win);
     noraw();
     echo();
     *Buffer = 0;
-    wscanw (win, "%s", Buffer);
+    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);
+    scanw("%s", Buffer);
 
     if (tigetstr("cvvis") != 0) {
-        wclear(win);
-        curs_set(2);
-        mvwaddstr(win, 1, 1, "The cursor should appear as a block (visible)");
-        Continue(win);
+       wclear(win);
+       curs_set(2);
+       mvwaddstr(win, 1, 1, "The cursor should appear as a block (visible)");
+       Continue(win);
     }
 
     if (tigetstr("civis") != 0) {
-        wclear(win);
-        curs_set(0);
-        mvwaddstr(win, 1, 1, "The cursor should have disappeared (invisible)");
-        Continue(win);
+       wclear(win);
+       curs_set(0);
+       mvwaddstr(win, 1, 1,
+           "The cursor should have disappeared (invisible)");
+       Continue(win);
     }
 
     if (tigetstr("cnorm") != 0) {
-        wclear(win);
-        curs_set(1);
-        mvwaddstr(win, 1, 1, "The cursor should be an underline (normal)");
-        Continue(win);
+       wclear(win);
+       curs_set(1);
+       mvwaddstr(win, 1, 1, "The cursor should be an underline (normal)");
+       Continue(win);
     }
-
 #ifdef A_COLOR
-    if ( has_colors() ) {
-       wclear(win);
-       mvwaddstr(win, 1, 1, "Colors should change after you press a key");
-       Continue(win);
-       init_pair(1, COLOR_RED, COLOR_WHITE);
-       wrefresh(win);
+    if (has_colors()) {
+       wclear(win);
+       mvwaddstr(win, 1, 1, "Colors should change after you press a key");
+       Continue(win);
+       init_pair(1, COLOR_RED, COLOR_WHITE);
+       wrefresh(win);
     }
 #endif
 
@@ -521,16 +538,16 @@ outputTest (WINDOW *win)
     mvwaddstr(win, 1, 1, "Information About Your Terminal");
     mvwaddstr(win, 3, 1, termname());
     mvwaddstr(win, 4, 1, longname());
-    if ( termattrs() & A_BLINK )
-       mvwaddstr(win,5, 1, "This terminal supports blinking.");
+    if (termattrs() & A_BLINK)
+       mvwaddstr(win, 5, 1, "This terminal supports blinking.");
     else
-       mvwaddstr(win,5, 1, "This terminal does NOT support blinking.");
+       mvwaddstr(win, 5, 1, "This terminal does NOT support blinking.");
 
-    mvwaddnstr( win, 7,5, "Have a nice day!ok", 16 );
+    mvwaddnstr(win, 7, 5, "Have a nice day!ok", 16);
     wrefresh(win);
 
-    mvwinnstr( win, 7,5, Buffer, 18 );
-    mvaddstr( LINES-2, 10, Buffer );
+    mvwinnstr(win, 7, 5, Buffer, 18);
+    mvaddstr(LINES - 2, 10, Buffer);
     refresh();
     Continue(win);
 }
@@ -541,35 +558,34 @@ resizeTest(WINDOW *dummy GCC_UNUSED)
 {
     WINDOW *win1;
 
-    savetty ();
+    savetty();
 
     clear();
     refresh();
 #  if defined(OS2)
-    resize_term(50,120);
+    resize_term(50, 120);
 #  else
-    resize_term(50,80);
+    resize_term(50, 80);
 #  endif
 
     win1 = newwin(10, 50, 14, 25);
-    if(win1 == NULL)
-    {   endwin();
-        return;
+    if (win1 == NULL) {
+       endwin();
+       return;
     }
 #ifdef A_COLOR
-    if (has_colors())
-      {
-       init_pair(3,COLOR_BLUE,COLOR_WHITE);
-       wattrset(win1, COLOR_PAIR(3));
-      }
+    if (has_colors()) {
+       init_pair(3, COLOR_BLUE, COLOR_WHITE);
+       wattrset(win1, COLOR_PAIR(3));
+    }
 #endif
-    wclear (win1);
+    wclear(win1);
 
     mvwaddstr(win1, 1, 1, "The screen may now have 50 lines");
     Continue(win1);
 
-    wclear (win1);
-    resetty ();
+    wclear(win1);
+    resetty();
 
     mvwaddstr(win1, 1, 1, "The screen should now be reset");
     Continue(win1);
@@ -585,56 +601,57 @@ resizeTest(WINDOW *dummy GCC_UNUSED)
 static void
 padTest(WINDOW *dummy GCC_UNUSED)
 {
-WINDOW *pad, *spad;
-
- pad = newpad(50,100);
- wattron(pad, A_REVERSE);
- mvwaddstr(pad, 5, 2, "This is a new pad");
- wattrset(pad,A_NORMAL);
- mvwaddstr(pad, 8, 0, "The end of this line should be truncated here:except  now");
- mvwaddstr(pad,11, 1, "This line should not appear.It will now");
- wmove(pad, 10, 1);
- wclrtoeol(pad);
- mvwaddstr(pad, 10, 1, " Press any key to continue");
- prefresh(pad,0,0,0,0,10,45);
- keypad(pad, TRUE);
- raw();
- wgetch(pad);
-
- spad = subpad(pad,12,25,6,52);
- mvwaddstr(spad, 2, 2, "This is a new subpad");
- box(spad,0,0);
- prefresh(pad,0,0,0,0,15,75);
- keypad(pad, TRUE);
- raw();
- wgetch(pad);
-
- mvwaddstr(pad, 35, 2, "This is displayed at line 35 in the pad");
- mvwaddstr(pad, 40, 1, " Press any key to continue");
- prefresh(pad,30,0,0,0,10,45);
- keypad(pad, TRUE);
- raw();
- wgetch(pad);
-
- delwin(pad);
+    WINDOW *pad, *spad;
+
+    pad = newpad(50, 100);
+    wattron(pad, A_REVERSE);
+    mvwaddstr(pad, 5, 2, "This is a new pad");
+    wattrset(pad, A_NORMAL);
+    mvwaddstr(pad, 8, 0,
+       "The end of this line should be truncated here:except  now");
+    mvwaddstr(pad, 11, 1, "This line should not appear.It will now");
+    wmove(pad, 10, 1);
+    wclrtoeol(pad);
+    mvwaddstr(pad, 10, 1, " Press any key to continue");
+    prefresh(pad, 0, 0, 0, 0, 10, 45);
+    keypad(pad, TRUE);
+    raw();
+    wgetch(pad);
+
+    spad = subpad(pad, 12, 25, 6, 52);
+    mvwaddstr(spad, 2, 2, "This is a new subpad");
+    box(spad, 0, 0);
+    prefresh(pad, 0, 0, 0, 0, 15, 75);
+    keypad(pad, TRUE);
+    raw();
+    wgetch(pad);
+
+    mvwaddstr(pad, 35, 2, "This is displayed at line 35 in the pad");
+    mvwaddstr(pad, 40, 1, " Press any key to continue");
+    prefresh(pad, 30, 0, 0, 0, 10, 45);
+    keypad(pad, TRUE);
+    raw();
+    wgetch(pad);
+
+    delwin(pad);
 }
 
 static void
-display_menu(int old_option,int new_option)
+display_menu(int old_option, int new_option)
 {
- register size_t i;
-
- attrset(A_NORMAL);
- mvaddstr(3,20,"PDCurses Test Program");
-
- for (i=0;i<MAX_OPTIONS;i++)
-    mvaddstr(5+i,25,command[i].text);
- if (old_option != (-1))
-    mvaddstr(5+old_option,25,command[old_option].text);
- attrset(A_REVERSE);
- mvaddstr(5+new_option,25,command[new_option].text);
- attrset(A_NORMAL);
- mvaddstr(13,3,"Use Up and Down Arrows to select - Enter to run - Q to quit");
- refresh();
+    register size_t i;
+
+    attrset(A_NORMAL);
+    mvaddstr(3, 20, "PDCurses Test Program");
+
+    for (i = 0; i < MAX_OPTIONS; i++)
+       mvaddstr(5 + i, 25, command[i].text);
+    if (old_option != (-1))
+       mvaddstr(5 + old_option, 25, command[old_option].text);
+    attrset(A_REVERSE);
+    mvaddstr(5 + new_option, 25, command[new_option].text);
+    attrset(A_NORMAL);
+    mvaddstr(13, 3,
+       "Use Up and Down Arrows to select - Enter to run - Q to quit");
+    refresh();
 }
-
index 8381dc8898c48fc878e5eeb21f1a7b25f26701e4..f4c2f067234d821017a5603711c3426bd805bdb6 100644 (file)
@@ -5,7 +5,8 @@
  * to test the scrolling code in ncurses.
  *
  * modified by Thomas Dickey <dickey@clark.net> July 1995 to demonstrate
- * the use of 'resizeterm()'.
+ * the use of 'resizeterm()', and May 2000 to illustrate wide-character
+ * handling.
  *
  * Takes a filename argument.  It's a simple file-viewer with various
  * scroll-up and scroll-down commands.
@@ -22,7 +23,7 @@
  * scroll operation worked, and the refresh() code only had to do a
  * partial repaint.
  *
- * $Id: view.c,v 1.27 1998/08/22 18:33:41 tom Exp $
+ * $Id: view.c,v 1.29 2000/05/21 01:43:03 tom Exp $
  */
 
 #include <test.priv.h>
@@ -52,7 +53,7 @@
 static RETSIGTYPE finish(int sig) GCC_NORETURN;
 static void show_all(void);
 
-#if defined(SIGWINCH) && defined(TIOCGWINSZ) && defined(NCURSES_VERSION)
+#if defined(SIGWINCH) && defined(TIOCGWINSZ) && defined(HAVE_RESIZETERM)
 #define CAN_RESIZE 1
 #else
 #define CAN_RESIZE 0
@@ -60,33 +61,23 @@ static void show_all(void);
 
 #if CAN_RESIZE
 static RETSIGTYPE adjust(int sig);
-static int          interrupted;
+static int interrupted;
 #endif
 
-static int          waiting;
-static int          shift;
+static int waiting;
+static int shift;
+static int utf8_mode = FALSE;
 
-static char        *fname;
-static char        **lines;
-static char        **lptr;
+static char *fname;
+static chtype **lines;
+static chtype **lptr;
 
-#if !HAVE_STRDUP
-#define strdup my_strdup
-static char *strdup (char *s)
+static void
+usage(void)
 {
-  char *p;
-
-  p = malloc(strlen(s)+1);
-  if (p)
-    strcpy(p,s);
-  return(p);
-}
-#endif /* not HAVE_STRDUP */
-
-static void usage(void)
-{
-    static const char *msg[] = {
-        "Usage: view [options] file"
+    static const char *msg[] =
+    {
+       "Usage: view [options] file"
        ,""
        ,"Options:"
        ," -n NUM   specify maximum number of lines (default 1000)"
@@ -97,27 +88,117 @@ static void usage(void)
        ," -t       trace screen updates"
        ," -T NUM   specify trace mask"
 #endif
+       ," -u       translate UTF-8 data"
     };
     size_t n;
     for (n = 0; n < SIZEOF(msg); n++)
        fprintf(stderr, "%s\n", msg[n]);
-    exit (EXIT_FAILURE);
+    exit(EXIT_FAILURE);
+}
+
+static int
+ch_len(chtype * src)
+{
+    int result = 0;
+    while (*src++)
+       result++;
+    return result;
+}
+
+/*
+ * Allocate a string into an array of chtype's.  If UTF-8 mode is
+ * active, translate the string accordingly.
+ */
+static chtype *
+ch_dup(char *src)
+{
+    unsigned len = strlen(src);
+    chtype *dst = typeMalloc(chtype, len + 1);
+    unsigned j, k;
+    unsigned utf_count = 0;
+    unsigned utf_char = 0;
+
+#define UCS_REPL 0xfffd
+
+    for (j = k = 0; j < len; j++) {
+       if (utf8_mode) {
+           unsigned c = src[j] & 0xff;
+           /* Combine UTF-8 into Unicode */
+           if (c < 0x80) {
+               /* We received an ASCII character */
+               if (utf_count > 0)
+                   dst[k++] = UCS_REPL;        /* prev. sequence incomplete */
+               dst[k++] = c;
+               utf_count = 0;
+           } else if (c < 0xc0) {
+               /* We received a continuation byte */
+               if (utf_count < 1) {
+                   dst[k++] = UCS_REPL;        /* ... unexpectedly */
+               } else {
+                   if (!utf_char && !((c & 0x7f) >> (7 - utf_count))) {
+                       utf_char = UCS_REPL;
+                   }
+                   /* characters outside UCS-2 become UCS_REPL */
+                   if (utf_char > 0x03ff) {
+                       /* value would be >0xffff */
+                       utf_char = UCS_REPL;
+                   } else {
+                       utf_char <<= 6;
+                       utf_char |= (c & 0x3f);
+                   }
+                   utf_count--;
+                   if (utf_count == 0)
+                       dst[k++] = utf_char;
+               }
+           } else {
+               /* We received a sequence start byte */
+               if (utf_count > 0)
+                   dst[k++] = UCS_REPL;        /* prev. sequence incomplete */
+               if (c < 0xe0) {
+                   utf_count = 1;
+                   utf_char = (c & 0x1f);
+                   if (!(c & 0x1e))
+                       utf_char = UCS_REPL;    /* overlong sequence */
+               } else if (c < 0xf0) {
+                   utf_count = 2;
+                   utf_char = (c & 0x0f);
+               } else if (c < 0xf8) {
+                   utf_count = 3;
+                   utf_char = (c & 0x07);
+               } else if (c < 0xfc) {
+                   utf_count = 4;
+                   utf_char = (c & 0x03);
+               } else if (c < 0xfe) {
+                   utf_count = 5;
+                   utf_char = (c & 0x01);
+               } else {
+                   dst[k++] = UCS_REPL;
+                   utf_count = 0;
+               }
+           }
+       } else {
+           dst[k++] = src[j];
+       }
+    }
+    dst[k] = 0;
+    return dst;
 }
 
-int main(int argc, char *argv[])
+int
+main(int argc, char *argv[])
 {
-int         MAXLINES = 1000;
-FILE        *fp;
-char        buf[BUFSIZ];
-int         i;
-char        **olptr;
-int         done = FALSE;
-int         length = 0;
+    int MAXLINES = 1000;
+    FILE *fp;
+    char buf[BUFSIZ];
+    int i;
+    chtype **olptr;
+    int done = FALSE;
+    int length = 0;
 #if CAN_RESIZE
-bool        use_resize = TRUE;
+    bool use_resize = TRUE;
 #endif
 
-    while ((i = getopt(argc, argv, "n:rtT:")) != EOF) {
+    while ((i = getopt(argc, argv, "n:rtT:u")) != EOF) {
        switch (i) {
        case 'n':
            if ((MAXLINES = atoi(optarg)) < 1)
@@ -136,6 +217,9 @@ bool        use_resize = TRUE;
            trace(TRACE_CALLS);
            break;
 #endif
+       case 'u':
+           utf8_mode = TRUE;
+           break;
        default:
            usage();
        }
@@ -143,7 +227,7 @@ bool        use_resize = TRUE;
     if (optind + 1 != argc)
        usage();
 
-    if ((lines = (char **)calloc(MAXLINES+2, sizeof(*lines))) == 0)
+    if ((lines = typeMalloc(chtype *, MAXLINES + 2)) == 0)
        usage();
 
     fname = argv[optind];
@@ -152,16 +236,16 @@ bool        use_resize = TRUE;
        return EXIT_FAILURE;
     }
 
-    (void) signal(SIGINT, finish);      /* arrange interrupts to terminate */
+    (void) signal(SIGINT, finish);     /* arrange interrupts to terminate */
 #if CAN_RESIZE
     if (use_resize)
-       (void) signal(SIGWINCH, adjust); /* arrange interrupts to resize */
+       (void) signal(SIGWINCH, adjust);        /* arrange interrupts to resize */
 #endif
 
     /* slurp the file */
     for (lptr = &lines[0]; (lptr - lines) < MAXLINES; lptr++) {
        char temp[BUFSIZ], *s, *d;
-       int  col;
+       int col;
 
        if (fgets(buf, sizeof(buf), fp) == 0)
            break;
@@ -173,9 +257,9 @@ bool        use_resize = TRUE;
                break;
            } else if (*d == '\t') {
                col = (col | 7) + 1;
-               while ((d-temp) != col)
+               while ((d - temp) != col)
                    *d++ = ' ';
-           } else if (isprint(*d)) {
+           } else if (isprint(*d) || utf8_mode) {
                col++;
                d++;
            } else {
@@ -184,17 +268,17 @@ bool        use_resize = TRUE;
                col = (d - temp);
            }
        }
-       *lptr = strdup(temp);
+       *lptr = ch_dup(temp);
     }
     (void) fclose(fp);
     length = lptr - lines;
 
-    (void) initscr();      /* initialize the curses library */
-    keypad(stdscr, TRUE);  /* enable keyboard mapping */
-    (void) nonl();         /* tell curses not to do NL->CR/NL on output */
-    (void) cbreak();       /* take input chars one at a time, no wait for \n */
-    (void) noecho();       /* don't echo input */
-    idlok(stdscr, TRUE);   /* allow use of insert/delete line */
+    (void) initscr();          /* initialize the curses library */
+    keypad(stdscr, TRUE);      /* enable keyboard mapping */
+    (void) nonl();             /* tell curses not to do NL->CR/NL on output */
+    (void) cbreak();           /* take input chars one at a time, no wait for \n */
+    (void) noecho();           /* don't echo input */
+    idlok(stdscr, TRUE);       /* allow use of insert/delete line */
 
     lptr = lines;
     while (!done) {
@@ -205,7 +289,7 @@ bool        use_resize = TRUE;
 
        got_number = FALSE;
        n = 0;
-        for (;;) {
+       for (;;) {
 #if CAN_RESIZE
            if (interrupted)
                adjust(0);
@@ -215,20 +299,19 @@ bool        use_resize = TRUE;
            waiting = FALSE;
            if ((c < 127) && isdigit(c)) {
                if (!got_number) {
-                   mvprintw(0,0, "Count: ");
+                   mvprintw(0, 0, "Count: ");
                    clrtoeol();
                }
                addch(c);
                n = 10 * n + (c - '0');
                got_number = TRUE;
-           }
-           else
+           } else
                break;
        }
        if (!got_number && n == 0)
            n = 1;
 
-       switch(c) {
+       switch (c) {
        case KEY_DOWN:
        case 'n':
            olptr = lptr;
@@ -282,7 +365,7 @@ bool        use_resize = TRUE;
            break;
 
 #ifdef KEY_RESIZE
-       case KEY_RESIZE:        /* ignore this; ncurses will repaint */
+       case KEY_RESIZE:        /* ignore this; ncurses will repaint */
            break;
 #endif
 #if CAN_RESIZE
@@ -297,7 +380,8 @@ bool        use_resize = TRUE;
     finish(0);                 /* we're done */
 }
 
-static RETSIGTYPE finish(int sig)
+static RETSIGTYPE
+finish(int sig)
 {
     endwin();
     exit(sig != 0 ? EXIT_FAILURE : EXIT_SUCCESS);
@@ -309,54 +393,55 @@ static RETSIGTYPE finish(int sig)
  * Linux.  The 'wrefresh(curscr)' is needed to force the refresh to start from
  * the top of the screen -- some xterms mangle the bitmap while resizing.
  */
-static RETSIGTYPE adjust(int sig)
+static RETSIGTYPE
+adjust(int sig)
 {
-       if (waiting || sig == 0) {
+    if (waiting || sig == 0) {
        struct winsize size;
 
-               if (ioctl(fileno(stdout), TIOCGWINSZ, &size) == 0) {
-                       resizeterm(size.ws_row, size.ws_col);
-                       wrefresh(curscr);       /* Linux needs this */
-                       show_all();
-               }
-               interrupted = FALSE;
-       } else {
-               interrupted = TRUE;
+       if (ioctl(fileno(stdout), TIOCGWINSZ, &size) == 0) {
+           resizeterm(size.ws_row, size.ws_col);
+           wrefresh(curscr);   /* Linux needs this */
+           show_all();
        }
-       (void) signal(SIGWINCH, adjust);        /* some systems need this */
+       interrupted = FALSE;
+    } else {
+       interrupted = TRUE;
+    }
+    (void) signal(SIGWINCH, adjust);   /* some systems need this */
 }
-#endif /* CAN_RESIZE */
+#endif /* CAN_RESIZE */
 
-static void show_all(void)
+static void
+show_all(void)
 {
-       int i;
-       char temp[BUFSIZ];
-       char *s;
+    int i;
+    char temp[BUFSIZ];
+    chtype *s;
 
 #if CAN_RESIZE
-       sprintf(temp, "(%3dx%3d) col %d ", LINES, COLS, shift);
-       i = strlen(temp);
-       sprintf(temp+i, "view %.*s", (int)(sizeof(temp)-7-i), fname);
+    sprintf(temp, "(%3dx%3d) col %d ", LINES, COLS, shift);
+    i = strlen(temp);
+    sprintf(temp + i, "view %.*s", (int) (sizeof(temp) - 7 - i), fname);
 #else
-       sprintf(temp, "view %.*s", (int)sizeof(temp)-7, fname);
+    sprintf(temp, "view %.*s", (int) sizeof(temp) - 7, fname);
 #endif
-       move(0,0);
-       printw("%.*s", COLS, temp);
+    move(0, 0);
+    printw("%.*s", COLS, temp);
+    clrtoeol();
+
+    scrollok(stdscr, FALSE);   /* prevent screen from moving */
+    for (i = 1; i < LINES; i++) {
+       move(i, 0);
+       printw("%3d:", (lptr + i - lines));
        clrtoeol();
-
-       scrollok(stdscr, FALSE); /* prevent screen from moving */
-       for (i = 1; i < LINES; i++) {
-           move(i, 0);
-           if ((s = lptr[i-1]) != 0 && (int)strlen(s) > shift)
-               printw("%3ld:%.*s", (long) (lptr+i-lines), COLS-4, s + shift);
-           else
-               printw("%3ld:", (long) (lptr+i-lines));
-           clrtoeol();
+       if ((s = lptr[i - 1]) != 0) {
+           int len = ch_len(s);
+           if (len > shift)
+               addchstr(s + shift);
        }
-       setscrreg(1, LINES-1);
-       scrollok(stdscr, TRUE);
-       refresh();
+    }
+    setscrreg(1, LINES - 1);
+    scrollok(stdscr, TRUE);
+    refresh();
 }
-
-/* view.c ends here */
-
index 5f0ab5dc4a5abbcadf329330c65e80b6f772eaf3..43a898f84d13602c57b337518811216a5b4825c0 100644 (file)
@@ -34,16 +34,13 @@ 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.26 1999/10/23 01:31:40 tom Exp $
+  $Id: worm.c,v 1.30 2000/04/15 17:51:56 tom Exp $
 */
 
 #include <test.priv.h>
 
 #include <signal.h>
 
-#define typeAlloc(type,n) (type *) malloc(n * sizeof(type))
-#define typeRealloc(type,n,p) (type *) realloc(p, n * sizeof(type))
-
 static chtype flavor[] =
 {
     'O', '*', '#', '$', '%', '0', '@',
@@ -185,7 +182,6 @@ main(int argc, char *argv[])
     short **ref;
     int x, y;
     int n;
-    int ch;
     struct worm *w;
     const struct options *op;
     int h;
@@ -255,7 +251,7 @@ main(int argc, char *argv[])
     if (has_colors()) {
        int bg = COLOR_BLACK;
        start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
        if (use_default_colors() == OK)
            bg = -1;
 #endif
@@ -274,9 +270,9 @@ main(int argc, char *argv[])
     }
 #endif /* A_COLOR */
 
-    ref = typeAlloc(short *, LINES);
+    ref = typeMalloc(short *, LINES);
     for (y = 0; y < LINES; y++) {
-       ref[y] = typeAlloc(short, COLS);
+       ref[y] = typeMalloc(short, COLS);
        for (x = 0; x < COLS; x++) {
            ref[y][x] = 0;
        }
@@ -289,14 +285,14 @@ main(int argc, char *argv[])
 
     for (n = number, w = &worm[0]; --n >= 0; w++) {
        w->orientation = w->head = 0;
-       if (!(ip = typeAlloc(short, (length + 1)))) {
+       if (!(ip = typeMalloc(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)))) {
+       if (!(ip = typeMalloc(short, (length + 1)))) {
            fprintf(stderr, "%s: out of memory\n", *argv);
            return EXIT_FAILURE;
        }
@@ -338,6 +334,8 @@ main(int argc, char *argv[])
            generation++;
        }
 #else
+       int ch;
+
        if ((ch = getch()) > 0) {
 #ifdef KEY_RESIZE
            if (ch == KEY_RESIZE) {
@@ -350,11 +348,11 @@ main(int argc, char *argv[])
                    last = COLS - 1;
                }
                if (bottom != LINES - 1) {
-                   ref = typeRealloc(short *, LINES, ref);
-                   for (y = COLS; y <= bottom; y++)
+                   for (y = LINES; y <= bottom; y++)
                        free(ref[y]);
+                   ref = typeRealloc(short *, LINES, ref);
                    for (y = bottom + 1; y < LINES; y++) {
-                       ref[y] = typeAlloc(short, COLS);
+                       ref[y] = typeMalloc(short, COLS);
                        for (x = 0; x < COLS; x++)
                            ref[y][x] = 0;
                    }
index 3923c771d97a109fe813daa21f57d051ac146edb..57d42923000cf24d8a53bc99826b98af11984b14 100644 (file)
@@ -92,7 +92,7 @@
 /******************************************************************************/
 
 /*
- * $Id: xmas.c,v 1.12 1998/01/18 01:13:47 tom Exp $
+ * $Id: xmas.c,v 1.13 1999/11/13 23:39:01 tom Exp $
  */
 #include <test.priv.h>
 
@@ -183,7 +183,7 @@ int loopy;
 #endif
        if (has_colors()) {
                start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
                if (use_default_colors() == OK)
                        my_bg = -1;
 #endif